Mercurial > hg > Applications > TreeVNC
annotate src/viewer_swing/java/com/glavsoft/viewer/Viewer.java @ 467:fd803266ade7
Skip error dialog
author | one |
---|---|
date | Mon, 25 Jul 2016 19:09:27 +0900 |
parents | 8d636adb292c |
children | f8a88cdb857b |
rev | line source |
---|---|
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
1 // Copyright (C) 2010, 2011, 2012, 2013 GlavSoft LLC. |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 // All rights reserved. |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 // |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 //------------------------------------------------------------------------- |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 // This file is part of the TightVNC software. Please visit our Web site: |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 // |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 // http://www.tightvnc.com/ |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 // |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 // This program is free software; you can redistribute it and/or modify |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 // it under the terms of the GNU General Public License as published by |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 // the Free Software Foundation; either version 2 of the License, or |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 // (at your option) any later version. |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 // |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 // This program is distributed in the hope that it will be useful, |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 // GNU General Public License for more details. |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 // |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 // You should have received a copy of the GNU General Public License along |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 // with this program; if not, write to the Free Software Foundation, Inc., |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 //------------------------------------------------------------------------- |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 // |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 package com.glavsoft.viewer; |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 import com.glavsoft.rfb.protocol.ProtocolSettings; |
383 | 28 import com.glavsoft.transport.Reader; |
29 import com.glavsoft.transport.Writer; | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 import com.glavsoft.viewer.cli.Parser; |
448
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
31 import com.glavsoft.viewer.swing.ConnectionParams; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
32 import com.glavsoft.viewer.swing.ParametersHandler; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
33 import com.glavsoft.viewer.swing.SwingViewerWindow; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
34 import jp.ac.u_ryukyu.treevnc.CreateConnectionParam; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
35 import jp.ac.u_ryukyu.treevnc.TreeRFBProto; |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 import javax.swing.*; |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 import java.awt.*; |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
39 import java.awt.event.WindowEvent; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
40 import java.awt.event.WindowListener; |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 import java.io.IOException; |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 import java.io.InputStream; |
456
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
43 import java.lang.reflect.Field; |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 import java.net.Socket; |
301 | 45 import java.util.ArrayList; |
458 | 46 import java.util.Comparator; |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 import java.util.jar.Attributes; |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 import java.util.jar.Manifest; |
448
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
49 import java.util.logging.ConsoleHandler; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
50 import java.util.logging.Handler; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
51 import java.util.logging.Level; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
52 import java.util.logging.Logger; |
32 | 53 |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 @SuppressWarnings("serial") |
179 | 55 public class Viewer extends JApplet implements Runnable, WindowListener , ViewerInterface { |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 |
224 | 57 private Logger logger; |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
58 public int paramsMask; |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
59 public boolean allowAppletInteractiveConnections; |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 |
60 | 61 public final ConnectionParams connectionParams; |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
62 public String passwordFromParams; |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
63 public boolean isSeparateFrame = true; |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
64 public boolean isApplet = true; |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
65 public final ProtocolSettings settings; |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
66 public UiSettings uiSettings; |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
67 private volatile boolean isAppletStopped = false; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
68 private ConnectionPresenter connectionPresenter; |
65 | 69 boolean isTreeVNC = false; |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
70 public TreeRFBProto myRfb; |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
71 public boolean noConnection; |
175 | 72 public int vncport = ConnectionParams.DEFAULT_RFB_PORT; |
73 private int fbWidth; | |
224 | 74 private boolean showTree = false; |
225 | 75 public int width; |
76 public int height; | |
257 | 77 public int fixingSizeWidth; |
78 public int fixingSizeHeight; | |
139 | 79 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
80 public static void main(String[] args) { |
224 | 81 Parser parser = new Parser(); |
82 ParametersHandler.completeParserOptions(parser); | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
83 |
224 | 84 parser.parse(args); |
85 if (parser.isSet(ParametersHandler.ARG_HELP)) { | |
86 printUsage(parser.optionsUsage()); | |
87 System.exit(0); | |
88 } | |
89 Viewer viewer = new Viewer(parser); | |
90 SwingUtilities.invokeLater(viewer); | |
91 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
92 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
93 public static void printUsage(String additional) { |
224 | 94 System.out.println("Usage: java -jar (progfilename) [hostname [port_number]] [Options]Â¥n" + |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
95 " or¥n" + |
224 | 96 " java -jar (progfilename) [Options]Â¥n" + |
97 " or¥n java -jar (progfilename) -help¥n to view this help¥n¥n" + | |
98 "Where Options are:Â¥n" + additional + | |
99 "¥nOptions format: -optionName=optionValue. Ex. -host=localhost -port=5900 -viewonly=yes¥n" + | |
100 "Both option name and option value are case insensitive."); | |
101 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
102 |
224 | 103 public Viewer() { |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
104 logger = Logger.getLogger(getClass().getName()); |
224 | 105 connectionParams = new ConnectionParams(); |
106 settings = ProtocolSettings.getDefaultSettings(); | |
107 uiSettings = new UiSettings(); | |
108 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
109 |
224 | 110 private Viewer(Parser parser) { |
111 this(); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
112 setLoggingLevel(parser.isSet(ParametersHandler.ARG_VERBOSE) ? Level.FINE : |
402
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
113 parser.isSet(ParametersHandler.ARG_VERBOSE_MORE) ? Level.FINER : |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
114 Level.INFO); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
115 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
116 paramsMask = ParametersHandler.completeSettingsFromCLI(parser, connectionParams, settings, uiSettings); |
224 | 117 passwordFromParams = parser.getValueFor(ParametersHandler.ARG_PASSWORD); |
118 logger.info("TightVNC Viewer version " + ver()); | |
119 isApplet = false; | |
120 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
121 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
122 private void setLoggingLevel(Level levelToSet) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
123 final Logger appLogger = Logger.getLogger("com.glavsoft"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
124 appLogger.setLevel(levelToSet); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
125 ConsoleHandler ch = null; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
126 for (Handler h : appLogger.getHandlers()) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
127 if (h instanceof ConsoleHandler) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
128 ch = (ConsoleHandler) h; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
129 break; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
130 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
131 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
132 if (null == ch) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
133 ch = new ConsoleHandler(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
134 appLogger.addHandler(ch); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
135 } |
224 | 136 // ch.setFormatter(new SimpleFormatter()); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
137 ch.setLevel(levelToSet); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
138 } |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
139 |
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
140 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
141 @Override |
224 | 142 public void windowClosing(WindowEvent e) { |
143 if (e != null && e.getComponent() != null) { | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
144 final Window w = e.getWindow(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
145 if (w != null) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
146 w.setVisible(false); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
147 w.dispose(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
148 } |
224 | 149 } |
150 closeApp(); | |
151 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
152 |
224 | 153 /** |
154 * Closes App(lication) or stops App(let). | |
155 */ | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
156 public void closeApp() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
157 if (connectionPresenter != null) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
158 connectionPresenter.cancelConnection(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
159 logger.info("Connections cancelled."); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
160 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
161 if (isApplet) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
162 if ( ! isAppletStopped) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
163 logger.severe("Applet is stopped."); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
164 isAppletStopped = true; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
165 repaint(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
166 stop(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
167 } |
224 | 168 } else { |
169 System.exit(0); | |
170 } | |
171 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
172 |
224 | 173 @Override |
174 public void paint(Graphics g) { | |
175 if ( ! isAppletStopped) { | |
176 super.paint(g); | |
177 } else { | |
178 getContentPane().removeAll(); | |
179 g.clearRect(0, 0, getWidth(), getHeight()); | |
180 g.drawString("Disconnected", 10, 20); | |
181 } | |
182 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
183 |
224 | 184 @Override |
185 public void destroy() { | |
186 closeApp(); | |
187 super.destroy(); | |
188 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
189 |
224 | 190 @Override |
191 public void init() { | |
192 paramsMask = ParametersHandler.completeSettingsFromApplet(this, connectionParams, settings, uiSettings); | |
193 isSeparateFrame = ParametersHandler.isSeparateFrame; | |
194 passwordFromParams = getParameter(ParametersHandler.ARG_PASSWORD); | |
195 isApplet = true; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
196 allowAppletInteractiveConnections = ParametersHandler.allowAppletInteractiveConnections; |
224 | 197 repaint(); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
198 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
199 try { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
200 SwingUtilities.invokeAndWait(this); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
201 } catch (Exception e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
202 logger.severe(e.getMessage()); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
203 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
204 } |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
205 |
224 | 206 @Override |
207 public void start() { | |
208 super.start(); | |
209 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
210 |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
211 public boolean checkJsch() { |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
212 try { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
213 Class.forName("com.jcraft.jsch.JSch"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
214 return true; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
215 } catch (ClassNotFoundException e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
216 return false; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
217 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
218 } |
224 | 219 |
85 | 220 public void setNoConnection(boolean c){ |
224 | 221 noConnection = c; |
85 | 222 } |
224 | 223 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
224 @Override |
224 | 225 public void run() { |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
226 final boolean hasJsch = checkJsch(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
227 final boolean allowInteractive = allowAppletInteractiveConnections || ! isApplet; |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
228 connectionPresenter = new ConnectionPresenter(hasJsch, allowInteractive); |
85 | 229 connectionPresenter.setNoConnection(noConnection); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
230 connectionPresenter.addModel("ConnectionParamsModel", connectionParams); |
395
704ac9e79e25
Call startVNCConnectionWithSocket for directedServerChangeReqeust
innparusu
parents:
383
diff
changeset
|
231 connectionPresenter.startVNCConnection(this, false, null, null); |
224 | 232 } |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
233 |
224 | 234 @Override |
370 | 235 public ConnectionPresenter getConnectionPresenter() { |
236 return connectionPresenter; | |
363 | 237 } |
238 | |
239 @Override | |
370 | 240 public void setConnectionPresenter(ConnectionPresenter connectionPresenter) { |
241 this.connectionPresenter = connectionPresenter; | |
369 | 242 } |
243 | |
244 @Override | |
224 | 245 public void windowOpened(WindowEvent e) { /* nop */ } |
246 @Override | |
247 public void windowClosed(WindowEvent e) { /* nop */ } | |
248 @Override | |
249 public void windowIconified(WindowEvent e) { /* nop */ } | |
250 @Override | |
251 public void windowDeiconified(WindowEvent e) { /* nop */ } | |
252 @Override | |
253 public void windowActivated(WindowEvent e) { /* nop */ } | |
254 @Override | |
255 public void windowDeactivated(WindowEvent e) { /* nop */ } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
256 |
224 | 257 public static String ver() { |
258 final InputStream mfStream = Viewer.class.getClassLoader().getResourceAsStream( | |
259 "META-INF/MANIFEST.MF"); | |
260 if (null == mfStream) { | |
261 System.out.println("No Manifest file found."); | |
262 return "-1"; | |
263 } | |
264 try { | |
265 Manifest mf = new Manifest(); | |
266 mf.read(mfStream); | |
267 Attributes atts = mf.getMainAttributes(); | |
268 return atts.getValue(Attributes.Name.IMPLEMENTATION_VERSION); | |
269 } catch (IOException e) { | |
270 return "-2"; | |
271 } | |
272 } | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
273 |
59 | 274 |
224 | 275 public void setSocket(Socket soc) { |
276 connectionParams.setConnectionParam(soc.getInetAddress().getHostAddress(),soc.getPort()); | |
277 } | |
59 | 278 |
224 | 279 public void setOpenPort(int parseInt) { |
280 } | |
59 | 281 |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
327
diff
changeset
|
282 public void setTerminationType(boolean b) { |
224 | 283 myRfb.setTerminationType(b); |
284 } | |
285 | |
286 /** | |
174 | 287 * Start client with new parent (including reconnection) |
288 * @param port | |
289 * @param hostname | |
290 * @throws IOException | |
291 */ | |
224 | 292 @Override |
334 | 293 public void connectToParenet(int port, String hostname) throws IOException { |
328
1a2ab6bd5ba3
add function lost child node, remove deadChild nodeList.
oc
parents:
327
diff
changeset
|
294 setTerminationType(false); |
174 | 295 closeApp(); |
179 | 296 connectionParams.setConnectionParam(hostname, port); |
174 | 297 run(); |
298 } | |
224 | 299 |
300 public void setIsTreeVNC(boolean flag) { | |
301 isTreeVNC = flag; | |
302 } | |
65 | 303 |
224 | 304 public TreeRFBProto getRfb() { |
305 return myRfb; | |
306 } | |
307 | |
308 public boolean getCuiVersion() { | |
309 return myRfb.getCuiVersion(); | |
310 } | |
311 public void setCuiVersion(boolean flag) { | |
312 myRfb.setCuiVersion(flag); | |
313 } | |
314 | |
377 | 315 public void setVncport(int vncport) { |
316 this.vncport = vncport; | |
317 } | |
318 | |
175 | 319 /** |
320 * start new VNC server receiver with | |
321 * inherited clients | |
322 * @param hostName | |
369 | 323 * @param newVNCServerId |
428
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
324 * @param x |
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
325 * @param y |
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
326 * @param width |
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
327 * @param height |
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
328 * @param scale |
175 | 329 */ |
176 | 330 @Override |
428
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
331 public void inhelitClients(String hostName, short newVNCServerId, int x, int y, int width, int height, int scale) { |
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
332 final ConnectionPresenter connectionPresenter = createNewConnectionPresenter(hostName, newVNCServerId, x, y, width, height, scale); |
383 | 333 isApplet = true; |
334 this.setNoConnection(false); | |
335 final Viewer v = this; | |
336 new Thread(new Runnable() { | |
337 @Override | |
338 public void run() { | |
395
704ac9e79e25
Call startVNCConnectionWithSocket for directedServerChangeReqeust
innparusu
parents:
383
diff
changeset
|
339 connectionPresenter.startVNCConnection(v, false, null, null); |
383 | 340 } |
341 }, "ServerChangeThread").start(); | |
342 } | |
343 | |
428
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
344 public void changeToDirectConnectedServer(String hostName, Reader is, Writer os, int x, int y, int width, int height, int scale) { |
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
345 final ConnectionPresenter connectionPresenter = createNewConnectionPresenter(hostName, (short) -1, x, y, width, height, scale); |
395
704ac9e79e25
Call startVNCConnectionWithSocket for directedServerChangeReqeust
innparusu
parents:
383
diff
changeset
|
346 connectionPresenter.startVNCConnection(this, true, is, os); |
441 | 347 } |
383 | 348 |
428
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
349 private ConnectionPresenter createNewConnectionPresenter(String hostName, short newVNCServerId, int x, int y, int width, int height, int scale) { |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
350 final boolean hasJsch = checkJsch(); |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
351 final boolean allowInteractive = allowAppletInteractiveConnections || ! isApplet; |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
352 final ConnectionPresenter connectionPresenter = new ConnectionPresenter(hasJsch, allowInteractive); |
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
353 ConnectionParams connectionParams = new ConnectionParams(); |
179 | 354 connectionParams.setConnectionParam(hostName, vncport); |
368
b60780e1fafc
Add ServerChangeThread to inhelitClients method
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
366
diff
changeset
|
355 connectionPresenter.addModel("ConnectionParamsModel", connectionParams); |
369 | 356 connectionPresenter.setConnectionParams(connectionParams); |
357 connectionPresenter.setReconnectingId(newVNCServerId); | |
370 | 358 connectionPresenter.setIsTreeVNC(true); |
359 connectionPresenter.setNoConnection(false); | |
428
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
360 connectionPresenter.setX(x); |
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
361 connectionPresenter.setY(y); |
454
432e2967eaab
All screen sharing request information is now in ConnectionPresenter only
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
451
diff
changeset
|
362 connectionPresenter.setSingleWidth(width); |
432e2967eaab
All screen sharing request information is now in ConnectionPresenter only
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
451
diff
changeset
|
363 connectionPresenter.setSingleHeight(height); |
428
f6a828dd37b0
Change timing for setting share screen info
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
427
diff
changeset
|
364 connectionPresenter.setRetinaScale(scale); |
460 | 365 // System.out.println("Sarver change accepted from id :" + newVNCServerId); |
383 | 366 return connectionPresenter; |
174 | 367 } |
368 | |
343 | 369 /** |
370 * start TreeVNC viewer | |
371 */ | |
379 | 372 public void startTreeViewer(String hostName, boolean cui, boolean addSerialNum) { |
343 | 373 TreeRFBProto rfb = new TreeRFBProto(false, this); |
374 rfb.setCuiVersion(cui); | |
379 | 375 rfb.setAddSerialNum(addSerialNum); |
343 | 376 rfb.setHasViewer(true); |
377 rfb.createConnectionAndStart(this); | |
378 CreateConnectionParam cp = new CreateConnectionParam(rfb); | |
379 if (hostName!=null) { | |
380 cp.setHostName(hostName); | |
381 } else { | |
382 cp.findTreeVncRoot(); | |
400
845698fd6fb6
Remove synchronized
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
399
diff
changeset
|
383 |
401
94c520535ef1
Fix selection panel
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
400
diff
changeset
|
384 // selected "Start Display Mode" or "Start as TreeVNC Root" for start selection panel |
94c520535ef1
Fix selection panel
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
400
diff
changeset
|
385 if (cp.isDisplayMode() || cp.isRootMode()) { |
400
845698fd6fb6
Remove synchronized
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
399
diff
changeset
|
386 myRfb = rfb; |
402
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
387 myRfb.setIsTreeManager(true); |
399
28d67bbfa9f1
Implement SelectionPanel processing
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
395
diff
changeset
|
388 return; |
28d67bbfa9f1
Implement SelectionPanel processing
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
395
diff
changeset
|
389 } |
343 | 390 } |
391 cp.sendWhereToConnect(this); | |
392 isTreeVNC = true; | |
393 myRfb = rfb; | |
394 settings.setViewOnly(true); // too avoid unnecessary upward traffic | |
395 rfb.getAcceptThread().waitForShutdown(); | |
396 } | |
397 | |
455
6f3d3da40940
fix cui and hasViewer flag
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
454
diff
changeset
|
398 public void proxyStart(String[] argv, String hostName, int width, int height, boolean showTree, boolean checkDelay, boolean addSerialNum, boolean fixingSize, boolean filterSingleDisplay, boolean hasViewer) { |
224 | 399 fbWidth = width; |
400 this.showTree = showTree; | |
175 | 401 Parser parser = new Parser(); |
402 ParametersHandler.completeParserOptions(parser); | |
403 if (fbWidth == 0) | |
404 parser.parse(argv); | |
405 if (parser.isSet(ParametersHandler.ARG_HELP)) { | |
406 printUsage(parser.optionsUsage()); | |
407 System.exit(0); | |
408 } | |
402
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
409 |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
410 // myRfb is null if use command line option "-d" "-p" |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
411 // myRfb not null if use start panel |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
412 if (myRfb == null) { |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
413 myRfb = new TreeRFBProto(true, this); |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
414 } |
455
6f3d3da40940
fix cui and hasViewer flag
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
454
diff
changeset
|
415 myRfb.setCuiVersion(!hasViewer); |
6f3d3da40940
fix cui and hasViewer flag
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
454
diff
changeset
|
416 myRfb.setHasViewer(hasViewer); |
402
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
417 myRfb.setShowTree(showTree); |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
418 myRfb.setCheckDelay(checkDelay); |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
419 myRfb.setAddSerialNum(addSerialNum); |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
420 myRfb.setFixingSize(fixingSize); |
266 | 421 if(fixingSize) { |
402
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
422 myRfb.fixingSizeWidth = fixingSizeWidth; |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
423 myRfb.fixingSizeHeight = fixingSizeHeight; |
266 | 424 } |
402
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
425 if (myRfb.getAcceptThread() == null) { |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
426 myRfb.createConnectionAndStart(this); |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
427 } else { |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
428 myRfb.startTreeRootFindThread(); |
73c96a1d4a3a
Fix wasteful thread start
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
401
diff
changeset
|
429 } |
179 | 430 setIsTreeVNC(true); |
377 | 431 if (hostName == null) { |
432 hostName = "localhost"; | |
433 } | |
434 connectionParams.setConnectionParam(hostName, vncport); | |
179 | 435 isApplet = true; |
449
d5bcae14c2cd
reuse FrameUpdateRequest for all code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
448
diff
changeset
|
436 settings.setViewOnly(true); // to avoid unnecessary upward traffic |
179 | 437 run(); |
438 } | |
439 | |
207 | 440 public void initRoot(TreeRFBProto myRfbProto, String hostName) { |
179 | 441 setIsTreeVNC(true); |
442 connectionParams.setConnectionParam(hostName, vncport); | |
443 isApplet = true; | |
444 myRfbProto.createConnectionAndStart(this); | |
445 run(); | |
175 | 446 } |
224 | 447 |
192 | 448 @Override |
449 public void setVisible(boolean b) { | |
366 | 450 if(connectionPresenter == null) return; |
224 | 451 SwingViewerWindow v = connectionPresenter.getViewer(); |
452 if (v != null) | |
453 v.setVisible(b); | |
192 | 454 } |
188 | 455 |
224 | 456 @Override |
457 public Socket getVNCSocket() { | |
458 return connectionPresenter.getSocket(); | |
459 } | |
202 | 460 |
204
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
203
diff
changeset
|
461 @Override |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
203
diff
changeset
|
462 public boolean getShowTree() { |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
203
diff
changeset
|
463 return showTree; |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
203
diff
changeset
|
464 } |
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
203
diff
changeset
|
465 |
225 | 466 @Override |
467 public void setWidth(int w) { | |
468 width = w; | |
469 } | |
470 | |
471 @Override | |
472 public void setHeight(int h) { | |
473 height = h; | |
474 } | |
475 | |
257 | 476 @Override |
477 public void setFixingSize(int width, int height) { | |
478 this.fixingSizeWidth = width; | |
479 this.fixingSizeHeight = height; | |
480 } | |
301 | 481 |
482 @Override | |
458 | 483 public ArrayList<FbRectangle> getScreenRectangles() { |
314 | 484 // New screen server has one or more screens. |
485 // Screens are numbered in the order from left. | |
486 // put screens in an ArrayList. | |
301 | 487 ArrayList<Rectangle> rectangles = new ArrayList<Rectangle>(); |
488 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); | |
489 GraphicsDevice[] gs = ge.getScreenDevices(); | |
417
c225c7963778
Send screen position
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
402
diff
changeset
|
490 |
314 | 491 for (GraphicsDevice gd : gs) { |
456
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
492 int screenNumber = 0; |
314 | 493 for (GraphicsConfiguration r : gd.getConfigurations()) { |
448
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
494 Rectangle rect = r.getBounds(); |
456
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
495 //System.out.println("screen "+ screenNumber +":"+rect); |
448
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
496 rectangles.add(rect); |
456
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
497 screenNumber++; |
301 | 498 } |
499 } | |
458 | 500 Point offset = getScreenOffset(rectangles); |
501 ArrayList<FbRectangle> fbRectangles = new ArrayList<FbRectangle>(); | |
502 int screenNumber = 0; | |
503 for (Rectangle rect : rectangles) { | |
461
b7d43b12651c
fix getFbRectangles x may have minus value now, but xFb is always plus
kono
parents:
460
diff
changeset
|
504 FbRectangle fbrect = new FbRectangle(rect.x, rect.y, rect.width, rect.height, screenNumber, retinaScale(screenNumber)); |
b7d43b12651c
fix getFbRectangles x may have minus value now, but xFb is always plus
kono
parents:
460
diff
changeset
|
505 fbrect.setXfb(rect.x + offset.x); |
466 | 506 fbrect.setYfb(rect.y + offset.y); |
461
b7d43b12651c
fix getFbRectangles x may have minus value now, but xFb is always plus
kono
parents:
460
diff
changeset
|
507 fbRectangles.add(fbrect); |
458 | 508 screenNumber++; |
509 } | |
459 | 510 |
458 | 511 fbRectangles.sort(new Comparator<FbRectangle>() { |
512 @Override | |
513 public int compare(FbRectangle t0, FbRectangle t1) { | |
514 return t0.getX() < t1.getX() ? -1 : t0.getX() == t1.getX() ? 0 : 1; | |
515 } | |
516 }); | |
517 | |
518 int retinaOffsetX = 0; | |
519 FbRectangle fbRectanglesPrev = fbRectangles.get(0); | |
520 for (int i = 1; i < fbRectangles.size(); i++) { | |
521 FbRectangle fbRect = fbRectangles.get(i); | |
522 if (fbRectanglesPrev.getRetinaScale() != 1) { | |
523 if (fbRectanglesPrev.getX() + fbRectanglesPrev.getWidth() + 1 == fbRect.getX() && | |
524 (fbRectanglesPrev.getY() >= fbRect.getY() && fbRectanglesPrev.getY() <= fbRectanglesPrev.getY() + fbRectanglesPrev.getHeight()) || | |
525 fbRectanglesPrev.getY() > fbRect.getY() + fbRect.getHeight() && fbRectanglesPrev.getY() + fbRectanglesPrev.getHeight() < fbRectanglesPrev.getY() + fbRectanglesPrev.getHeight()) { | |
526 // previous screen is touch with this screen, fix retina scale offset | |
527 retinaOffsetX += fbRectanglesPrev.getWidth() * (fbRectanglesPrev.retinaScale - 1); | |
528 } | |
529 } | |
461
b7d43b12651c
fix getFbRectangles x may have minus value now, but xFb is always plus
kono
parents:
460
diff
changeset
|
530 fbRect.setXfb((int) (fbRect.getXfb() + retinaOffsetX)); |
458 | 531 fbRectanglesPrev = fbRect; |
532 } | |
533 | |
459 | 534 fbRectangles.sort(new Comparator<FbRectangle>() { |
535 @Override | |
536 public int compare(FbRectangle t0, FbRectangle t1) { | |
537 return t0.getY() < t1.getY() ? -1 : t0.getY() == t1.getY() ? 0 : 1; | |
538 } | |
539 }); | |
540 | |
458 | 541 int retinaOffsetY = 0; |
542 fbRectanglesPrev = fbRectangles.get(0); | |
543 for (int i = 1; i < fbRectangles.size(); i++) { | |
544 FbRectangle fbRect = fbRectangles.get(i); | |
545 if (fbRectanglesPrev.getRetinaScale() != 1) { | |
546 if (fbRectanglesPrev.getY() + fbRectanglesPrev.getHeight() + 1 == fbRect.getY() && | |
547 (fbRectanglesPrev.getX() >= fbRect.getX() && fbRectanglesPrev.getX() <= fbRectanglesPrev.getX() + fbRectanglesPrev.getWidth()) || | |
548 fbRectanglesPrev.getX() > fbRect.getX() + fbRect.getWidth() && fbRectanglesPrev.getX() + fbRectanglesPrev.getWidth() < fbRectanglesPrev.getX() + fbRectanglesPrev.getWidth()) { | |
549 // previous screen is touch with this screen, fix retina scale offset | |
550 retinaOffsetY += fbRectanglesPrev.getHeight() * (fbRectanglesPrev.retinaScale - 1); | |
551 } | |
552 } | |
461
b7d43b12651c
fix getFbRectangles x may have minus value now, but xFb is always plus
kono
parents:
460
diff
changeset
|
553 fbRect.setYfb((int) (fbRect.getYfb() + retinaOffsetY)); |
458 | 554 fbRectanglesPrev = fbRect; |
555 } | |
556 return fbRectangles; | |
301 | 557 } |
558 | |
448
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
559 public Point getScreenOffset(ArrayList<Rectangle> rectangles) { |
451
65ffb64cfb51
try to fix scroll y in fitScreen
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
449
diff
changeset
|
560 // position of screen may negative, but RFBscreen position is always positive |
448
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
561 // compute offset to make them positive |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
562 int offsetx = 0; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
563 int offsety = 0; |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
564 for (Rectangle rect : rectangles) { |
459 | 565 if (rect.x < offsetx) offsetx = rect.x; |
566 if (rect.y < offsety) offsety = rect.y; | |
448
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
567 } |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
568 return new Point(-offsetx,-offsety); |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
569 } |
344a35b7c47f
send both frame buffer size and selected screen size in Disktop size change (INIT_DATA)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
441
diff
changeset
|
570 |
456
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
571 public int retinaScale(int shareScreenNumber) { |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
572 int scale = 1; |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
573 GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
574 final GraphicsDevice[] devices = env.getScreenDevices(); |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
575 |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
576 try { |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
577 Field field = devices[shareScreenNumber].getClass().getDeclaredField("scale"); |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
578 |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
579 if (field != null) { |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
580 field.setAccessible(true); |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
581 Object retinaScale = field.get(devices[shareScreenNumber]); |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
582 |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
583 if (retinaScale instanceof Integer) { |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
584 scale = (Integer) retinaScale; |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
585 return scale; |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
586 } |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
587 } |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
588 } catch (Exception ignore) {} |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
589 return scale; |
34277b436cac
Using retina scale to share screnn if minus postion
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
455
diff
changeset
|
590 } |
363 | 591 |
317 | 592 @Override |
593 public void setFitScreen() { | |
594 SwingViewerWindow v = connectionPresenter.getViewer(); | |
595 if (v != null) { | |
441 | 596 v.fitScreen(); |
317 | 597 } |
598 } | |
599 | |
0
4689cc86d6cb
create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
600 } |