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