Mercurial > hg > Members > riono > TreeVNC_ja_comment
comparison 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 |
comparison
equal
deleted
inserted
replaced
406:0eea469c6349 | 407:7cd416d6a152 |
---|---|
29 import com.glavsoft.rfb.client.KeyEventMessage; | 29 import com.glavsoft.rfb.client.KeyEventMessage; |
30 import com.glavsoft.rfb.protocol.Protocol; | 30 import com.glavsoft.rfb.protocol.Protocol; |
31 import com.glavsoft.rfb.protocol.ProtocolContext; | 31 import com.glavsoft.rfb.protocol.ProtocolContext; |
32 import com.glavsoft.rfb.protocol.ProtocolSettings; | 32 import com.glavsoft.rfb.protocol.ProtocolSettings; |
33 import com.glavsoft.utils.Keymap; | 33 import com.glavsoft.utils.Keymap; |
34 import com.glavsoft.viewer.ConnectionPresenter; | 34 import com.glavsoft.viewer.*; |
35 import com.glavsoft.viewer.UiSettings; | |
36 import com.glavsoft.viewer.Viewer; | |
37 import com.glavsoft.viewer.ViewerInterface; | |
38 import com.glavsoft.viewer.swing.gui.OptionsDialog; | 35 import com.glavsoft.viewer.swing.gui.OptionsDialog; |
39 | 36 |
40 import javax.swing.*; | 37 import javax.swing.*; |
41 import javax.swing.border.BevelBorder; | 38 import javax.swing.border.BevelBorder; |
42 import javax.swing.border.Border; | 39 import javax.swing.border.Border; |
43 import javax.swing.border.EmptyBorder; | 40 import javax.swing.border.EmptyBorder; |
44 | 41 |
45 import java.awt.*; | 42 import java.awt.*; |
46 import java.awt.event.*; | 43 import java.awt.event.*; |
44 import java.net.Socket; | |
47 import java.util.ArrayList; | 45 import java.util.ArrayList; |
48 import java.util.LinkedList; | 46 import java.util.LinkedList; |
49 import java.util.List; | 47 import java.util.List; |
50 import java.util.concurrent.Executors; | 48 import java.util.concurrent.Executors; |
51 import java.util.concurrent.ScheduledExecutorService; | 49 import java.util.concurrent.ScheduledExecutorService; |
911 | 909 |
912 setButtonsBarVisible(true, container); | 910 setButtonsBarVisible(true, container); |
913 } | 911 } |
914 | 912 |
915 public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) { | 913 public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) { |
916 viewer.setVisible(false); | |
917 | |
918 float scaleFactor = getMyDisplayScaleFactor(); | 914 float scaleFactor = getMyDisplayScaleFactor(); |
919 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); | 915 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles(); |
920 int leftScreenNumber = 0; | 916 int leftScreenNumber = 0; |
921 int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor); | 917 int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor); |
922 int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor); | 918 int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor); |
923 viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); | 919 viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); |
924 if (viewer.getRfb().hasParent()) { | 920 if (viewer.getRfb().hasParent()) { |
925 String adr = viewer.getRfb().getMyAddress(); | 921 String adr = viewer.getRfb().getMyAddress(); |
926 // -1 means request to reverse direct connection socket | 922 if (portScan(adr, ConnectionParams.DEFAULT_RFB_PORT)) { |
927 short id = viewer.getRfb().isTreeManager()? (short)-1 : viewer.getRfb().getId(); | 923 // -1 means request to reverse direct connection socket |
928 context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, singleWidth, singleHeight, shareScreenNumber)); | 924 short id = viewer.getRfb().isTreeManager()? (short)-1 : viewer.getRfb().getId(); |
929 } | 925 context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, singleWidth, singleHeight, shareScreenNumber)); |
926 } | |
927 } | |
928 | |
930 if (viewer.getRfb().isTreeManager()) { | 929 if (viewer.getRfb().isTreeManager()) { |
931 changeVncServer(viewer, singleWidth, singleHeight, shareScreenNumber, viewer.getRfb().getId()); | 930 changeVncServer(viewer, singleWidth, singleHeight, shareScreenNumber, viewer.getRfb().getId()); |
932 return; | 931 return; |
933 } | 932 } |
934 } | 933 } |
934 | |
935 private boolean portScan(String adr, int port) { | |
936 try { | |
937 Socket socket = new Socket(adr, port); | |
938 socket.close(); | |
939 return true; | |
940 } catch (Exception e) { | |
941 String message = "Please screen sharing settings"; | |
942 // show error panel | |
943 presenter.showPortErrorDialog(message); | |
944 presenter.clearMessage(); | |
945 return false; | |
946 } | |
947 } | |
948 | |
949 | |
935 | 950 |
936 private float getMyDisplayScaleFactor() { | 951 private float getMyDisplayScaleFactor() { |
937 final String CONTENT_SCALE_FACTOR = "java.awt.contentScaleFactor"; | 952 final String CONTENT_SCALE_FACTOR = "java.awt.contentScaleFactor"; |
938 Float scaleFactor = (Float) Toolkit.getDefaultToolkit().getDesktopProperty(CONTENT_SCALE_FACTOR); | 953 Float scaleFactor = (Float) Toolkit.getDefaultToolkit().getDesktopProperty(CONTENT_SCALE_FACTOR); |
939 | 954 |