changeset 280:9c5874d0f37e

fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH
author oc
date Sun, 11 Jan 2015 03:38:25 +0900
parents dce00f9ac98c
children 16d3584ae7a0
files src/main/java/com/glavsoft/rfb/client/ClientToServerMessage.java src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/jp/ac/u_ryukyu/treevnc/CheckDelayReply.java src/main/java/jp/ac/u_ryukyu/treevnc/RequestSingleDisplayWidth.java src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java
diffstat 7 files changed, 76 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/client/ClientToServerMessage.java	Sat Jan 10 18:51:25 2015 +0900
+++ b/src/main/java/com/glavsoft/rfb/client/ClientToServerMessage.java	Sun Jan 11 03:38:25 2015 +0900
@@ -36,6 +36,7 @@
 	byte CLIENT_CUT_TEXT = 6;
 	byte SERVER_CHANGE_REQUEST = (byte) 240; // TreeVNC extension
 	byte CHECK_DELAY_REPLY = 70;
+    byte REQUEST_SINGLE_DISPLAY_WIDTH = 71;
 
 	void send(Writer writer) throws TransportException;
 }
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Sat Jan 10 18:51:25 2015 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Sun Jan 11 03:38:25 2015 +0900
@@ -237,9 +237,6 @@
                 if (rfb.singleWidth == 0) {
                     rfb.singleWidth = rect.width;
                 }
-                // ここにsingleWidthを送信する処理を書く
-                SendSingleDisplayWidth sendSingleDisplayWidth = new SendSingleDisplayWidth(rfb, rfb.singleWidth);
-                sendSingleDisplayWidth.sendSingleDisplayWidth();
                 this.firstTime = false;
             }
 
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/CheckDelayReply.java	Sat Jan 10 18:51:25 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/CheckDelayReply.java	Sun Jan 11 03:38:25 2015 +0900
@@ -28,7 +28,7 @@
         ByteBuffer out = ByteBuffer.allocate(18 + addressLength);
         out.order(ByteOrder.BIG_ENDIAN);
         out.put(CHECK_DELAY_REPLY);
-        out.put((byte)0);
+        out.put((byte)0);   // padding
         out.putLong(time);
         out.putInt(port);
         out.putInt(addressLength);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/RequestSingleDisplayWidth.java	Sun Jan 11 03:38:25 2015 +0900
@@ -0,0 +1,31 @@
+package jp.ac.u_ryukyu.treevnc;
+
+import com.glavsoft.exceptions.TransportException;
+import com.glavsoft.rfb.client.ClientToServerMessage;
+import com.glavsoft.rfb.encoding.EncodingType;
+import com.glavsoft.transport.Writer;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.LinkedList;
+
+/**
+ * Created by OcBookPro on 15/01/10.
+ */
+public class RequestSingleDisplayWidth implements ClientToServerMessage {
+
+    private short id;
+
+    public RequestSingleDisplayWidth() {
+    }
+
+    @Override
+    public void send(Writer writer) throws TransportException {
+        ByteBuffer out = ByteBuffer.allocate(2);
+        out.order(ByteOrder.BIG_ENDIAN);
+        out.put(REQUEST_SINGLE_DISPLAY_WIDTH);
+        out.put((byte)0); // padding
+        writer.write(out.array(), 0, out.position());
+        writer.flush();
+    }
+}
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java	Sat Jan 10 18:51:25 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java	Sun Jan 11 03:38:25 2015 +0900
@@ -32,20 +32,20 @@
 			System.out.println("Client send change screen server request :" + adr);
 		}
 
