Mercurial > hg > Members > riono > TreeVNC_ja_comment
annotate src/viewer_swing/java/com/glavsoft/viewer/CuiViewer.java @ 383:7d55adebcacb
impliment changeDirectConnectedWithSocket
author | kkb |
---|---|
date | Fri, 04 Sep 2015 17:10:53 +0900 |
parents | ea324e42bc78 |
children | 704ac9e79e25 |
rev | line source |
---|---|
65 | 1 package com.glavsoft.viewer; |
2 | |
3 import com.glavsoft.rfb.protocol.ProtocolSettings; | |
383 | 4 import com.glavsoft.transport.Reader; |
5 import com.glavsoft.transport.Writer; | |
65 | 6 import com.glavsoft.viewer.cli.Parser; |
7 import com.glavsoft.viewer.swing.ConnectionParams; | |
8 import com.glavsoft.viewer.swing.ParametersHandler; | |
9 import com.glavsoft.viewer.swing.SwingConnectionWorkerFactory; | |
130 | 10 |
65 | 11 import javax.swing.*; |
130 | 12 |
65 | 13 import java.awt.*; |
14 import java.awt.event.WindowEvent; | |
15 import java.awt.event.WindowListener; | |
16 import java.io.IOException; | |
17 import java.io.InputStream; | |
18 import java.net.Socket; | |
19 import java.util.jar.Attributes; | |
20 import java.util.jar.Manifest; | |
21 import java.util.logging.*; | |
22 | |
23 import jp.ac.u_ryukyu.treevnc.CreateConnectionParam; | |
207 | 24 import jp.ac.u_ryukyu.treevnc.TreeRFBProto; |
65 | 25 |
153 | 26 public class CuiViewer implements Runnable, WindowListener, ViewerInterface { |
65 | 27 |
240 | 28 private Logger logger; |
29 private int paramsMask; | |
30 private boolean allowAppletInteractiveConnections; | |
65 | 31 |
240 | 32 public final ConnectionParams connectionParams; |
33 protected String passwordFromParams; | |
34 boolean isSeparateFrame = true; | |
35 protected boolean isApplet = true; | |
36 private final ProtocolSettings settings; | |
37 protected UiSettings uiSettings; | |
38 private ConnectionPresenter connectionPresenter; | |
39 protected TreeRFBProto myRfb; | |
40 private boolean cuiVersion; | |
204
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
202
diff
changeset
|
41 private boolean showTree = false; |
225 | 42 public int width; |
240 | 43 public int height; |
65 | 44 |
240 | 45 public static void main(String[] args) { |
46 Parser parser = new Parser(); | |
47 ParametersHandler.completeParserOptions(parser); | |
65 | 48 |
240 | 49 parser.parse(args); |
50 if (parser.isSet(ParametersHandler.ARG_HELP)) { | |
51 printUsage(parser.optionsUsage()); | |
52 System.exit(0); | |
53 } | |
54 CuiViewer viewer = new CuiViewer(parser); | |
55 SwingUtilities.invokeLater(viewer); | |
56 } | |
65 | 57 |
240 | 58 public static void printUsage(String additional) { |
59 System.out | |
300 | 60 .println("Usage: java -jar (progfilename) [hostname [port_number]] [Options]?n" |
61 + " or?n" | |
62 + " java -jar (progfilename) [Options]?n" | |
63 + " or?n java -jar (progfilename) -help?n to view this help?n?n" | |
64 + "Where Options are:?n" | |
65 + additional | |
66 + "?nOptions format: -optionName=optionValue. Ex. -host=localhost -port=5900 -viewonly=yes?n" | |
67 + "Both option name and option value are case insensitive."); | |
240 | 68 } |
65 | 69 |
240 | 70 public CuiViewer() { |
71 logger = Logger.getLogger(getClass().getName()); | |
72 connectionParams = new ConnectionParams(); | |
73 settings = ProtocolSettings.getDefaultSettings(); | |
74 uiSettings = new UiSettings(); | |
75 } | |
65 | 76 |
240 | 77 private CuiViewer(Parser parser) { |
78 this(); | |
79 setLoggingLevel(parser.isSet(ParametersHandler.ARG_VERBOSE) ? Level.FINE | |
80 : parser.isSet(ParametersHandler.ARG_VERBOSE_MORE) ? Level.FINER | |
300 | 81 : Level.INFO); |
65 | 82 |
240 | 83 paramsMask = ParametersHandler.completeSettingsFromCLI(parser, |
84 connectionParams, settings, uiSettings); | |
85 passwordFromParams = parser.getValueFor(ParametersHandler.ARG_PASSWORD); | |
86 logger.info("TightVNC Viewer version " + ver()); | |
87 isApplet = false; | |
88 } | |
65 | 89 |
240 | 90 private void setLoggingLevel(Level levelToSet) { |
91 final Logger appLogger = Logger.getLogger("com.glavsoft"); | |
92 appLogger.setLevel(levelToSet); | |
93 ConsoleHandler ch = null; | |
94 for (Handler h : appLogger.getHandlers()) { | |
95 if (h instanceof ConsoleHandler) { | |
96 ch = (ConsoleHandler) h; | |
97 break; | |
98 } | |
99 } | |
100 if (null == ch) { | |
101 ch = new ConsoleHandler(); | |
102 appLogger.addHandler(ch); | |
103 } | |
104 // ch.setFormatter(new SimpleFormatter()); | |
105 ch.setLevel(levelToSet); | |
106 } | |
65 | 107 |
240 | 108 @Override |
109 public void windowClosing(WindowEvent e) { | |
110 if (e != null && e.getComponent() != null) { | |
111 final Window w = e.getWindow(); | |
112 if (w != null) { | |
113 w.setVisible(false); | |
114 w.dispose(); | |
115 } | |
116 } | |
117 closeApp(); | |
118 } | |
65 | 119 |
240 | 120 /** |
121 * Closes App(lication) or stops App(let). | |
122 */ | |
123 public void closeApp() { | |
124 /* nop */ | |
125 } | |
65 | 126 |
240 | 127 private boolean checkJsch() { |
128 try { | |
129 Class.forName("com.jcraft.jsch.JSch"); | |
130 return true; | |
131 } catch (ClassNotFoundException e) { | |
132 return false; | |
133 } | |
134 } | |
65 | 135 |
240 | 136 @Override |
137 public void run() { | |
138 final boolean hasJsch = checkJsch(); | |
139 final boolean allowInteractive = allowAppletInteractiveConnections | |
140 || !isApplet; | |
363 | 141 ConnectionPresenter connectionPresenter = new ConnectionPresenter(hasJsch, allowInteractive); |
240 | 142 connectionPresenter.addModel("ConnectionParamsModel", connectionParams); |
65 | 143 connectionPresenter.setConnectionWorkerFactory( |
144 new SwingConnectionWorkerFactory(null, passwordFromParams, connectionPresenter, null, myRfb)); | |
240 | 145 connectionPresenter.setCuiVersion(true); |
383 | 146 connectionPresenter.startConnection(settings, uiSettings, paramsMask, false); |
240 | 147 } |
65 | 148 |
240 | 149 @Override |
370 | 150 public ConnectionPresenter getConnectionPresenter() { |
151 return connectionPresenter; | |
363 | 152 } |
153 | |
154 @Override | |
370 | 155 public void setConnectionPresenter(ConnectionPresenter connectionPresenter) { |
156 this.connectionPresenter = connectionPresenter; | |
369 | 157 } |
158 | |
159 @Override | |
383 | 160 public void changeToDirectConnectedServer(String hostName, Reader is, Writer os) { |
161 | |
162 } | |
163 | |
164 @Override | |
240 | 165 public void windowOpened(WindowEvent e) { /* nop */ |
166 } | |
65 | 167 |
240 | 168 @Override |
169 public void windowClosed(WindowEvent e) { /* nop */ | |
170 } | |
65 | 171 |
240 | 172 @Override |
173 public void windowIconified(WindowEvent e) { /* nop */ | |
174 } | |
65 | 175 |
240 | 176 @Override |
177 public void windowDeiconified(WindowEvent e) { /* nop */ | |
178 } | |
65 | 179 |
240 | 180 @Override |
181 public void windowActivated(WindowEvent e) { /* nop */ | |
182 } | |
65 | 183 |
240 | 184 @Override |
185 public void windowDeactivated(WindowEvent e) { /* nop */ | |
186 } | |
65 | 187 |
240 | 188 public static String ver() { |
189 final InputStream mfStream = Viewer.class.getClassLoader() | |
190 .getResourceAsStream("META-INF/MANIFEST.MF"); | |
191 if (null == mfStream) { | |
192 System.out.println("No Manifest file found."); | |
193 return "-1"; | |
194 } | |
195 try { | |
196 Manifest mf = new Manifest(); | |
197 mf.read(mfStream); | |
198 Attributes atts = mf.getMainAttributes(); | |
199 return atts.getValue(Attributes.Name.IMPLEMENTATION_VERSION); | |
200 } catch (IOException e) { | |
201 return "-2"; | |
202 } | |
203 } | |
65 | 204 |
240 | 205 public void setSocket(Socket soc) { |
206 connectionParams.setConnectionParam(soc.getInetAddress().getHostAddress(), soc.getPort()); | |
207 } | |
65 | 208 |
240 | 209 public void setOpenPort(int parseInt) { |
210 } | |
65 | 211 |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
327
diff
changeset
|
212 public void setTerminationType(boolean b) { |
240 | 213 myRfb.setTerminationType(b); |
214 } | |
65 | 215 |
379 | 216 public void startTreeViewer(String hostName, boolean cui, boolean addSerialNum) { |
240 | 217 CuiViewer viewer = new CuiViewer(); |
218 viewer.cuiVersion = cui; | |
327
293c35aa902b
add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents:
317
diff
changeset
|
219 TreeRFBProto rfb = new TreeRFBProto(false, this); |
240 | 220 CreateConnectionParam cp = new CreateConnectionParam(rfb); |
300 | 221 if (hostName==null) { |
327
293c35aa902b
add error message, add assure stream close, delete firstTime value in TreeRFBProto.
oc
parents:
317
diff
changeset
|
222 cp.findTreeVncRoot(); |
240 | 223 } else { |
224 cp.setHostName(hostName); | |
225 } | |
226 rfb.createConnectionAndStart(this); | |
227 cp.sendWhereToConnect(viewer); | |
228 rfb.setCuiVersion(cui); | |
229 viewer.myRfb = rfb; | |
230 SwingUtilities.invokeLater(viewer); | |
231 } | |
65 | 232 |
240 | 233 public void setIsTreeVNC(boolean flag) { |
234 } | |
65 | 235 |
240 | 236 public TreeRFBProto getRfb() { |
237 return myRfb; | |
238 } | |
65 | 239 |
240 | 240 public boolean getCuiVersion() { |
241 return cuiVersion; | |
242 } | |
243 | |
244 public void setCuiVersion(boolean flag) { | |
245 // nop | |
246 } | |
130 | 247 |
248 @Override | |
174 | 249 public void connectToParenet(int port, String hostname) throws IOException { |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
327
diff
changeset
|
250 setTerminationType(false); |
174 | 251 closeApp(); |
179 | 252 connectionParams.setConnectionParam(hostname, port); |
174 | 253 run(); |
254 } | |
255 | |
256 @Override | |
369 | 257 public void inhelitClients(ViewerInterface vncProxyService, String hostName, short newVNCServerId) { |
240 | 258 |
174 | 259 } |
260 | |
261 @Override | |
377 | 262 public void proxyStart(String[] args, String hostName, int width, int height, boolean showTree, boolean checkDelay, boolean addSerialNum, boolean fixingSize, boolean filterSingleDisplay) { |
240 | 263 |
174 | 264 } |
265 | |
176 | 266 @Override |
267 public void setNoConnection(boolean noConnection) { | |
240 | 268 |
176 | 269 } |
270 | |
240 | 271 @Override |
272 public void setVisible(boolean b) { | |
273 } | |
192 | 274 |
240 | 275 @Override |
276 public Socket getVNCSocket() { | |
277 return connectionPresenter.getSocket(); | |
278 } | |
202 | 279 |
204
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
202
diff
changeset
|
280 @Override |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
202
diff
changeset
|
281 public boolean getShowTree() { |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
202
diff
changeset
|
282 return showTree; |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
202
diff
changeset
|
283 } |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
202
diff
changeset
|
284 |
225 | 285 @Override |
286 public void setWidth(int w) { | |
240 | 287 width = w; |
225 | 288 } |
289 | |
290 @Override | |
291 public void setHeight(int h) { | |
300 | 292 height = h; |
257 | 293 } |
294 | |
295 @Override | |
296 public void setFixingSize(int width, int height) { | |
297 } | |
301 | 298 |
299 @Override | |
300 public java.util.ArrayList<Rectangle> getScreenRectangles() { | |
301 return null; | |
302 } | |
317 | 303 |
304 @Override | |
305 public void setFitScreen() { | |
306 // TODO Auto-generated method stub | |
307 | |
308 } | |
65 | 309 } |