# HG changeset patch # User oc # Date 1420915105 -32400 # Node ID 9c5874d0f37e02e43f2c6a082a3d3f22b7757c79 # Parent dce00f9ac98cafcd48b202631060326f6eaefc5d fix adjustHdSizeButton button, this button send REQUEST_SINGLE_DISPLAY_WIDTH diff -r dce00f9ac98c -r 9c5874d0f37e src/main/java/com/glavsoft/rfb/client/ClientToServerMessage.java --- 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; } diff -r dce00f9ac98c -r 9c5874d0f37e src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- 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; } diff -r dce00f9ac98c -r 9c5874d0f37e src/main/java/jp/ac/u_ryukyu/treevnc/CheckDelayReply.java --- 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); diff -r dce00f9ac98c -r 9c5874d0f37e src/main/java/jp/ac/u_ryukyu/treevnc/RequestSingleDisplayWidth.java --- /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(); + } +} diff -r dce00f9ac98c -r 9c5874d0f37e src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java --- 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() { diff -r dce00f9ac98c -r 9c5874d0f37e src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- 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 diff -r dce00f9ac98c -r 9c5874d0f37e src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- 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);