Mercurial > hg > Members > riono > TreeVNC_ja_comment
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);