Mercurial > hg > Members > nobuyasu > tightVNCProxy
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 |