annotate src/viewer_swing/java/com/glavsoft/viewer/swing/gui/ConnectionView.java @ 0:daa24f8a557b

TightVNC original
author YU
date Thu, 11 Sep 2014 07:30:03 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
daa24f8a557b TightVNC original
YU
parents:
diff changeset
1 // Copyright (C) 2010, 2011, 2012, 2013 GlavSoft LLC.
daa24f8a557b TightVNC original
YU
parents:
diff changeset
2 // All rights reserved.
daa24f8a557b TightVNC original
YU
parents:
diff changeset
3 //
daa24f8a557b TightVNC original
YU
parents:
diff changeset
4 //-------------------------------------------------------------------------
daa24f8a557b TightVNC original
YU
parents:
diff changeset
5 // This file is part of the TightVNC software. Please visit our Web site:
daa24f8a557b TightVNC original
YU
parents:
diff changeset
6 //
daa24f8a557b TightVNC original
YU
parents:
diff changeset
7 // http://www.tightvnc.com/
daa24f8a557b TightVNC original
YU
parents:
diff changeset
8 //
daa24f8a557b TightVNC original
YU
parents:
diff changeset
9 // This program is free software; you can redistribute it and/or modify
daa24f8a557b TightVNC original
YU
parents:
diff changeset
10 // it under the terms of the GNU General Public License as published by
daa24f8a557b TightVNC original
YU
parents:
diff changeset
11 // the Free Software Foundation; either version 2 of the License, or
daa24f8a557b TightVNC original
YU
parents:
diff changeset
12 // (at your option) any later version.
daa24f8a557b TightVNC original
YU
parents:
diff changeset
13 //
daa24f8a557b TightVNC original
YU
parents:
diff changeset
14 // This program is distributed in the hope that it will be useful,
daa24f8a557b TightVNC original
YU
parents:
diff changeset
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
daa24f8a557b TightVNC original
YU
parents:
diff changeset
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
daa24f8a557b TightVNC original
YU
parents:
diff changeset
17 // GNU General Public License for more details.
daa24f8a557b TightVNC original
YU
parents:
diff changeset
18 //
daa24f8a557b TightVNC original
YU
parents:
diff changeset
19 // You should have received a copy of the GNU General Public License along
daa24f8a557b TightVNC original
YU
parents:
diff changeset
20 // with this program; if not, write to the Free Software Foundation, Inc.,
daa24f8a557b TightVNC original
YU
parents:
diff changeset
21 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
daa24f8a557b TightVNC original
YU
parents:
diff changeset
22 //-------------------------------------------------------------------------
daa24f8a557b TightVNC original
YU
parents:
diff changeset
23 //
daa24f8a557b TightVNC original
YU
parents:
diff changeset
24
daa24f8a557b TightVNC original
YU
parents:
diff changeset
25 package com.glavsoft.viewer.swing.gui;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
26
daa24f8a557b TightVNC original
YU
parents:
diff changeset
27 import com.glavsoft.viewer.mvp.View;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
28 import com.glavsoft.viewer.swing.ConnectionParams;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
29 import com.glavsoft.viewer.ConnectionPresenter;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
30 import com.glavsoft.viewer.swing.Utils;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
31 import com.glavsoft.viewer.swing.WrongParameterException;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
32
daa24f8a557b TightVNC original
YU
parents:
diff changeset
33 import javax.swing.*;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
34 import javax.swing.border.Border;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
35 import javax.swing.border.EmptyBorder;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
36 import java.awt.*;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
37 import java.awt.event.*;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
38 import java.util.LinkedList;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
39
daa24f8a557b TightVNC original
YU
parents:
diff changeset
40 /**
daa24f8a557b TightVNC original
YU
parents:
diff changeset
41 * Dialog window for connection parameters get from.
daa24f8a557b TightVNC original
YU
parents:
diff changeset
42 */
daa24f8a557b TightVNC original
YU
parents:
diff changeset
43 @SuppressWarnings("serial")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
44 public class ConnectionView extends JPanel implements View {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
45 private static final int PADDING = 4;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
46 public static final int COLUMNS_HOST_FIELD = 30;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
47 public static final int COLUMNS_PORT_USER_FIELD = 13;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
48 public static final String CLOSE = "Close";
daa24f8a557b TightVNC original
YU
parents:
diff changeset
49 public static final String CANCEL = "Cancel";
daa24f8a557b TightVNC original
YU
parents:
diff changeset
50 private WindowListener appWindowListener;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
51 private final boolean hasSshSupport;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
52 private final JTextField serverPortField;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
53 private JCheckBox useSshTunnelingCheckbox;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
54 private final JComboBox serverNameCombo;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
55 private JTextField sshUserField;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
56 private JTextField sshHostField;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
57 private JTextField sshPortField;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
58 private JLabel sshUserLabel;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
59 private JLabel sshHostLabel;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
60 private JLabel sshPortLabel;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
61 private JLabel ssUserWarningLabel;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
62 private JButton clearHistoryButton;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
63 private JButton connectButton;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
64 private final JFrame view;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
65 private final ConnectionPresenter presenter;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
66 private final StatusBar statusBar;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
67 private boolean connectionInProgress;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
68 private JButton closeCancelButton;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
69
daa24f8a557b TightVNC original
YU
parents:
diff changeset
70 public ConnectionView(final WindowListener appWindowListener,
daa24f8a557b TightVNC original
YU
parents:
diff changeset
71 final ConnectionPresenter presenter, boolean useSsh) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
72 this.appWindowListener = appWindowListener;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
73 this.hasSshSupport = useSsh;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
74 this.presenter = presenter;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
75
daa24f8a557b TightVNC original
YU
parents:
diff changeset
76 setLayout(new BorderLayout(0, 0));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
77 JPanel optionsPane = new JPanel(new GridBagLayout());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
78 add(optionsPane, BorderLayout.CENTER);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
79 optionsPane.setBorder(new EmptyBorder(PADDING, PADDING, PADDING, PADDING));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
80
daa24f8a557b TightVNC original
YU
parents:
diff changeset
81 setLayout(new GridBagLayout());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
82
daa24f8a557b TightVNC original
YU
parents:
diff changeset
83 int gridRow = 0;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
84
daa24f8a557b TightVNC original
YU
parents:
diff changeset
85 serverNameCombo = new JComboBox();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
86 initConnectionsHistoryCombo();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
87 serverNameCombo.addItemListener(new ItemListener() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
88 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
89 public void itemStateChanged(ItemEvent e) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
90 Object item = serverNameCombo.getSelectedItem();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
91 if (item instanceof ConnectionParams) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
92 presenter.populateFromHistoryItem((ConnectionParams) item);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
93 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
94 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
95 });
daa24f8a557b TightVNC original
YU
parents:
diff changeset
96
daa24f8a557b TightVNC original
YU
parents:
diff changeset
97 addFormFieldRow(optionsPane, gridRow, new JLabel("Remote Host:"), serverNameCombo, true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
98 ++gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
99
daa24f8a557b TightVNC original
YU
parents:
diff changeset
100 serverPortField = new JTextField(COLUMNS_PORT_USER_FIELD);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
101
daa24f8a557b TightVNC original
YU
parents:
diff changeset
102 addFormFieldRow(optionsPane, gridRow, new JLabel("Port:"), serverPortField, false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
103 ++gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
104
daa24f8a557b TightVNC original
YU
parents:
diff changeset
105 if (this.hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
106 gridRow = createSshOptions(optionsPane, gridRow);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
107 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
108
daa24f8a557b TightVNC original
YU
parents:
diff changeset
109 JPanel buttonPanel = createButtons();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
110
daa24f8a557b TightVNC original
YU
parents:
diff changeset
111 GridBagConstraints cButtons = new GridBagConstraints();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
112 cButtons.gridx = 0; cButtons.gridy = gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
113 cButtons.weightx = 100; cButtons.weighty = 100;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
114 cButtons.gridwidth = 2; cButtons.gridheight = 1;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
115 optionsPane.add(buttonPanel, cButtons);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
116
daa24f8a557b TightVNC original
YU
parents:
diff changeset
117 view = new JFrame("New TightVNC Connection");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
118 view.add(this, BorderLayout.CENTER);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
119 statusBar = new StatusBar();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
120 view.add(statusBar, BorderLayout.SOUTH);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
121
daa24f8a557b TightVNC original
YU
parents:
diff changeset
122 view.getRootPane().setDefaultButton(connectButton);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
123 view.addWindowListener(appWindowListener);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
124 // view.setResizable(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
125 Utils.decorateDialog(view);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
126 Utils.centerWindow(view);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
127 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
128
daa24f8a557b TightVNC original
YU
parents:
diff changeset
129 private void initConnectionsHistoryCombo() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
130 serverNameCombo.setEditable(true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
131
daa24f8a557b TightVNC original
YU
parents:
diff changeset
132 new AutoCompletionComboEditorDocument(serverNameCombo); // use autocompletion feature for ComboBox
daa24f8a557b TightVNC original
YU
parents:
diff changeset
133 serverNameCombo.setRenderer(new HostnameComboboxRenderer());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
134
daa24f8a557b TightVNC original
YU
parents:
diff changeset
135 ConnectionParams prototypeDisplayValue = new ConnectionParams();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
136 prototypeDisplayValue.hostName = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXЧЧ";
daa24f8a557b TightVNC original
YU
parents:
diff changeset
137 serverNameCombo.setPrototypeDisplayValue(prototypeDisplayValue);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
138 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
139
daa24f8a557b TightVNC original
YU
parents:
diff changeset
140 public void showReconnectDialog(final String title, final String message) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
141 JOptionPane reconnectPane = new JOptionPane(message + "\nTry another connection?",
daa24f8a557b TightVNC original
YU
parents:
diff changeset
142 JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
143 final JDialog reconnectDialog = reconnectPane.createDialog(ConnectionView.this, title);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
144 Utils.decorateDialog(reconnectDialog);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
145 reconnectDialog.setVisible(true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
146 if (reconnectPane.getValue() == null ||
daa24f8a557b TightVNC original
YU
parents:
diff changeset
147 (Integer)reconnectPane.getValue() == JOptionPane.NO_OPTION) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
148 presenter.setNeedReconnection(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
149 closeView();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
150 view.dispose();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
151 closeApp();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
152 } else {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
153 // TODO return when allowInteractive, close window otherwise
daa24f8a557b TightVNC original
YU
parents:
diff changeset
154 // forceConnectionDialog = allowInteractive;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
155 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
156 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
157
daa24f8a557b TightVNC original
YU
parents:
diff changeset
158 public void setConnectionInProgress(boolean enable) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
159 if (enable) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
160 connectionInProgress = true;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
161 closeCancelButton.setText(CANCEL);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
162 connectButton.setEnabled(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
163 } else {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
164 connectionInProgress = false;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
165 closeCancelButton.setText(CLOSE);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
166 connectButton.setEnabled(true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
167 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
168 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
169
daa24f8a557b TightVNC original
YU
parents:
diff changeset
170 private JPanel createButtons() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
171 JPanel buttonPanel = new JPanel();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
172
daa24f8a557b TightVNC original
YU
parents:
diff changeset
173 closeCancelButton = new JButton(CLOSE);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
174 closeCancelButton.addActionListener(new ActionListener() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
175 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
176 public void actionPerformed(ActionEvent e) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
177 if (connectionInProgress) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
178 presenter.cancelConnection();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
179 setConnectionInProgress(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
180 } else {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
181 closeView();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
182 closeApp();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
183 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
184 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
185 });
daa24f8a557b TightVNC original
YU
parents:
diff changeset
186
daa24f8a557b TightVNC original
YU
parents:
diff changeset
187 connectButton = new JButton("Connect");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
188 buttonPanel.add(connectButton);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
189 connectButton.addActionListener(new ActionListener() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
190 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
191 public void actionPerformed(ActionEvent e) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
192 setMessage("");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
193 Object item = serverNameCombo.getSelectedItem();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
194 String hostName = item instanceof ConnectionParams ?
daa24f8a557b TightVNC original
YU
parents:
diff changeset
195 ((ConnectionParams) item).hostName :
daa24f8a557b TightVNC original
YU
parents:
diff changeset
196 (String) item;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
197 try {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
198 setConnectionInProgress(true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
199 presenter.submitConnection(hostName);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
200 } catch (WrongParameterException wpe) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
201 if (ConnectionPresenter.PROPERTY_HOST_NAME.equals(wpe.getPropertyName())) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
202 serverNameCombo.requestFocusInWindow();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
203 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
204 if (ConnectionPresenter.PROPERTY_RFB_PORT_NUMBER.equals(wpe.getPropertyName())) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
205 serverPortField.requestFocusInWindow();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
206 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
207 showConnectionErrorDialog(wpe.getMessage());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
208 setConnectionInProgress(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
209 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
210 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
211 });
daa24f8a557b TightVNC original
YU
parents:
diff changeset
212
daa24f8a557b TightVNC original
YU
parents:
diff changeset
213 JButton optionsButton = new JButton("Options...");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
214 buttonPanel.add(optionsButton);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
215 optionsButton.addActionListener(new ActionListener() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
216 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
217 public void actionPerformed(ActionEvent e) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
218 OptionsDialog od = new OptionsDialog(view);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
219 od.initControlsFromSettings(presenter.getRfbSettings(), presenter.getUiSettings(), true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
220 od.setVisible(true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
221 view.toFront();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
222 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
223 });
daa24f8a557b TightVNC original
YU
parents:
diff changeset
224
daa24f8a557b TightVNC original
YU
parents:
diff changeset
225 clearHistoryButton = new JButton("Clear history");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
226 clearHistoryButton.setToolTipText("Clear connections history");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
227 buttonPanel.add(clearHistoryButton);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
228 clearHistoryButton.addActionListener(new ActionListener() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
229 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
230 public void actionPerformed(ActionEvent e) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
231 presenter.clearHistory();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
232 clearHistoryButton.setEnabled(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
233 view.toFront();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
234 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
235 });
daa24f8a557b TightVNC original
YU
parents:
diff changeset
236 buttonPanel.add(closeCancelButton);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
237 return buttonPanel;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
238 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
239
daa24f8a557b TightVNC original
YU
parents:
diff changeset
240 private int createSshOptions(JPanel pane, int gridRow) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
241 GridBagConstraints cUseSshTunnelLabel = new GridBagConstraints();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
242 cUseSshTunnelLabel.gridx = 0; cUseSshTunnelLabel.gridy = gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
243 cUseSshTunnelLabel.weightx = 100; cUseSshTunnelLabel.weighty = 100;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
244 cUseSshTunnelLabel.gridwidth = 2; cUseSshTunnelLabel.gridheight = 1;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
245 cUseSshTunnelLabel.anchor = GridBagConstraints.LINE_START;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
246 cUseSshTunnelLabel.ipadx = PADDING;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
247 cUseSshTunnelLabel.ipady = 10;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
248 useSshTunnelingCheckbox = new JCheckBox("Use SSH tunneling");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
249 pane.add(useSshTunnelingCheckbox, cUseSshTunnelLabel);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
250 ++gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
251
daa24f8a557b TightVNC original
YU
parents:
diff changeset
252 sshHostLabel = new JLabel("SSH Server:");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
253 sshHostField = new JTextField(COLUMNS_HOST_FIELD);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
254 addFormFieldRow(pane, gridRow, sshHostLabel, sshHostField, true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
255 ++gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
256
daa24f8a557b TightVNC original
YU
parents:
diff changeset
257 sshPortLabel = new JLabel("SSH Port:");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
258 sshPortField = new JTextField(COLUMNS_PORT_USER_FIELD);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
259 addFormFieldRow(pane, gridRow, sshPortLabel, sshPortField, false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
260 ++gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
261
daa24f8a557b TightVNC original
YU
parents:
diff changeset
262 sshUserLabel = new JLabel("SSH User:");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
263 sshUserField = new JTextField(COLUMNS_PORT_USER_FIELD);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
264 JPanel sshUserFieldPane = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
265 sshUserFieldPane.add(sshUserField);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
266 ssUserWarningLabel = new JLabel(" (will be asked if not specified)");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
267 sshUserFieldPane.add(ssUserWarningLabel);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
268 addFormFieldRow(pane, gridRow, sshUserLabel, sshUserFieldPane, false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
269 ++gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
270
daa24f8a557b TightVNC original
YU
parents:
diff changeset
271 useSshTunnelingCheckbox.addItemListener(new ItemListener() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
272 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
273 public void itemStateChanged(ItemEvent e) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
274 final boolean useSsh = e.getStateChange() == ItemEvent.SELECTED;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
275 setUseSsh(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
276 presenter.setUseSsh(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
277 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
278 });
daa24f8a557b TightVNC original
YU
parents:
diff changeset
279
daa24f8a557b TightVNC original
YU
parents:
diff changeset
280 return gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
281 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
282
daa24f8a557b TightVNC original
YU
parents:
diff changeset
283 private void addFormFieldRow(JPanel pane, int gridRow, JLabel label, JComponent field, boolean fill) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
284 GridBagConstraints cLabel = new GridBagConstraints();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
285 cLabel.gridx = 0; cLabel.gridy = gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
286 cLabel.weightx = 0;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
287 cLabel.weighty = 100;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
288 cLabel.gridwidth = cLabel.gridheight = 1;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
289 cLabel.anchor = GridBagConstraints.LINE_END;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
290 cLabel.ipadx = PADDING;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
291 cLabel.ipady = 10;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
292 pane.add(label, cLabel);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
293
daa24f8a557b TightVNC original
YU
parents:
diff changeset
294 GridBagConstraints cField = new GridBagConstraints();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
295 cField.gridx = 1; cField.gridy = gridRow;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
296 cField.weightx = 0; cField.weighty = 100;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
297 cField.gridwidth = cField.gridheight = 1;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
298 cField.anchor = GridBagConstraints.LINE_START;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
299 if (fill) cField.fill = GridBagConstraints.HORIZONTAL;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
300 pane.add(field, cField);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
301 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
302
daa24f8a557b TightVNC original
YU
parents:
diff changeset
303 /*
daa24f8a557b TightVNC original
YU
parents:
diff changeset
304 * Implicit View interface
daa24f8a557b TightVNC original
YU
parents:
diff changeset
305 */
daa24f8a557b TightVNC original
YU
parents:
diff changeset
306 public void setMessage(String message) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
307 statusBar.setMessage(message);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
308 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
309
daa24f8a557b TightVNC original
YU
parents:
diff changeset
310 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
311 public void setPortNumber(int portNumber) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
312 serverPortField.setText(String.valueOf(portNumber));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
313 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
314
daa24f8a557b TightVNC original
YU
parents:
diff changeset
315 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
316 public String getPortNumber() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
317 return serverPortField.getText();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
318 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
319
daa24f8a557b TightVNC original
YU
parents:
diff changeset
320 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
321 public void setSshHostName(String sshHostName) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
322 if (hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
323 sshHostField.setText(sshHostName);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
324 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
325 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
326
daa24f8a557b TightVNC original
YU
parents:
diff changeset
327 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
328 public String getSshHostName() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
329 if (hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
330 return sshHostField.getText();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
331 } else { return ""; }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
332 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
333
daa24f8a557b TightVNC original
YU
parents:
diff changeset
334 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
335 public void setSshPortNumber(int sshPortNumber) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
336 if (hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
337 sshPortField.setText(String.valueOf(sshPortNumber));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
338 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
339 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
340
daa24f8a557b TightVNC original
YU
parents:
diff changeset
341 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
342 public String getSshPortNumber() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
343 if (hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
344 return sshPortField.getText();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
345 } else { return ""; }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
346 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
347
daa24f8a557b TightVNC original
YU
parents:
diff changeset
348 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
349 public void setSshUserName(String sshUserName) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
350 if (hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
351 sshUserField.setText(sshUserName);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
352 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
353 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
354
daa24f8a557b TightVNC original
YU
parents:
diff changeset
355 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
356 public String getSshUserName() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
357 if (hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
358 return sshUserField.getText();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
359 } else { return ""; }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
360 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
361
daa24f8a557b TightVNC original
YU
parents:
diff changeset
362 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
363 public void setUseSsh(boolean useSsh) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
364 if (hasSshSupport) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
365 useSshTunnelingCheckbox.setSelected(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
366 sshUserLabel.setEnabled(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
367 sshUserField.setEnabled(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
368 ssUserWarningLabel.setEnabled(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
369 sshHostLabel.setEnabled(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
370 sshHostField.setEnabled(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
371 sshPortLabel.setEnabled(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
372 sshPortField.setEnabled(useSsh);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
373 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
374 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
375
daa24f8a557b TightVNC original
YU
parents:
diff changeset
376 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
377 public boolean getUseSsh() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
378 return useSshTunnelingCheckbox.isSelected();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
379 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
380
daa24f8a557b TightVNC original
YU
parents:
diff changeset
381 @SuppressWarnings("UnusedDeclaration")
daa24f8a557b TightVNC original
YU
parents:
diff changeset
382 public void setConnectionsList(LinkedList<ConnectionParams> connections) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
383 serverNameCombo.removeAllItems();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
384 for (ConnectionParams cp : connections) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
385 serverNameCombo.addItem(new ConnectionParams(cp));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
386 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
387 serverNameCombo.setPopupVisible(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
388 clearHistoryButton.setEnabled(serverNameCombo.getItemCount() > 0);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
389 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
390 /*
daa24f8a557b TightVNC original
YU
parents:
diff changeset
391 * /Implicit View interface
daa24f8a557b TightVNC original
YU
parents:
diff changeset
392 */
daa24f8a557b TightVNC original
YU
parents:
diff changeset
393
daa24f8a557b TightVNC original
YU
parents:
diff changeset
394 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
395 public void showView() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
396 view.setVisible(true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
397 view.toFront();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
398 view.repaint();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
399 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
400
daa24f8a557b TightVNC original
YU
parents:
diff changeset
401 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
402 public void closeView() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
403 view.setVisible(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
404 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
405
daa24f8a557b TightVNC original
YU
parents:
diff changeset
406 public void showConnectionErrorDialog(final String message) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
407 JOptionPane errorPane = new JOptionPane(message, JOptionPane.ERROR_MESSAGE);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
408 final JDialog errorDialog = errorPane.createDialog(view, "Connection error");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
409 Utils.decorateDialog(errorDialog);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
410 errorDialog.setVisible(true);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
411 if ( ! presenter.allowInteractive()) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
412 presenter.cancelConnection();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
413 closeApp();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
414 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
415 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
416
daa24f8a557b TightVNC original
YU
parents:
diff changeset
417 public void closeApp() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
418 appWindowListener.windowClosing(null);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
419 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
420
daa24f8a557b TightVNC original
YU
parents:
diff changeset
421 public JFrame getFrame() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
422 return view;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
423 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
424
daa24f8a557b TightVNC original
YU
parents:
diff changeset
425 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
426
daa24f8a557b TightVNC original
YU
parents:
diff changeset
427 class StatusBar extends JPanel {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
428
daa24f8a557b TightVNC original
YU
parents:
diff changeset
429 private JLabel messageLabel;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
430
daa24f8a557b TightVNC original
YU
parents:
diff changeset
431 public StatusBar() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
432 setLayout(new BorderLayout());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
433 setPreferredSize(new Dimension(10, 23));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
434
daa24f8a557b TightVNC original
YU
parents:
diff changeset
435 messageLabel = new JLabel("");
daa24f8a557b TightVNC original
YU
parents:
diff changeset
436 final Font f = messageLabel.getFont();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
437 messageLabel.setFont(f.deriveFont(f.getStyle() & ~Font.BOLD));
daa24f8a557b TightVNC original
YU
parents:
diff changeset
438 add(messageLabel, BorderLayout.CENTER);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
439
daa24f8a557b TightVNC original
YU
parents:
diff changeset
440 JPanel rightPanel = new JPanel(new BorderLayout());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
441 rightPanel.setOpaque(false);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
442
daa24f8a557b TightVNC original
YU
parents:
diff changeset
443
daa24f8a557b TightVNC original
YU
parents:
diff changeset
444 add(rightPanel, BorderLayout.EAST);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
445 setBorder(new Border() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
446 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
447 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
448 Color oldColor = g.getColor();
daa24f8a557b TightVNC original
YU
parents:
diff changeset
449 g.translate(x, y);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
450 g.setColor(c.getBackground().darker());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
451 g.drawLine(0, 0, width -1, 0);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
452 g.setColor(c.getBackground().brighter());
daa24f8a557b TightVNC original
YU
parents:
diff changeset
453 g.drawLine(0, 1, width -1, 1);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
454 g.translate(-x, -y);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
455 g.setColor(oldColor);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
456 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
457 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
458 public Insets getBorderInsets(Component c) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
459 return new Insets(2, 2, 2, 2);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
460 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
461 @Override
daa24f8a557b TightVNC original
YU
parents:
diff changeset
462 public boolean isBorderOpaque() {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
463 return false;
daa24f8a557b TightVNC original
YU
parents:
diff changeset
464 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
465 });
daa24f8a557b TightVNC original
YU
parents:
diff changeset
466 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
467
daa24f8a557b TightVNC original
YU
parents:
diff changeset
468 public void setMessage(String message) {
daa24f8a557b TightVNC original
YU
parents:
diff changeset
469 messageLabel.setText(message);
daa24f8a557b TightVNC original
YU
parents:
diff changeset
470 }
daa24f8a557b TightVNC original
YU
parents:
diff changeset
471 }