annotate src/viewer_swing/java/com/glavsoft/viewer/ConnectionManager.java @ 2:dca3bd61b830

before change MyVncClient.java
author Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
date Mon, 09 Jul 2012 18:47:33 +0900
parents 4689cc86d6cb
children e7ce2b2ffed8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 // Copyright (C) 2010, 2011 GlavSoft LLC.
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 // All rights reserved.
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 //
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 //-------------------------------------------------------------------------
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 // This file is part of the TightVNC software. Please visit our Web site:
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 //
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 // http://www.tightvnc.com/
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 //
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 // This program is free software; you can redistribute it and/or modify
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 // it under the terms of the GNU General Public License as published by
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 // the Free Software Foundation; either version 2 of the License, or
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 // (at your option) any later version.
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 //
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 // This program is distributed in the hope that it will be useful,
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 // GNU General Public License for more details.
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 //
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 // You should have received a copy of the GNU General Public License along
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 // with this program; if not, write to the Free Software Foundation, Inc.,
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 //-------------------------------------------------------------------------
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 //
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 package com.glavsoft.viewer;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
2
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
27 import ac.ryukyu.treevnc.client.GetDataClient;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
28 import ac.ryukyu.treevnc.client.GetHostClient;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
29 import ac.ryukyu.treevnc.client.TextBoxClient;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
30
0
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 import com.glavsoft.rfb.protocol.ProtocolSettings;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 import com.glavsoft.viewer.swing.ParametersHandler;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 import com.glavsoft.viewer.swing.Utils;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 import com.glavsoft.viewer.swing.gui.ConnectionDialog;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 import javax.swing.*;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 import java.awt.*;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 import java.awt.event.WindowListener;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 import java.io.IOException;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 import java.io.Serializable;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 import java.net.Socket;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 import java.net.UnknownHostException;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 public class ConnectionManager implements Serializable {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 /**
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 *
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 */
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 private static final long serialVersionUID = 1L;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 private final WindowListener appWindowListener;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 volatile boolean forceConnectionDialog;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 private JFrame containerFrame;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 private final boolean isApplet;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 public ConnectionManager(WindowListener appWindowListener, boolean isApplet) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 this.appWindowListener = appWindowListener;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 this.isApplet = isApplet;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 public void showReconnectDialog(String title, String message) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 JOptionPane reconnectPane = new JOptionPane(message + "\nTry another connection?",
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 final JDialog reconnectDialog = reconnectPane.createDialog(containerFrame, title);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 reconnectDialog.setModalityType(isApplet ?
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 Dialog.ModalityType.APPLICATION_MODAL : Dialog.ModalityType.TOOLKIT_MODAL);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 try {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 reconnectDialog.setAlwaysOnTop(true);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 } catch (SecurityException e) { /*nop*/ }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 java.util.List<Image> icons = Utils.getIcons();
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 if (icons.size() != 0) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 reconnectDialog.setIconImages(icons);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 reconnectDialog.setVisible(true);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 if (reconnectPane.getValue() == null ||
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 (Integer)reconnectPane.getValue() == JOptionPane.NO_OPTION) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 appWindowListener.windowClosing(null);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 } else {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 forceConnectionDialog = !isApplet;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 }
2
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
81
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
82 public Socket connectToTreeHost(final ParametersHandler.ConnectionParams connectionParams, ProtocolSettings settings) {
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
83 Socket socket = null;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
84 boolean wasError = false;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
85 GetHostClient bCast = new GetHostClient("who");
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
86 bCast.createSocket();
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
87 bCast.sendData();
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
88 GetDataClient getBcast = new GetDataClient();
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
89 Thread runBcast = new Thread(getBcast);
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
90 runBcast.start();
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
91 getBcast.setStopFlag(true);
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
92 connectionParams.hostName = getBcast.textAddress();
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
93 if("notFound".equals(connectionParams.hostName)) {
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
94 getBcast.text.ipRegister();
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
95 connectionParams.hostName = getBcast.textAddress();
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
96 //connectionParams.portNumber = Integer.parseInt(getHost.getPortOption());
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
97 connectionParams.portNumber = 5900;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
98 } else {
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
99 //connectionParams.portNumber = Integer.parseInt(getBcast.textPort());
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
100 connectionParams.portNumber = 5900;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
101 }
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
102 Viewer.logger.info("Connecting to host " + connectionParams.hostName + ":" + connectionParams.portNumber);
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
103 try {
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
104 socket = new Socket(connectionParams.hostName, connectionParams.portNumber);
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
105 wasError = false;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
106 } catch (UnknownHostException e) {
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
107 Viewer.logger.severe("Unknown host: " + connectionParams.hostName);
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
108 showConnectionErrorDialog("Unknown host: '" + connectionParams.hostName + "'");
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
109 wasError = true;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
110 } catch (IOException e) {
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
111 Viewer.logger.severe("Couldn't connect to: " +
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
112 connectionParams.hostName + ":" + connectionParams.portNumber +
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
113 ": " + e.getMessage());
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
114 showConnectionErrorDialog("Couldn't connect to: '" + connectionParams.hostName +
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
115 "'\n" + e.getMessage());
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
116 wasError = true;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
117 }
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
118 return socket;
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
119 }
dca3bd61b830 before change MyVncClient.java
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
120
0
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 public Socket connectToHost(final ParametersHandler.ConnectionParams connectionParams, ProtocolSettings settings) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 Socket socket = null;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 ConnectionDialog connectionDialog = null;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 boolean wasError = false;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 do {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 if (forceConnectionDialog || wasError ||
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 connectionParams.isHostNameEmpty() ||
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 -1 == connectionParams.portNumber) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 forceConnectionDialog = false;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 if (null == connectionDialog) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 connectionDialog = new ConnectionDialog(containerFrame,
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 appWindowListener, connectionParams.hostName, connectionParams.portNumber,
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 settings, isApplet);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 connectionDialog.setVisible(true);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 connectionParams.hostName = connectionDialog.getServerNameString();
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 connectionParams.portNumber = connectionDialog.getPort();
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 Viewer.logger.info("Connecting to host " + connectionParams.hostName + ":" + connectionParams.portNumber);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 try {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 socket = new Socket(connectionParams.hostName, connectionParams.portNumber);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 wasError = false;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144 } catch (UnknownHostException e) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 Viewer.logger.severe("Unknown host: " + connectionParams.hostName);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 showConnectionErrorDialog("Unknown host: '" + connectionParams.hostName + "'");
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 wasError = true;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 } catch (IOException e) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 Viewer.logger.severe("Couldn't connect to: " +
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 connectionParams.hostName + ":" + connectionParams.portNumber +
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 ": " + e.getMessage());
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 showConnectionErrorDialog("Couldn't connect to: '" + connectionParams.hostName +
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 "'\n" + e.getMessage());
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 wasError = true;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 } while (!isApplet && (connectionParams.isHostNameEmpty() || wasError));
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 if (connectionDialog != null) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 connectionDialog.dispose();
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 return socket;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 public void showConnectionErrorDialog(final String message) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 JOptionPane errorPane = new JOptionPane(message, JOptionPane.ERROR_MESSAGE);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 final JDialog errorDialog = errorPane.createDialog(containerFrame, "Connection error");
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 errorDialog.setModalityType(isApplet ? Dialog.ModalityType.APPLICATION_MODAL : Dialog.ModalityType.TOOLKIT_MODAL);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 try {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 errorDialog.setAlwaysOnTop(true);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 } catch (SecurityException e) { /*nop*/ }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 errorDialog.setVisible(true);
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 public void setContainerFrame(JFrame containerFrame) {
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 this.containerFrame = containerFrame;
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 }
4689cc86d6cb create TreeViewer2 Repository
Yu Taninari <you@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 }