Mercurial > hg > Members > riono > TreeVNC_ja_comment
annotate src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java @ 339:4713559f5838
if have a parent, send serverChangeRequest and whereToConnect
author | oc |
---|---|
date | Fri, 06 Feb 2015 19:06:50 +0900 |
parents | 1b1270adc4ba |
children | fd529c51095f |
rev | line source |
---|---|
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 // Copyright (C) 2010, 2011, 2012, 2013 GlavSoft LLC. |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 // All rights reserved. |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 // |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 //------------------------------------------------------------------------- |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 // This file is part of the TightVNC software. Please visit our Web site: |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 // |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 // http://www.tightvnc.com/ |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 // |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 // This program is free software; you can redistribute it and/or modify |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 // it under the terms of the GNU General Public License as published by |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 // the Free Software Foundation; either version 2 of the License, or |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 // (at your option) any later version. |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 // |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 // This program is distributed in the hope that it will be useful, |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 // GNU General Public License for more details. |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 // |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 // You should have received a copy of the GNU General Public License along |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 // with this program; if not, write to the Free Software Foundation, Inc., |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 //------------------------------------------------------------------------- |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 // |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 package com.glavsoft.viewer.swing; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 import com.glavsoft.core.SettingsChangedEvent; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 import com.glavsoft.rfb.IChangeSettingsListener; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 import com.glavsoft.rfb.client.KeyEventMessage; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 import com.glavsoft.rfb.protocol.Protocol; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 import com.glavsoft.rfb.protocol.ProtocolContext; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 import com.glavsoft.rfb.protocol.ProtocolSettings; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 import com.glavsoft.utils.Keymap; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 import com.glavsoft.viewer.ConnectionPresenter; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 import com.glavsoft.viewer.UiSettings; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 import com.glavsoft.viewer.Viewer; |
153 | 37 import com.glavsoft.viewer.ViewerInterface; |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 import com.glavsoft.viewer.swing.gui.OptionsDialog; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 import javax.swing.*; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 import javax.swing.border.BevelBorder; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 import javax.swing.border.Border; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 import javax.swing.border.EmptyBorder; |
109 | 44 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 import java.awt.*; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 import java.awt.event.*; |
291 | 47 import java.net.SocketException; |
48 import java.net.UnknownHostException; | |
274 | 49 import java.util.ArrayList; |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 import java.util.LinkedList; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 import java.util.List; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 import java.util.concurrent.Executors; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 import java.util.concurrent.ScheduledExecutorService; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 import java.util.concurrent.ScheduledFuture; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 import java.util.concurrent.TimeUnit; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 import java.util.logging.Logger; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 |
290
c10e0dee7bbb
add READY_SHARE_SOUND msg, add function of receive READY_SHARE_SOUND msg, add sendSound thread.
oc
parents:
289
diff
changeset
|
58 import jp.ac.u_ryukyu.treevnc.*; |
113
bce2ef0a2e79
use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
110
diff
changeset
|
59 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 public class SwingViewerWindow implements IChangeSettingsListener { |
314 | 61 public static final int FS_SCROLLING_ACTIVE_BORDER = 20; |
62 private JToggleButton zoomFitButton; | |
63 private JToggleButton zoomFullScreenButton; | |
64 private JButton zoomInButton; | |
65 private JButton zoomOutButton; | |
66 private JButton zoomAsIsButton; | |
67 private JPanel outerPanel; | |
68 private JScrollPane scroller; | |
69 private JFrame frame; | |
70 private boolean forceResizable = true; | |
71 private ButtonsBar buttonsBar; | |
72 private Surface surface; | |
73 private boolean isSeparateFrame; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
74 private final boolean isApplet; |
153 | 75 private ViewerInterface viewer; |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
76 private String connectionString; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
77 private ConnectionPresenter presenter; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
78 private Rectangle oldContainerBounds; |
314 | 79 private volatile boolean isFullScreen; |
80 private Border oldScrollerBorder; | |
81 private JLayeredPane lpane; | |
82 private EmptyButtonsBarMouseAdapter buttonsBarMouseAdapter; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
83 private String remoteDesktopName; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
84 private ProtocolSettings rfbSettings; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
85 private UiSettings uiSettings; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
86 private Protocol workingProtocol; |
225 | 87 public int width; |
88 public int height; | |
257 | 89 |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
90 private boolean isZoomToFitSelected; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
91 private List<JComponent> kbdButtons; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
92 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
93 public SwingViewerWindow(Protocol workingProtocol, ProtocolSettings rfbSettings, UiSettings uiSettings, Surface surface, |
314 | 94 boolean isSeparateFrame, boolean isApplet, ViewerInterface viewer, String connectionString, |
95 ConnectionPresenter presenter, int w, int h) { | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
96 this.workingProtocol = workingProtocol; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
97 this.rfbSettings = rfbSettings; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
98 this.uiSettings = uiSettings; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
99 this.surface = surface; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
100 this.isSeparateFrame = isSeparateFrame; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
101 this.isApplet = isApplet; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
102 this.viewer = viewer; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
103 this.connectionString = connectionString; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
104 this.presenter = presenter; |
225 | 105 this.width = w; |
106 this.height = h; | |
301 | 107 |
65 | 108 if(viewer instanceof Viewer) |
314 | 109 createContainer(surface, isApplet, (Viewer)viewer); |
110 | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
111 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
112 if (uiSettings.showControls) { |
314 | 113 if(viewer instanceof Viewer) |
114 createButtonsPanel(workingProtocol, isSeparateFrame? frame: (Viewer)viewer); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
115 if (isSeparateFrame) registerResizeListener(frame); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
116 updateZoomButtonsState(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
117 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
118 if (uiSettings.isFullScreen()) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
119 switchOnFullscreenMode(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
120 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
121 setSurfaceToHandleKbdFocus(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
122 if (isSeparateFrame) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
123 new Thread(new Runnable() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
124 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
125 public void run() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
126 try { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
127 Thread.sleep(1000); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
128 } catch (InterruptedException e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
129 // nop |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
130 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
131 SwingUtilities.invokeLater(new Runnable() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
132 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
133 public void run() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
134 frame.toFront(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
135 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
136 }); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
137 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
138 }).start(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
139 } |
314 | 140 } |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
141 |
314 | 142 private void createContainer(final Surface surface, boolean isApplet, JApplet appletWindow) { |
143 outerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)) { | |
144 /** | |
83 | 145 * |
146 */ | |
147 private static final long serialVersionUID = 1L; | |
148 @Override | |
314 | 149 public Dimension getSize() { |
150 return surface.getPreferredSize(); | |
151 } | |
152 @Override | |
153 public Dimension getPreferredSize() { | |
154 return surface.getPreferredSize(); | |
155 } | |
156 }; | |
247
dd154ffe1a53
fix lostparent, in case of death last node.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
225
diff
changeset
|
157 Dimension outerPanelSize = outerPanel.getSize(); |
257 | 158 double width = outerPanelSize.getWidth(); |
247
dd154ffe1a53
fix lostparent, in case of death last node.
one@firefly.cr.ie.u-ryukyu.ac.jp
parents:
225
diff
changeset
|
159 double height = outerPanelSize.getHeight(); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
160 outerPanel.setBackground(Color.DARK_GRAY); |
314 | 161 lpane = new JLayeredPane() { |
162 /** | |
83 | 163 * |
164 */ | |
165 private static final long serialVersionUID = 1L; | |
166 @Override | |
314 | 167 public Dimension getSize() { |
168 return surface.getPreferredSize(); | |
169 } | |
170 @Override | |
171 public Dimension getPreferredSize() { | |
172 return surface.getPreferredSize(); | |
173 } | |
174 }; | |
175 lpane.setPreferredSize(surface.getPreferredSize()); | |
176 lpane.add(surface, JLayeredPane.DEFAULT_LAYER, 0); | |
177 outerPanel.add(lpane); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
178 |
314 | 179 scroller = new JScrollPane(outerPanel); |
180 if (isSeparateFrame) { | |
181 frame = new JFrame(); | |
182 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); | |
183 if ( ! isApplet) { | |
184 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); | |
185 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
186 frame.setModalExclusionType(Dialog.ModalExclusionType.APPLICATION_EXCLUDE); |
314 | 187 Utils.setApplicationIconsForWindow(frame); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
188 frame.setLayout(new BorderLayout(0, 0)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
189 frame.add(scroller, BorderLayout.CENTER); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
190 |
314 | 191 // frame.pack(); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
192 outerPanel.setSize(surface.getPreferredSize()); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
193 internalPack(null); |
204
d9d234715853
TreeManager for each interface
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
191
diff
changeset
|
194 if(viewer.getRfb().isTreeManager() || viewer.getCuiVersion()) { |
314 | 195 frame.setVisible(false); |
196 viewer.setCuiVersion(false); | |
68 | 197 } else |
314 | 198 frame.setVisible(true); |
61
d9cf08c6415c
During implementation change screen.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
57
diff
changeset
|
199 //frame.setVisible(false); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
200 frame.validate(); |
314 | 201 } else { |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
202 appletWindow.setLayout(new BorderLayout(0, 0)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
203 appletWindow.add(scroller, BorderLayout.CENTER); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
204 appletWindow.validate(); |
314 | 205 } |
206 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
207 |
314 | 208 public void pack() { |
209 final Dimension outerPanelOldSize = outerPanel.getSize(); | |
210 outerPanel.setSize(surface.getPreferredSize()); | |
211 if (isSeparateFrame && ! isZoomToFitSelected()) { | |
212 internalPack(outerPanelOldSize); | |
213 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
214 if (buttonsBar != null) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
215 updateZoomButtonsState(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
216 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
217 updateWindowTitle(); |
314 | 218 } |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
219 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
220 public boolean isZoomToFitSelected() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
221 return isZoomToFitSelected; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
222 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
223 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
224 public void setZoomToFitSelected(boolean zoomToFitSelected) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
225 isZoomToFitSelected = zoomToFitSelected; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
226 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
227 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
228 public void setRemoteDesktopName(String name) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
229 remoteDesktopName = name; |
207 | 230 TreeRFBProto rfb = viewer.getRfb(); |
167 | 231 if (rfb!=null) { |
314 | 232 int port = rfb.getAcceptPort(); |
233 remoteDesktopName += ":" + port; | |
167 | 234 } |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
235 updateWindowTitle(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
236 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
237 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
238 private void updateWindowTitle() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
239 if (isSeparateFrame) { |
314 | 240 frame.setTitle(remoteDesktopName + " [zoom: " + uiSettings.getScalePercentFormatted() + "%]"); |
241 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
242 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
243 |
314 | 244 private void internalPack(Dimension outerPanelOldSize) { |
245 final Rectangle workareaRectangle = getWorkareaRectangle(); | |
246 if (workareaRectangle.equals(frame.getBounds())) { | |
247 forceResizable = true; | |
248 } | |
249 final boolean isHScrollBar = scroller.getHorizontalScrollBar().isShowing() && ! forceResizable; | |
250 final boolean isVScrollBar = scroller.getVerticalScrollBar().isShowing() && ! forceResizable; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
251 |
314 | 252 boolean isWidthChangeable = true; |
253 boolean isHeightChangeable = true; | |
254 if (outerPanelOldSize != null && surface.oldSize != null) { | |
255 isWidthChangeable = forceResizable || | |
256 (outerPanelOldSize.width == surface.oldSize.width && ! isHScrollBar); | |
257 isHeightChangeable = forceResizable || | |
258 (outerPanelOldSize.height == surface.oldSize.height && ! isVScrollBar); | |
259 } | |
260 forceResizable = false; | |
261 frame.validate(); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
262 |
314 | 263 final Insets containerInsets = frame.getInsets(); |
264 Dimension preferredSize = frame.getPreferredSize(); | |
265 Rectangle preferredRectangle = new Rectangle(frame.getLocation(), preferredSize); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
266 |
314 | 267 if (null == outerPanelOldSize && workareaRectangle.contains(preferredRectangle)) { |
268 frame.pack(); | |
269 } else { | |
270 Dimension minDimension = new Dimension( | |
271 containerInsets.left + containerInsets.right, containerInsets.top + containerInsets.bottom); | |
272 if (buttonsBar != null && buttonsBar.isVisible) { | |
273 minDimension.width += buttonsBar.getWidth(); | |
274 minDimension.height += buttonsBar.getHeight(); | |
275 } | |
276 Dimension dim = new Dimension(preferredSize); | |
277 Point location = frame.getLocation(); | |
278 if ( ! isWidthChangeable) { | |
279 dim.width = frame.getWidth(); | |
280 } else { | |
301 | 281 // このあたり、scalepercentを計算するのに使えそう |
314 | 282 if (isVScrollBar) dim.width += scroller.getVerticalScrollBar().getWidth(); |
283 if (dim.width < minDimension.width) dim.width = minDimension.width; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
284 |
314 | 285 int dx = location.x - workareaRectangle.x; |
286 if (dx < 0) { | |
287 dx = 0; | |
288 location.x = workareaRectangle.x; | |
289 } | |
290 int w = workareaRectangle.width - dx; | |
291 if (w < dim.width) { | |
292 int dw = dim.width - w; | |
293 if (dw < dx) { | |
294 location.x -= dw; | |
295 } else { | |
296 dim.width = workareaRectangle.width; | |
297 location.x = workareaRectangle.x; | |
298 } | |
299 } | |
300 } | |
301 if ( ! isHeightChangeable) { | |
302 dim.height = frame.getHeight(); | |
303 } else { | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
304 |
314 | 305 if (isHScrollBar) dim.height += scroller.getHorizontalScrollBar().getHeight(); |
306 if (dim.height < minDimension.height) dim.height = minDimension.height; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
307 |
314 | 308 int dy = location.y - workareaRectangle.y; |
309 if (dy < 0) { | |
310 dy = 0; | |
311 location.y = workareaRectangle.y; | |
312 } | |
313 int h = workareaRectangle.height - dy; | |
314 if (h < dim.height) { | |
315 int dh = dim.height - h; | |
316 if (dh < dy) { | |
317 location.y -= dh; | |
318 } else { | |
319 dim.height = workareaRectangle.height; | |
320 location.y = workareaRectangle.y; | |
321 } | |
322 } | |
323 } | |
301 | 324 // set full size |
309 | 325 /* |
300 | 326 dim.width = workareaRectangle.width; |
327 dim.height = workareaRectangle.height; | |
314 | 328 */ |
329 if ( ! location.equals(frame.getLocation())) { | |
330 frame.setLocation(location); | |
331 } | |
332 if ( ! isFullScreen ) { | |
333 frame.setSize(dim); | |
334 } | |
335 } | |
336 scroller.revalidate(); | |
337 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
338 |
314 | 339 private Rectangle getWorkareaRectangle() { |
340 final GraphicsConfiguration graphicsConfiguration = frame.getGraphicsConfiguration(); | |
341 final Rectangle screenBounds = graphicsConfiguration.getBounds(); | |
342 final Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(graphicsConfiguration); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
343 |
314 | 344 screenBounds.x += screenInsets.left; |
345 screenBounds.y += screenInsets.top; | |
346 if (width != 0) { | |
347 screenBounds.width = width; | |
348 screenBounds.height = height; | |
349 } else { | |
350 screenBounds.width -= screenInsets.left + screenInsets.right; | |
351 screenBounds.height -= screenInsets.top + screenInsets.bottom; | |
225 | 352 } |
353 | |
314 | 354 return screenBounds; |
355 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
356 |
314 | 357 void addZoomButtons() { |
358 buttonsBar.createStrut(); | |
359 zoomOutButton = buttonsBar.createButton("zoom-out", "Zoom Out", new ActionListener() { | |
360 @Override | |
361 public void actionPerformed(ActionEvent e) { | |
362 zoomFitButton.setSelected(false); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
363 uiSettings.zoomOut(); |
314 | 364 } |
365 }); | |
366 zoomInButton = buttonsBar.createButton("zoom-in", "Zoom In", new ActionListener() { | |
367 @Override | |
368 public void actionPerformed(ActionEvent e) { | |
369 zoomFitButton.setSelected(false); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
370 uiSettings.zoomIn(); |
314 | 371 } |
372 }); | |
373 zoomAsIsButton = buttonsBar.createButton("zoom-100", "Zoom 100%", new ActionListener() { | |
374 @Override | |
375 public void actionPerformed(ActionEvent e) { | |
376 zoomFitButton.setSelected(false); | |
377 forceResizable = false; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
378 uiSettings.zoomAsIs(); |
314 | 379 } |
380 }); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
381 |
314 | 382 zoomFitButton = buttonsBar.createToggleButton("zoom-fit", "Zoom to Fit Window", |
383 new ItemListener() { | |
384 @Override | |
385 public void itemStateChanged(ItemEvent e) { | |
386 if (e.getStateChange() == ItemEvent.SELECTED) { | |
387 setZoomToFitSelected(true); | |
388 forceResizable = true; | |
389 zoomToFit(); | |
390 updateZoomButtonsState(); | |
391 } else { | |
392 setZoomToFitSelected(false); | |
393 } | |
394 setSurfaceToHandleKbdFocus(); | |
395 } | |
396 }); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
397 |
314 | 398 zoomFullScreenButton = buttonsBar.createToggleButton("zoom-fullscreen", "Full Screen", |
399 new ItemListener() { | |
400 @Override | |
401 public void itemStateChanged(ItemEvent e) { | |
402 updateZoomButtonsState(); | |
403 if (e.getStateChange() == ItemEvent.SELECTED) { | |
404 uiSettings.setFullScreen(switchOnFullscreenMode()); | |
405 } else { | |
406 switchOffFullscreenMode(); | |
407 uiSettings.setFullScreen(false); | |
408 } | |
409 setSurfaceToHandleKbdFocus(); | |
410 } | |
411 }); | |
412 if ( ! isSeparateFrame) { | |
413 zoomFullScreenButton.setEnabled(false); | |
414 zoomFitButton.setEnabled(false); | |
415 } | |
416 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
417 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
418 protected void setSurfaceToHandleKbdFocus() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
419 if (surface != null && ! surface.requestFocusInWindow()) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
420 surface.requestFocus(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
421 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
422 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
423 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
424 boolean switchOnFullscreenMode() { |
314 | 425 zoomFullScreenButton.setSelected(true); |
426 oldContainerBounds = frame.getBounds(); | |
427 setButtonsBarVisible(false); | |
428 forceResizable = true; | |
429 frame.dispose(); | |
430 frame.setUndecorated(true); | |
431 frame.setResizable(false); | |
432 frame.setVisible(true); | |
433 try { | |
434 frame.getGraphicsConfiguration().getDevice().setFullScreenWindow(frame); | |
435 isFullScreen = true; | |
436 scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); | |
437 scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); | |
438 oldScrollerBorder = scroller.getBorder(); | |
439 scroller.setBorder(new EmptyBorder(0, 0, 0, 0)); | |
440 new FullscreenBorderDetectionThread(frame).start(); | |
441 } catch (Exception ex) { | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
442 Logger.getLogger(this.getClass().getName()).info("Cannot switch into FullScreen mode: " + ex.getMessage()); |
314 | 443 return false; |
444 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
445 return true; |
314 | 446 } |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
447 |
314 | 448 private void switchOffFullscreenMode() { |
449 if (isFullScreen) { | |
450 zoomFullScreenButton.setSelected(false); | |
451 isFullScreen = false; | |
452 setButtonsBarVisible(true); | |
453 try { | |
454 frame.dispose(); | |
455 frame.setUndecorated(false); | |
456 frame.setResizable(true); | |
457 frame.getGraphicsConfiguration().getDevice().setFullScreenWindow(null); | |
458 } catch (Exception e) { | |
459 // nop | |
460 } | |
461 scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); | |
462 scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); | |
463 scroller.setBorder(oldScrollerBorder); | |
464 this.frame.setBounds(oldContainerBounds); | |
465 frame.setVisible(true); | |
466 pack(); | |
467 } | |
468 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
469 |
314 | 470 private void zoomToFit() { |
471 Dimension scrollerSize = scroller.getSize(); | |
472 Insets scrollerInsets = scroller.getInsets(); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
473 uiSettings.zoomToFit(scrollerSize.width - scrollerInsets.left - scrollerInsets.right, |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
474 scrollerSize.height - scrollerInsets.top - scrollerInsets.bottom + |
314 | 475 (isFullScreen ? buttonsBar.getHeight() : 0), |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
476 workingProtocol.getFbWidth(), workingProtocol.getFbHeight()); |
314 | 477 } |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
478 |
314 | 479 void registerResizeListener(Container container) { |
480 container.addComponentListener(new ComponentAdapter() { | |
481 @Override | |
482 public void componentResized(ComponentEvent e) { | |
483 if (isZoomToFitSelected()) { | |
484 zoomToFit(); | |
485 updateZoomButtonsState(); | |
486 updateWindowTitle(); | |
487 setSurfaceToHandleKbdFocus(); | |
488 } | |
489 } | |
490 }); | |
491 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
492 |
314 | 493 void updateZoomButtonsState() { |
494 zoomOutButton.setEnabled(uiSettings.getScalePercent() > UiSettings.MIN_SCALE_PERCENT); | |
495 zoomInButton.setEnabled(uiSettings.getScalePercent() < UiSettings.MAX_SCALE_PERCENT); | |
496 zoomAsIsButton.setEnabled(uiSettings.getScalePercent() != 100); | |
497 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
498 |
314 | 499 public ButtonsBar createButtonsBar() { |
500 buttonsBar = new ButtonsBar(); | |
501 return buttonsBar; | |
502 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
503 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
504 public void setButtonsBarVisible(boolean isVisible) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
505 setButtonsBarVisible(isVisible, frame); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
506 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
507 |
314 | 508 private void setButtonsBarVisible(boolean isVisible, Container container) { |
509 buttonsBar.setVisible(isVisible); | |
510 if (isVisible) { | |
511 buttonsBar.borderOff(); | |
512 container.add(buttonsBar.bar, BorderLayout.NORTH); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
513 container.validate(); |
314 | 514 } else { |
515 container.remove(buttonsBar.bar); | |
516 buttonsBar.borderOn(); | |
517 } | |
518 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
519 |
314 | 520 public void setButtonsBarVisibleFS(boolean isVisible) { |
521 if (isVisible) { | |
522 if ( ! buttonsBar.isVisible) { | |
523 lpane.add(buttonsBar.bar, JLayeredPane.POPUP_LAYER, 0); | |
524 final int bbWidth = buttonsBar.bar.getPreferredSize().width; | |
525 buttonsBar.bar.setBounds( | |
526 scroller.getViewport().getViewPosition().x + (scroller.getWidth() - bbWidth)/2, 0, | |
527 bbWidth, buttonsBar.bar.getPreferredSize().height); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
528 |
314 | 529 // prevent mouse events to through down to Surface |
530 if (null == buttonsBarMouseAdapter) buttonsBarMouseAdapter = new EmptyButtonsBarMouseAdapter(); | |
531 buttonsBar.bar.addMouseListener(buttonsBarMouseAdapter); | |
532 } | |
533 } else { | |
534 buttonsBar.bar.removeMouseListener(buttonsBarMouseAdapter); | |
535 lpane.remove(buttonsBar.bar); | |
536 lpane.repaint(buttonsBar.bar.getBounds()); | |
537 } | |
538 buttonsBar.setVisible(isVisible); | |
539 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
540 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
541 public Surface getSurface() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
542 return surface; |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
543 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
544 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
545 void close() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
546 if (isSeparateFrame && frame != null) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
547 frame.setVisible(false); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
548 frame.dispose(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
549 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
550 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
551 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
552 public static class ButtonsBar { |
314 | 553 private static final Insets BUTTONS_MARGIN = new Insets(2, 2, 2, 2); |
554 private JPanel bar; | |
555 private boolean isVisible; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
556 |
314 | 557 public ButtonsBar() { |
558 bar = new JPanel(new FlowLayout(FlowLayout.LEFT, 4, 1)); | |
559 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
560 |
314 | 561 public JButton createButton(String iconId, String tooltipText, ActionListener actionListener) { |
562 JButton button = new JButton(Utils.getButtonIcon(iconId)); | |
563 button.setToolTipText(tooltipText); | |
564 button.setMargin(BUTTONS_MARGIN); | |
565 bar.add(button); | |
566 button.addActionListener(actionListener); | |
567 return button; | |
568 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
569 |
314 | 570 public void createStrut() { |
571 bar.add(Box.createHorizontalStrut(10)); | |
572 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
573 |
314 | 574 public JToggleButton createToggleButton(String iconId, String tooltipText, ItemListener itemListener) { |
575 JToggleButton button = new JToggleButton(Utils.getButtonIcon(iconId)); | |
576 button.setToolTipText(tooltipText); | |
577 button.setMargin(BUTTONS_MARGIN); | |
578 bar.add(button); | |
579 button.addItemListener(itemListener); | |
580 return button; | |
581 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
582 |
314 | 583 public void setVisible(boolean isVisible) { |
584 this.isVisible = isVisible; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
585 if (isVisible) bar.revalidate(); |
314 | 586 } |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
587 |
314 | 588 public int getWidth() { |
589 return bar.getMinimumSize().width; | |
590 } | |
591 public int getHeight() { | |
592 return bar.getMinimumSize().height; | |
593 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
594 |
314 | 595 public void borderOn() { |
596 bar.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); | |
597 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
598 |
314 | 599 public void borderOff() { |
600 bar.setBorder(BorderFactory.createEmptyBorder()); | |
601 } | |
602 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
603 |
314 | 604 private static class EmptyButtonsBarMouseAdapter extends MouseAdapter { |
605 // empty | |
606 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
607 |
314 | 608 private class FullscreenBorderDetectionThread extends Thread { |
609 public static final int SHOW_HIDE_BUTTONS_BAR_DELAY_IN_MILLS = 700; | |
610 private final JFrame frame; | |
611 private ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); | |
612 private ScheduledFuture<?> futureForShow; | |
613 private ScheduledFuture<?> futureForHide; | |
614 private Point mousePoint, oldMousePoint; | |
615 private Point viewPosition; | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
616 |
314 | 617 public FullscreenBorderDetectionThread(JFrame frame) { |
618 super("FS border detector"); | |
619 this.frame = frame; | |
620 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
621 |
314 | 622 public void run() { |
623 setPriority(Thread.MIN_PRIORITY); | |
624 while(isFullScreen) { | |
625 mousePoint = MouseInfo.getPointerInfo().getLocation(); | |
626 if (null == oldMousePoint) oldMousePoint = mousePoint; | |
627 SwingUtilities.convertPointFromScreen(mousePoint, frame); | |
628 viewPosition = scroller.getViewport().getViewPosition(); | |
629 processButtonsBarVisibility(); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
630 |
314 | 631 boolean needScrolling = processVScroll() || processHScroll(); |
632 oldMousePoint = mousePoint; | |
633 if (needScrolling) { | |
634 cancelShowExecutor(); | |
635 setButtonsBarVisibleFS(false); | |
636 makeScrolling(viewPosition); | |
637 } | |
638 try { | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
639 Thread.sleep(100); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
640 } catch (Exception e) { |
314 | 641 // nop |
642 } | |
643 } | |
644 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
645 |
314 | 646 private boolean processHScroll() { |
647 if (mousePoint.x < FS_SCROLLING_ACTIVE_BORDER) { | |
648 if (viewPosition.x > 0) { | |
649 int delta = FS_SCROLLING_ACTIVE_BORDER - mousePoint.x; | |
650 if (mousePoint.y != oldMousePoint.y) delta *= 2; // speedify scrolling on mouse moving | |
651 viewPosition.x -= delta; | |
652 if (viewPosition.x < 0) viewPosition.x = 0; | |
653 return true; | |
654 } | |
655 } else if (mousePoint.x > (frame.getWidth() - FS_SCROLLING_ACTIVE_BORDER)) { | |
656 final Rectangle viewRect = scroller.getViewport().getViewRect(); | |
657 final int right = viewRect.width + viewRect.x; | |
658 if (right < outerPanel.getSize().width) { | |
659 int delta = FS_SCROLLING_ACTIVE_BORDER - (frame.getWidth() - mousePoint.x); | |
660 if (mousePoint.y != oldMousePoint.y) delta *= 2; // speedify scrolling on mouse moving | |
661 viewPosition.x += delta; | |
662 if (viewPosition.x + viewRect.width > outerPanel.getSize().width) viewPosition.x = | |
663 outerPanel.getSize().width - viewRect.width; | |
664 return true; | |
665 } | |
666 } | |
667 return false; | |
668 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
669 |
314 | 670 private boolean processVScroll() { |
671 if (mousePoint.y < FS_SCROLLING_ACTIVE_BORDER) { | |
672 if (viewPosition.y > 0) { | |
673 int delta = FS_SCROLLING_ACTIVE_BORDER - mousePoint.y; | |
674 if (mousePoint.x != oldMousePoint.x) delta *= 2; // speedify scrolling on mouse moving | |
675 viewPosition.y -= delta; | |
676 if (viewPosition.y < 0) viewPosition.y = 0; | |
677 return true; | |
678 } | |
679 } else if (mousePoint.y > (frame.getHeight() - FS_SCROLLING_ACTIVE_BORDER)) { | |
680 final Rectangle viewRect = scroller.getViewport().getViewRect(); | |
681 final int bottom = viewRect.height + viewRect.y; | |
682 if (bottom < outerPanel.getSize().height) { | |
683 int delta = FS_SCROLLING_ACTIVE_BORDER - (frame.getHeight() - mousePoint.y); | |
684 if (mousePoint.x != oldMousePoint.x) delta *= 2; // speedify scrolling on mouse moving | |
685 viewPosition.y += delta; | |
686 if (viewPosition.y + viewRect.height > outerPanel.getSize().height) viewPosition.y = | |
687 outerPanel.getSize().height - viewRect.height; | |
688 return true; | |
689 } | |
690 } | |
691 return false; | |
692 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
693 |
314 | 694 private void processButtonsBarVisibility() { |
695 if (mousePoint.y < 1) { | |
696 cancelHideExecutor(); | |
697 // show buttons bar after delay | |
698 if (! buttonsBar.isVisible && (null == futureForShow || futureForShow.isDone())) { | |
699 futureForShow = scheduler.schedule(new Runnable() { | |
700 @Override | |
701 public void run() { | |
702 showButtonsBar(); | |
703 } | |
704 }, SHOW_HIDE_BUTTONS_BAR_DELAY_IN_MILLS, TimeUnit.MILLISECONDS); | |
705 } | |
706 } else { | |
707 cancelShowExecutor(); | |
708 } | |
709 if (buttonsBar.isVisible && mousePoint.y <= buttonsBar.getHeight()) { | |
710 cancelHideExecutor(); | |
711 } | |
712 if (buttonsBar.isVisible && mousePoint.y > buttonsBar.getHeight()) { | |
713 // hide buttons bar after delay | |
714 if (null == futureForHide || futureForHide.isDone()) { | |
715 futureForHide = scheduler.schedule(new Runnable() { | |
716 @Override | |
717 public void run() { | |
718 SwingUtilities.invokeLater(new Runnable() { | |
719 @Override | |
720 public void run() { | |
721 setButtonsBarVisibleFS(false); | |
722 SwingViewerWindow.this.frame.validate(); | |
723 } | |
724 }); | |
725 } | |
726 }, SHOW_HIDE_BUTTONS_BAR_DELAY_IN_MILLS, TimeUnit.MILLISECONDS); | |
727 } | |
728 } | |
729 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
730 |
314 | 731 private void cancelHideExecutor() { |
732 cancelExecutor(futureForHide); | |
733 } | |
734 private void cancelShowExecutor() { | |
735 cancelExecutor(futureForShow); | |
736 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
737 |
314 | 738 private void cancelExecutor(ScheduledFuture<?> future) { |
739 if (future != null && ! future.isDone()) { | |
740 future.cancel(true); | |
741 } | |
742 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
743 |
314 | 744 private void makeScrolling(final Point viewPosition) { |
745 SwingUtilities.invokeLater(new Runnable() { | |
746 @Override | |
747 public void run() { | |
748 scroller.getViewport().setViewPosition(viewPosition); | |
749 final Point mousePosition = surface.getMousePosition(); | |
750 if (mousePosition != null) { | |
751 final MouseEvent mouseEvent = new MouseEvent(frame, 0, 0, 0, | |
752 mousePosition.x, mousePosition.y, 0, false); | |
753 for (MouseMotionListener mml : surface.getMouseMotionListeners()) { | |
754 mml.mouseMoved(mouseEvent); | |
755 } | |
756 } | |
757 } | |
758 }); | |
759 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
760 |
314 | 761 private void showButtonsBar() { |
762 SwingUtilities.invokeLater(new Runnable() { | |
763 @Override | |
764 public void run() { | |
765 setButtonsBarVisibleFS(true); | |
766 } | |
767 }); | |
768 } | |
769 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
770 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
771 protected void createButtonsPanel(final ProtocolContext context, Container container) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
772 final SwingViewerWindow.ButtonsBar buttonsBar = createButtonsBar(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
773 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
774 buttonsBar.createButton("options", "Set Options", new ActionListener() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
775 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
776 public void actionPerformed(ActionEvent e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
777 showOptionsDialog(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
778 setSurfaceToHandleKbdFocus(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
779 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
780 }); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
781 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
782 buttonsBar.createButton("info", "Show connection info", new ActionListener() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
783 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
784 public void actionPerformed(ActionEvent e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
785 showConnectionInfoMessage(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
786 setSurfaceToHandleKbdFocus(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
787 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
788 }); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
789 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
790 buttonsBar.createStrut(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
791 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
792 buttonsBar.createButton("refresh", "Refresh screen", new ActionListener() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
793 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
794 public void actionPerformed(ActionEvent e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
795 context.sendRefreshMessage(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
796 setSurfaceToHandleKbdFocus(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
797 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
798 }); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
799 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
800 addZoomButtons(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
801 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
802 kbdButtons = new LinkedList<JComponent>(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
803 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
804 buttonsBar.createStrut(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
805 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
806 JButton ctrlAltDelButton = buttonsBar.createButton("ctrl-alt-del", "Send 'Ctrl-Alt-Del'", new ActionListener() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
807 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
808 public void actionPerformed(ActionEvent e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
809 sendCtrlAltDel(context); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
810 setSurfaceToHandleKbdFocus(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
811 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
812 }); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
813 kbdButtons.add(ctrlAltDelButton); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
814 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
815 JButton winButton = buttonsBar.createButton("win", "Send 'Win' key as 'Ctrl-Esc'", new ActionListener() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
816 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
817 public void actionPerformed(ActionEvent e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
818 sendWinKey(context); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
819 setSurfaceToHandleKbdFocus(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
820 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
821 }); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
822 kbdButtons.add(winButton); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
823 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
824 JToggleButton ctrlButton = buttonsBar.createToggleButton("ctrl", "Ctrl Lock", |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
825 new ItemListener() { |
314 | 826 @Override |
827 public void itemStateChanged(ItemEvent e) { | |
828 if (e.getStateChange() == ItemEvent.SELECTED) { | |
829 context.sendMessage(new KeyEventMessage(Keymap.K_CTRL_LEFT, true)); | |
830 } else { | |
831 context.sendMessage(new KeyEventMessage(Keymap.K_CTRL_LEFT, false)); | |
832 } | |
833 setSurfaceToHandleKbdFocus(); | |
834 } | |
835 }); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
836 kbdButtons.add(ctrlButton); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
837 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
838 JToggleButton altButton = buttonsBar.createToggleButton("alt", "Alt Lock", |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
839 new ItemListener() { |
314 | 840 @Override |
841 public void itemStateChanged(ItemEvent e) { | |
842 if (e.getStateChange() == ItemEvent.SELECTED) { | |
843 context.sendMessage(new KeyEventMessage(Keymap.K_ALT_LEFT, true)); | |
844 } else { | |
845 context.sendMessage(new KeyEventMessage(Keymap.K_ALT_LEFT, false)); | |
846 } | |
847 setSurfaceToHandleKbdFocus(); | |
848 } | |
849 }); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
850 kbdButtons.add(altButton); |
107 | 851 |
72 | 852 JButton screenButton = buttonsBar.createButton("share", "Share my screen", new ActionListener() { |
314 | 853 @Override |
854 public void actionPerformed(ActionEvent e) { | |
322 | 855 viewer.setVisible(false); |
301 | 856 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); |
278 | 857 int leftScreenNumber = 0; |
301 | 858 int singleWidth = (int) rectangles.get(leftScreenNumber).getWidth(); |
859 int singleHeight = (int) rectangles.get(leftScreenNumber).getHeight(); | |
306 | 860 viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); |
292 | 861 if (viewer.getRfb().isTreeManager()) { |
301 | 862 changeVncServer(viewer, singleWidth, singleHeight, viewer.getRfb().getId()); |
292 | 863 return; |
864 } | |
113
bce2ef0a2e79
use ProtocolContext.sendMessage for upward command
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
110
diff
changeset
|
865 String adr = viewer.getRfb().getMyAddress(); |
301 | 866 context.sendMessage(new ScreenChangeRequest(adr, viewer.getRfb().getId(), singleWidth, singleHeight)); |
284 | 867 } |
61
d9cf08c6415c
During implementation change screen.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
57
diff
changeset
|
868 }); |
d9cf08c6415c
During implementation change screen.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
57
diff
changeset
|
869 kbdButtons.add(screenButton); |
107 | 870 |
288 | 871 final JButton adjustHdSizeButton = buttonsBar.createButton("adjust-hd", "Adjust Hd Size", new ActionListener() { |
280
9c5874d0f37e
fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents:
279
diff
changeset
|
872 @Override |
9c5874d0f37e
fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents:
279
diff
changeset
|
873 public void actionPerformed(ActionEvent e) { |
314 | 874 // adjustHdSizeButton.setSelected(false); |
306 | 875 int singleWidth = viewer.getRfb().getSingleWidth(); |
876 uiSettings.adjustHdSize(singleWidth); | |
280
9c5874d0f37e
fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents:
279
diff
changeset
|
877 } |
9c5874d0f37e
fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents:
279
diff
changeset
|
878 }); |
9c5874d0f37e
fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents:
279
diff
changeset
|
879 kbdButtons.add(adjustHdSizeButton); |
9c5874d0f37e
fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
oc
parents:
279
diff
changeset
|
880 |
309 | 881 final JButton fitScreenButton = buttonsBar.createButton("fit-screen", "Fit Screen", new ActionListener() { |
882 @Override | |
883 public void actionPerformed(ActionEvent e) { | |
884 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); | |
885 int leftScreenNumber = 0; | |
886 int thisScreenWidth = (int) rectangles.get(leftScreenNumber).getWidth(); | |
887 int thisScreenHeight = (int) rectangles.get(leftScreenNumber).getHeight(); | |
888 | |
889 int singleWidth = viewer.getRfb().getSingleWidth(); | |
890 int singleHeight = viewer.getRfb().getSingleHeight(); | |
310 | 891 if (!viewer.getRfb().isTreeManager()) { |
320 | 892 context.sendMessage(new RequestSingleDisplaySize()); |
309 | 893 } |
312 | 894 frame.setSize(thisScreenWidth, thisScreenHeight); |
317 | 895 uiSettings.fitScreen(thisScreenWidth, thisScreenHeight, singleWidth, singleHeight); |
309 | 896 } |
897 }); | |
898 kbdButtons.add(fitScreenButton); | |
899 | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
900 ModifierButtonEventListener modifierButtonListener = new ModifierButtonEventListener(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
901 modifierButtonListener.addButton(KeyEvent.VK_CONTROL, ctrlButton); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
902 modifierButtonListener.addButton(KeyEvent.VK_ALT, altButton); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
903 surface.addModifierListener(modifierButtonListener); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
904 |
314 | 905 // JButton fileTransferButton = new JButton(Utils.getButtonIcon("file-transfer")); |
906 // fileTransferButton.setMargin(buttonsMargin); | |
907 // buttonBar.add(fileTransferButton); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
908 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
909 buttonsBar.createStrut(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
910 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
911 buttonsBar.createButton("close", isApplet ? "Disconnect" : "Close", new ActionListener() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
912 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
913 public void actionPerformed(ActionEvent e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
914 if (frame != null) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
915 frame.setVisible(false); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
916 frame.dispose(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
917 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
918 presenter.setNeedReconnection(false); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
919 presenter.cancelConnection(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
920 viewer.closeApp(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
921 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
922 }).setAlignmentX(JComponent.RIGHT_ALIGNMENT); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
923 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
924 setButtonsBarVisible(true, container); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
925 } |
317 | 926 |
927 public void fitScreen() { | |
928 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); | |
929 int leftScreenNumber = 0; | |
930 int thisScreenWidth = (int) rectangles.get(leftScreenNumber).getWidth(); | |
931 int thisScreenHeight = (int) rectangles.get(leftScreenNumber).getHeight(); | |
932 | |
933 int singleWidth = viewer.getRfb().getSingleWidth(); | |
934 int singleHeight = viewer.getRfb().getSingleHeight(); | |
935 frame.setSize(thisScreenWidth, thisScreenHeight); | |
936 uiSettings.fitScreen(thisScreenWidth, thisScreenHeight, singleWidth, singleHeight); | |
937 } | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
938 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
939 private void sendCtrlAltDel(ProtocolContext context) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
940 context.sendMessage(new KeyEventMessage(Keymap.K_CTRL_LEFT, true)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
941 context.sendMessage(new KeyEventMessage(Keymap.K_ALT_LEFT, true)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
942 context.sendMessage(new KeyEventMessage(Keymap.K_DELETE, true)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
943 context.sendMessage(new KeyEventMessage(Keymap.K_DELETE, false)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
944 context.sendMessage(new KeyEventMessage(Keymap.K_ALT_LEFT, false)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
945 context.sendMessage(new KeyEventMessage(Keymap.K_CTRL_LEFT, false)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
946 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
947 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
948 private void sendWinKey(ProtocolContext context) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
949 context.sendMessage(new KeyEventMessage(Keymap.K_CTRL_LEFT, true)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
950 context.sendMessage(new KeyEventMessage(Keymap.K_ESCAPE, true)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
951 context.sendMessage(new KeyEventMessage(Keymap.K_ESCAPE, false)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
952 context.sendMessage(new KeyEventMessage(Keymap.K_CTRL_LEFT, false)); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
953 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
954 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
955 @Override |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
956 public void settingsChanged(SettingsChangedEvent e) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
957 if (ProtocolSettings.isRfbSettingsChangedFired(e)) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
958 ProtocolSettings settings = (ProtocolSettings) e.getSource(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
959 setEnabledKbdButtons( ! settings.isViewOnly()); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
960 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
961 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
962 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
963 private void setEnabledKbdButtons(boolean enabled) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
964 if (kbdButtons != null) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
965 for (JComponent b : kbdButtons) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
966 b.setEnabled(enabled); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
967 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
968 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
969 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
970 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
971 private void showOptionsDialog() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
972 OptionsDialog optionsDialog = new OptionsDialog(frame); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
973 optionsDialog.initControlsFromSettings(rfbSettings, uiSettings, false); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
974 optionsDialog.setVisible(true); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
975 presenter.saveHistory(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
976 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
977 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
978 private void showConnectionInfoMessage() { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
979 StringBuilder message = new StringBuilder(); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
980 message.append("TightVNC Viewer v.").append(Viewer.ver()).append("\n\n"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
981 message.append("Connected to: ").append(remoteDesktopName).append("\n"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
982 message.append("Host: ").append(connectionString).append("\n\n"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
983 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
984 message.append("Desktop geometry: ") |
314 | 985 .append(String.valueOf(surface.getWidth())) |
986 .append(" \u00D7 ") // multiplication sign | |
987 .append(String.valueOf(surface.getHeight())).append("\n"); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
988 message.append("Color format: ") |
314 | 989 .append(String.valueOf(Math.round(Math.pow(2, workingProtocol.getPixelFormat().depth)))) |
990 .append(" colors (") | |
991 .append(String.valueOf(workingProtocol.getPixelFormat().depth)) | |
992 .append(" bits)\n"); | |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
993 message.append("Current protocol version: ") |
314 | 994 .append(workingProtocol.getProtocolVersion()); |
57
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
995 if (workingProtocol.isTight()) { |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
996 message.append("tight"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
997 } |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
998 message.append("\n"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
999 |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1000 JOptionPane infoPane = new JOptionPane(message.toString(), JOptionPane.INFORMATION_MESSAGE); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1001 final JDialog infoDialog = infoPane.createDialog(frame, "VNC connection info"); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1002 infoDialog.setModalityType(Dialog.ModalityType.MODELESS); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1003 infoDialog.setVisible(true); |
17b702648079
version2.7.2 original version.
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1004 } |
169 | 1005 |
314 | 1006 public void setVisible(boolean b) { |
1007 frame.setVisible(b); | |
1008 } | |
292 | 1009 |
1010 private void changeVncServer(ViewerInterface viewer, int width, int height, short id) { | |
1011 String localhost = "127.0.0.1"; | |
1012 try { | |
1013 viewer.getRfb().changeVNCServer(viewer, localhost, width, height, id); | |
1014 } catch (Exception e1) { | |
1015 System.out.println("can't change server :" + e1.getMessage()); | |
1016 } | |
1017 } | |
1018 | |
313 | 1019 } |