diff src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java @ 406:0eea469c6349

Add ScreenChangeSelectionPanel
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Mon, 09 Nov 2015 15:44:53 +0900
parents cdab1354e227
children 7cd416d6a152
line wrap: on
line diff
--- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java	Mon Nov 09 01:06:11 2015 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java	Mon Nov 09 15:44:53 2015 +0900
@@ -848,28 +848,21 @@
         });
         kbdButtons.add(altButton);
 
+        final SwingViewerWindow viewerWindow = this;
         JButton screenButton = buttonsBar.createButton("share", "Share my screen", new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                viewer.setVisible(false);
-
-                float scaleFactor = getMyDisplayScaleFactor();
                 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles();
-                int leftScreenNumber = 0;
-                int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor);
-                int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor);
-                viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight);
-                int shareScreenNumber = 0;
-                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));
+                ScreenChangeSelectionPanel selectionPanel = new ScreenChangeSelectionPanel(viewerWindow, context);
+                if (rectangles.size() == 1) { // single Display
+                    selectionPanel.checkBox("single screen");
+                } else if (rectangles.size() == 2){
+                    selectionPanel.checkBox("all screen");
+                    selectionPanel.checkBox("left screen");
+                    selectionPanel.checkBox("right screen");
                 }
-                if (viewer.getRfb().isTreeManager()) {
-                    changeVncServer(viewer, singleWidth, singleHeight, shareScreenNumber, viewer.getRfb().getId());
-                    return;
-                }
+                selectionPanel.setButton();
+                selectionPanel.visible();
             }
         });
 
@@ -919,6 +912,27 @@
         setButtonsBarVisible(true, container);
     }
 
+    public void screenChangeRequest(ProtocolContext context, int shareScreenNumber) {
+        viewer.setVisible(false);
+
+        float scaleFactor = getMyDisplayScaleFactor();
+        ArrayList<Rectangle> rectangles = viewer.getScreenRectangles();
+        int leftScreenNumber = 0;
+        int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor);
+        int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor);
+        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 (viewer.getRfb().isTreeManager()) {
+            changeVncServer(viewer, singleWidth, singleHeight, shareScreenNumber, viewer.getRfb().getId());
+            return;
+        }
+    }
+
     private float getMyDisplayScaleFactor() {
         final String CONTENT_SCALE_FACTOR = "java.awt.contentScaleFactor";
         Float scaleFactor = (Float) Toolkit.getDefaultToolkit().getDesktopProperty(CONTENT_SCALE_FACTOR);