changeset 1:a73b8a20e233

create another viewer window
author one
date Sat, 13 Sep 2014 04:57:52 +0900
parents 9973439e03ad
children e046eb8a3ac1
files src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNC.java src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNCConfig.java src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java src/main/java/jp/ac/u_ryukyu/alicevnc/StartAliceVNC.java
diffstat 4 files changed, 133 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNC.java	Sat Sep 13 04:57:52 2014 +0900
@@ -0,0 +1,38 @@
+package jp.ac.u_ryukyu.alicevnc;
+
+import javax.swing.SwingUtilities;
+
+import com.glavsoft.viewer.Viewer;
+import com.glavsoft.viewer.cli.Parser;
+import com.glavsoft.viewer.swing.ParametersHandler;
+
+import alice.codesegment.CodeSegment;
+
+public class AliceVNC extends CodeSegment {
+
+    private AliceVNCConfig conf;
+
+    public AliceVNC(AliceVNCConfig conf) {
+        this.conf = conf;
+    }
+
+    public void run() {
+        
+        if (conf.getProxyFlag()){
+            Parser parser = new Parser();
+            ParametersHandler.completeParserOptions(parser);
+            if (parser.isSet(ParametersHandler.ARG_HELP)) {
+                System.exit(0);
+            }
+            Viewer viewer = new Viewer(parser);
+            SwingUtilities.invokeLater(viewer);
+                        
+        }        
+        if (conf.getViewerFlag()){
+            
+        }
+        
+        new ReceiveServerInitMessage();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNCConfig.java	Sat Sep 13 04:57:52 2014 +0900
@@ -0,0 +1,35 @@
+package jp.ac.u_ryukyu.alicevnc;
+
+import alice.topology.node.TopologyNodeConfig;
+
+public class AliceVNCConfig extends TopologyNodeConfig {
+
+    private boolean treeProxy;
+    private boolean viewer;
+    
+    public AliceVNCConfig(String[] args) {
+        super(args);
+        for (int i = 0; i< args.length; i++) {
+            if ("-proxy".equals(args[i])){
+                // no display. behave as root
+                treeProxy = true;
+                viewer = false;
+            } else if ("-d".equals(args[i])) {
+                // behave as root with display.
+                treeProxy = true;
+                viewer = true;
+            } else {
+                viewer = true;
+            }
+        }
+    }
+    
+    public boolean getViewerFlag(){
+        return viewer;
+    }
+    
+    public boolean getProxyFlag(){
+        return treeProxy;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java	Sat Sep 13 04:57:52 2014 +0900
@@ -0,0 +1,51 @@
+package jp.ac.u_ryukyu.alicevnc;
+
+import com.glavsoft.drawing.Renderer;
+import com.glavsoft.rfb.IRepaintController;
+import com.glavsoft.rfb.encoding.ServerInitMessage;
+import com.glavsoft.rfb.protocol.Protocol;
+import com.glavsoft.rfb.protocol.ProtocolSettings;
+import com.glavsoft.viewer.Viewer;
+import com.glavsoft.viewer.cli.Parser;
+import com.glavsoft.viewer.swing.ParametersHandler;
+import com.glavsoft.viewer.swing.SwingViewerWindow;
+import com.glavsoft.viewer.swing.SwingViewerWindowFactory;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class ReceiveServerInitMessage extends CodeSegment {
+
+    private Receiver info = ids.create(CommandType.PEEK);
+    
+   
+    public ReceiveServerInitMessage(){
+        info.setKey("ServerInitMessage");
+    }
+    
+    public void run() {
+     
+        Parser parser = new Parser();
+        ParametersHandler.completeParserOptions(parser);
+        if (parser.isSet(ParametersHandler.ARG_HELP)) {
+            System.exit(0);
+        }
+        Viewer viewer = new Viewer(parser);
+        SwingViewerWindowFactory viewerWindowFactory = new SwingViewerWindowFactory(true, false, viewer);
+        ProtocolSettings settings = ProtocolSettings.getDefaultSettings();
+        Protocol context = new Protocol(null, null, null, settings);
+        
+        ServerInitMessage serverInitMessage = info.asClass(ServerInitMessage.class);
+        context.setPixelFormat(serverInitMessage.getPixelFormat());
+        context.setFbWidth(serverInitMessage.getFrameBufferWidth());
+        context.setFbHeight(serverInitMessage.getFrameBufferHeight());
+        context.setRemoteDesktopName(serverInitMessage.getName());
+        
+        SwingViewerWindow viewerWindow = viewerWindowFactory.createViewerWindow(context, settings, viewer.getUiSettings(), null, null);
+        IRepaintController repaintController = viewerWindow.getSurface();
+        Renderer renderer = repaintController.createRenderer(null, 1280, 800, context.getPixelFormat());
+        
+    }
+
+}
--- a/src/main/java/jp/ac/u_ryukyu/alicevnc/StartAliceVNC.java	Thu Aug 28 17:49:10 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/StartAliceVNC.java	Sat Sep 13 04:57:52 2014 +0900
@@ -1,11 +1,17 @@
 package jp.ac.u_ryukyu.alicevnc;
 
-import alice.topology.node.TopologyNodeConfig;
+import alice.topology.node.TopologyNode;
 
 public class StartAliceVNC {
     public static void main(String args[]){
-        TopologyNodeConfig conf = new TopologyNodeConfig(args);
-        
+        AliceVNCConfig conf = new AliceVNCConfig(args);
+        AliceVNC cs = new AliceVNC(conf);
+        if (conf.getManagerHostName() !=null){            
+            new TopologyNode(conf, cs);
+        } else {
+            cs.ods.put("host", "local0");
+            cs.execute();
+        }
     }
 
 }