Re: JEditorPane question
On 12/09/2014 10:41 PM, Jeff Higgins wrote:
Huh.
Contents disappear from the system (OS)
clipboard when I exit the application. :(
Damn.
SWT gets this simple thing right!
Close the Display and my selection is
still in the system clipboard.
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.RTFTransfer;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class bb {
public static void main(String[] args) {
Display display = new Display();
final Clipboard cb = new Clipboard(display);
Shell shell = new Shell(display);
final Text text = new Text(shell, SWT.BORDER | SWT.MULTI);
text.setBounds(10, 10, 300, 300);
Button button = new Button(shell, SWT.PUSH);
button.setText("Copy");
button.setBounds(320, 10, 100, 40);
button.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
String textData = text.getSelectionText();
if (textData == null)
return;
// to show the rtf formatting, make the text bold and italic
String rtfData = "{\\rtf1\\b\\i " + textData + "}";
TextTransfer textTransfer = TextTransfer.getInstance();
RTFTransfer rtfTransfer = RTFTransfer.getInstance();
Transfer[] types = new Transfer[] { textTransfer, rtfTransfer };
cb.setContents(new Object[] { textData, rtfData }, types);
}
});
button = new Button(shell, SWT.PUSH);
button.setText("Paste");
button.setBounds(320, 60, 100, 40);
button.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
TextTransfer transfer = TextTransfer.getInstance();
String data = (String) cb.getContents(transfer);
if (data == null)
return;
text.insert(data);
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
cb.dispose();
display.dispose();
}
}