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