comparison src/ButtonPanel.java @ 0:30bb7074acb1

upload all file of tighVNCProxy
author e085711
date Tue, 12 Apr 2011 12:58:05 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:30bb7074acb1
1 //
2 // Copyright (C) 2001,2002 HorizonLive.com, Inc. All Rights Reserved.
3 // Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
4 //
5 // This is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //
10 // This software is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this software; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
18 // USA.
19 //
20
21 //
22 // ButtonPanel class implements panel with four buttons in the
23 // VNCViewer desktop window.
24 //
25
26 import java.awt.*;
27 import java.awt.event.*;
28 import java.io.*;
29
30 class ButtonPanel extends Panel implements ActionListener {
31
32 VncViewer viewer;
33 Button disconnectButton;
34 Button optionsButton;
35 Button recordButton;
36 Button clipboardButton;
37 Button ctrlAltDelButton;
38 Button refreshButton;
39
40 ButtonPanel(VncViewer v) {
41 viewer = v;
42
43 setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
44 disconnectButton = new Button("Disconnect");
45 disconnectButton.setEnabled(false);
46 add(disconnectButton);
47 disconnectButton.addActionListener(this);
48 optionsButton = new Button("Options");
49 add(optionsButton);
50 optionsButton.addActionListener(this);
51 clipboardButton = new Button("Clipboard");
52 clipboardButton.setEnabled(false);
53 add(clipboardButton);
54 clipboardButton.addActionListener(this);
55 if (viewer.rec != null) {
56 recordButton = new Button("Record");
57 add(recordButton);
58 recordButton.addActionListener(this);
59 }
60 ctrlAltDelButton = new Button("Send Ctrl-Alt-Del");
61 ctrlAltDelButton.setEnabled(false);
62 add(ctrlAltDelButton);
63 ctrlAltDelButton.addActionListener(this);
64 refreshButton = new Button("Refresh");
65 refreshButton.setEnabled(false);
66 add(refreshButton);
67 refreshButton.addActionListener(this);
68 }
69
70 //
71 // Enable buttons on successful connection.
72 //
73
74 public void enableButtons() {
75 disconnectButton.setEnabled(true);
76 clipboardButton.setEnabled(true);
77 refreshButton.setEnabled(true);
78 }
79
80 //
81 // Disable all buttons on disconnect.
82 //
83
84 public void disableButtonsOnDisconnect() {
85 remove(disconnectButton);
86 disconnectButton = new Button("Hide desktop");
87 disconnectButton.setEnabled(true);
88 add(disconnectButton, 0);
89 disconnectButton.addActionListener(this);
90
91 optionsButton.setEnabled(false);
92 clipboardButton.setEnabled(false);
93 ctrlAltDelButton.setEnabled(false);
94 refreshButton.setEnabled(false);
95
96 validate();
97 }
98
99 //
100 // Enable/disable controls that should not be available in view-only
101 // mode.
102 //
103
104 public void enableRemoteAccessControls(boolean enable) {
105 ctrlAltDelButton.setEnabled(enable);
106 }
107
108 //
109 // Event processing.
110 //
111
112 public void actionPerformed(ActionEvent evt) {
113
114 viewer.moveFocusToDesktop();
115
116 if (evt.getSource() == disconnectButton) {
117 viewer.disconnect();
118
119 } else if (evt.getSource() == optionsButton) {
120 viewer.options.setVisible(!viewer.options.isVisible());
121
122 } else if (evt.getSource() == recordButton) {
123 viewer.rec.setVisible(!viewer.rec.isVisible());
124
125 } else if (evt.getSource() == clipboardButton) {
126 viewer.clipboard.setVisible(!viewer.clipboard.isVisible());
127
128 } else if (evt.getSource() == ctrlAltDelButton) {
129 try {
130 final int modifiers = InputEvent.CTRL_MASK | InputEvent.ALT_MASK;
131
132 KeyEvent ctrlAltDelEvent =
133 new KeyEvent(this, KeyEvent.KEY_PRESSED, 0, modifiers, 127);
134 viewer.rfb.writeKeyEvent(ctrlAltDelEvent);
135
136 ctrlAltDelEvent =
137 new KeyEvent(this, KeyEvent.KEY_RELEASED, 0, modifiers, 127);
138 viewer.rfb.writeKeyEvent(ctrlAltDelEvent);
139
140 } catch (IOException e) {
141 e.printStackTrace();
142 }
143 } else if (evt.getSource() == refreshButton) {
144 try {
145 RfbProto rfb = viewer.rfb;
146 rfb.writeFramebufferUpdateRequest(0, 0, rfb.framebufferWidth,
147 rfb.framebufferHeight, false);
148 } catch (IOException e) {
149 e.printStackTrace();
150 }
151 }
152 }
153 }
154