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