pack();
}
- public void initDialog() {
- textArea.setText(current);
- textArea.selectAll();
- }
-
public void setContents(String str) {
- current = str;
textArea.setText(str);
- textArea.selectAll();
+ }
+
+ public String getContents() {
+ return textArea.getText();
}
public void serverCutText(String str, int len) {
if (cb != null) {
StringSelection ss = new StringSelection(str);
try {
- cb.setContents(ss, ss);
+ cb.setContents(ss, null);
} catch(Exception e) {
- vlog.debug(e.toString());
+ vlog.debug(e.getMessage());
}
}
} catch(SecurityException e) {
- System.err.println("Cannot access the system clipboard");
+ vlog.debug("Cannot access the system clipboard: "+e.getMessage());
}
}
public void actionPerformed(ActionEvent e) {
Object s = e.getSource();
if (s instanceof JButton && (JButton)s == clearButton) {
- current = "";
- textArea.setText(current);
+ serverCutText(new String(""), 0);
} else if (s instanceof JButton && (JButton)s == sendButton) {
- current = textArea.getText();
- cc.writeClientCutText(current, current.length());
+ cc.writeClientCutText(textArea.getText(), textArea.getText().length());
endDialog();
} else if (s instanceof JButton && (JButton)s == cancelButton) {
endDialog();
}
CConn cc;
- String current;
JTextArea textArea;
JButton clearButton, sendButton, cancelButton;
static LogWriter vlog = new LogWriter("ClipboardDialog");
g2.dispose();
}
- String oldContents = "";
-
public synchronized void checkClipboard() {
SecurityManager sm = System.getSecurityManager();
try {
if (sm != null) sm.checkSystemClipboardAccess();
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
- if (cb != null && cc.viewer.sendClipboard.getValue()) {
- Transferable t = cb.getContents(null);
- if ((t != null) && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
- try {
- String newContents = (String)t.getTransferData(DataFlavor.stringFlavor);
- if (newContents != null && !newContents.equals(oldContents)) {
+ if (cb == null) return;
+ Transferable t = cb.getContents(null);
+ if ((t != null) && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
+ try {
+ String newContents = new String("");
+ if (t.getTransferData(DataFlavor.stringFlavor) != null) {
+ int len = Math.min(cc.viewer.maxCutText.getValue(),
+ ((String)t.getTransferData(DataFlavor.stringFlavor)).length());
+ newContents =
+ ((String)t.getTransferData(DataFlavor.stringFlavor)).substring(0, len);
+ }
+ if (!newContents.equals(cc.clipboardDialog.getContents())) {
+ if (cc.viewer.sendClipboard.getValue())
cc.writeClientCutText(newContents, newContents.length());
- oldContents = newContents;
- cc.clipboardDialog.setContents(newContents);
- }
- } catch(java.lang.Exception e) {
- System.out.println("Exception getting clipboard data: " + e.getMessage());
+ cc.clipboardDialog.setContents(newContents);
}
+ } catch(java.lang.Exception e) {
+ vlog.debug("Exception getting clipboard data: " + e.getMessage());
}
}
} catch(SecurityException e) {
- System.err.println("Cannot access the system clipboard");
+ vlog.debug("Cannot access the system clipboard");
}
}
= new BoolParameter("SendClipboard",
"Send clipboard changes to the server",
true);
+ IntParameter maxCutText
+ = new IntParameter("MaxCutText",
+ "Maximum permitted length of an outgoing clipboard update",
+ 262144);
StringParameter menuKey
= new StringParameter("MenuKey",
"The key which brings up the popup menu",