Mercurial > hg > Members > riono > TreeVNC_ja_comment
diff src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java @ 407:7cd416d6a152
Show port Error dialog to server change client
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 16 Nov 2015 19:05:19 +0900 |
parents | 0eea469c6349 |
children | bbd844c15ab1 |
line wrap: on
line diff
--- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Mon Nov 09 15:44:53 2015 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Mon Nov 16 19:05:19 2015 +0900 @@ -31,10 +31,7 @@ import com.glavsoft.rfb.protocol.ProtocolContext; import com.glavsoft.rfb.protocol.ProtocolSettings; import com.glavsoft.utils.Keymap; -import com.glavsoft.viewer.ConnectionPresenter; -import com.glavsoft.viewer.UiSettings; -import com.glavsoft.viewer.Viewer; -import com.glavsoft.viewer.ViewerInterface; +import com.glavsoft.viewer.*; import com.glavsoft.viewer.swing.gui.OptionsDialog; import javax.swing.*; @@ -44,6 +41,7 @@ import java.awt.*; import java.awt.event.*; +import java.net.Socket; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -913,8 +911,6 @@ } public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) { - viewer.setVisible(false); - float scaleFactor = getMyDisplayScaleFactor(); ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); int leftScreenNumber = 0; @@ -923,16 +919,35 @@ viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); if (viewer.getRfb().hasParent()) { String adr = viewer.getRfb().getMyAddress(); - // -1 means request to reverse direct connection socket - short id = viewer.getRfb().isTreeManager()? (short)-1 : viewer.getRfb().getId(); - context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, singleWidth, singleHeight, shareScreenNumber)); + if (portScan(adr, ConnectionParams.DEFAULT_RFB_PORT)) { + // -1 means request to reverse direct connection socket + short id = viewer.getRfb().isTreeManager()? (short)-1 : viewer.getRfb().getId(); + context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, singleWidth, singleHeight, shareScreenNumber)); + } } + if (viewer.getRfb().isTreeManager()) { changeVncServer(viewer, singleWidth, singleHeight, shareScreenNumber, viewer.getRfb().getId()); return; } } + private boolean portScan(String adr, int port) { + try { + Socket socket = new Socket(adr, port); + socket.close(); + return true; + } catch (Exception e) { + String message = "Please screen sharing settings"; + // show error panel + presenter.showPortErrorDialog(message); + presenter.clearMessage(); + return false; + } + } + + + private float getMyDisplayScaleFactor() { final String CONTENT_SCALE_FACTOR = "java.awt.contentScaleFactor"; Float scaleFactor = (Float) Toolkit.getDefaultToolkit().getDesktopProperty(CONTENT_SCALE_FACTOR);