aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/tigervnc/vncviewer/ClipboardFrame.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/tigervnc/vncviewer/ClipboardFrame.java')
-rw-r--r--java/src/com/tigervnc/vncviewer/ClipboardFrame.java135
1 files changed, 135 insertions, 0 deletions
diff --git a/java/src/com/tigervnc/vncviewer/ClipboardFrame.java b/java/src/com/tigervnc/vncviewer/ClipboardFrame.java
new file mode 100644
index 00000000..2b11eb89
--- /dev/null
+++ b/java/src/com/tigervnc/vncviewer/ClipboardFrame.java
@@ -0,0 +1,135 @@
+//
+// Copyright (C) 2001 HorizonLive.com, Inc. All Rights Reserved.
+// Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
+//
+// This is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This software is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this software; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+//
+
+//
+// Clipboard frame.
+//
+
+package com.tightvnc.vncviewer;
+
+import java.awt.*;
+import java.awt.event.*;
+
+class ClipboardFrame extends Frame
+ implements WindowListener, ActionListener {
+
+ TextArea textArea;
+ Button clearButton, closeButton;
+ String selection;
+ VncViewer viewer;
+
+ //
+ // Constructor.
+ //
+
+ ClipboardFrame(VncViewer v) {
+ super("TigerVNC Clipboard");
+
+ viewer = v;
+
+ GridBagLayout gridbag = new GridBagLayout();
+ setLayout(gridbag);
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.gridwidth = GridBagConstraints.REMAINDER;
+ gbc.fill = GridBagConstraints.BOTH;
+ gbc.weighty = 1.0;
+
+ textArea = new TextArea(5, 40);
+ gridbag.setConstraints(textArea, gbc);
+ add(textArea);
+
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ gbc.weightx = 1.0;
+ gbc.weighty = 0.0;
+ gbc.gridwidth = 1;
+
+ clearButton = new Button("Clear");
+ gridbag.setConstraints(clearButton, gbc);
+ add(clearButton);
+ clearButton.addActionListener(this);
+
+ closeButton = new Button("Close");
+ gridbag.setConstraints(closeButton, gbc);
+ add(closeButton);
+ closeButton.addActionListener(this);
+
+ pack();
+
+ addWindowListener(this);
+ }
+
+
+ //
+ // Set the cut text from the RFB server.
+ //
+
+ void setCutText(String text) {
+ selection = text;
+ textArea.setText(text);
+ if (isVisible()) {
+ textArea.selectAll();
+ }
+ }
+
+
+ //
+ // When the focus leaves the window, see if we have new cut text and
+ // if so send it to the RFB server.
+ //
+
+ public void windowDeactivated (WindowEvent evt) {
+ if (selection != null && !selection.equals(textArea.getText())) {
+ selection = textArea.getText();
+ viewer.setCutText(selection);
+ }
+ }
+
+ //
+ // Close our window properly.
+ //
+
+ public void windowClosing(WindowEvent evt) {
+ setVisible(false);
+ }
+
+ //
+ // Ignore window events we're not interested in.
+ //
+
+ public void windowActivated(WindowEvent evt) {}
+ public void windowOpened(WindowEvent evt) {}
+ public void windowClosed(WindowEvent evt) {}
+ public void windowIconified(WindowEvent evt) {}
+ public void windowDeiconified(WindowEvent evt) {}
+
+
+ //
+ // Respond to button presses
+ //
+
+ public void actionPerformed(ActionEvent evt) {
+ if (evt.getSource() == clearButton) {
+ textArea.setText("");
+ } else if (evt.getSource() == closeButton) {
+ setVisible(false);
+ }
+ }
+}