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