-		@Override
-		public void send(Writer writer) throws TransportException {
-			ByteBuffer out = ByteBuffer.allocate(bytes.length()+25);
-			out.order(ByteOrder.BIG_ENDIAN);
-			out.put(SERVER_CHANGE_REQUEST);
-			out.put((byte)0); // padding
-			out.putShort(id);
-			out.putInt(bytes.length());
-			out.put(bytes.getBytes());
+        @Override
+        public void send(Writer writer) throws TransportException {
+            ByteBuffer out = ByteBuffer.allocate(bytes.length()+25);
+            out.order(ByteOrder.BIG_ENDIAN);
+            out.put(SERVER_CHANGE_REQUEST);
+            out.put((byte)0); // padding
+            out.putShort(id);
+            out.putInt(bytes.length());
+            out.put(bytes.getBytes());
             out.putInt(frameSizeWidth);
             out.putInt(frameSizeHeight);
-			writer.write(out.array(), 0, out.position());
-			writer.flush();
-			}
+            writer.write(out.array(), 0, out.position());
+            writer.flush();
+        }
 
 		@Override
 		public String toString() {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Sat Jan 10 18:51:25 2015 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Sun Jan 11 03:38:25 2015 +0900
@@ -186,6 +186,12 @@
                                 } else {
                                     continue;
                                 }
+                            } else if (b[0] == ClientToServerMessage.REQUEST_SINGLE_DISPLAY_WIDTH) {
+                                ByteBuffer buf = ByteBuffer.wrap(b);
+                                buf.order(ByteOrder.BIG_ENDIAN);
+                                buf.get();
+                                // ここにエンコーディングタイプがSendSingleDisplayWidthなframebufferUpdateを送信する処理を書く
+                                // multicastqueue.put()な処理を
                             } else if (b[0] == ClientToServerMessage.CHECK_DELAY_REPLY) {
                                 ByteBuffer buf = ByteBuffer.wrap(b);
                                 buf.order(ByteOrder.BIG_ENDIAN);
@@ -214,6 +220,14 @@
                                 }
                             };
                             context.sendMessage(sc);
+                        } else if (b[0] == ClientToServerMessage.REQUEST_SINGLE_DISPLAY_WIDTH) {
+                            ClientToServerMessage sc = new ClientToServerMessage() {
+                                @Override
+                                public void send(Writer writer)
+                                        throws TransportException {
+                                    writer.write(b, 0, c);
+                                }
+                            };
                         } else if (b[0] == ClientToServerMessage.CHECK_DELAY_REPLY) {
                             ClientToServerMessage checkDelayReply = new ClientToServerMessage() {
                                 @Override
--- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java	Sat Jan 10 18:51:25 2015 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java	Sun Jan 11 03:38:25 2015 +0900
@@ -53,6 +53,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Logger;
 
+import jp.ac.u_ryukyu.treevnc.RequestSingleDisplayWidth;
 import jp.ac.u_ryukyu.treevnc.SendSingleDisplayWidth;
 import jp.ac.u_ryukyu.treevnc.TreeRFBProto;
 import jp.ac.u_ryukyu.treevnc.ScreenChangeRequest;
@@ -86,7 +87,6 @@
     private Protocol workingProtocol;
     public int width;
     public int height;
-    private JButton adjustHdSizeButton;
     private int singleWidth;
 
     private boolean isZoomToFitSelected;
@@ -365,13 +365,6 @@
                 uiSettings.zoomIn();
 			}
 		});
-        adjustHdSizeButton = buttonsBar.createButton("adjust-hd-size", "Adjust Hd Size", new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                adjustHdSizeButton.setSelected(false);
-                uiSettings.adjustHdSize(singleWidth);
-            }
-        });
 		zoomAsIsButton = buttonsBar.createButton("zoom-100", "Zoom 100%", new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
@@ -893,6 +886,22 @@
         kbdButtons.add(screenButton);
 
 
+        JButton adjustHdSizeButton = buttonsBar.createButton("adjust-hd-size", "Adjust Hd Size", new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+//                adjustHdSizeButton.setSelected(false);
+                if (viewer.getRfb().isTreeManager()) {
+                    System.out.println(viewer.getRfb().singleWidth);
+                    return;
+                }
+                System.out.println(viewer.getRfb().singleWidth);
+                context.sendMessage(new RequestSingleDisplayWidth());
+//                uiSettings.adjustHdSize(singleWidth);
+            }
+        });
+        kbdButtons.add(adjustHdSizeButton);
+
+
 
         ModifierButtonEventListener modifierButtonListener = new ModifierButtonEventListener();
         modifierButtonListener.addButton(KeyEvent.VK_CONTROL, ctrlButton);