# HG changeset patch # User one # Date 1410551872 -32400 # Node ID a73b8a20e2334924fcf8c21d6350f188f35543dc # Parent 9973439e03ad8ff6d1761422cb69f3e8ab9a3389 create another viewer window diff -r 9973439e03ad -r a73b8a20e233 src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNC.java --- /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(); + } + +} diff -r 9973439e03ad -r a73b8a20e233 src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNCConfig.java --- /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; + } + +} diff -r 9973439e03ad -r a73b8a20e233 src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java --- /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()); + + } + +} diff -r 9973439e03ad -r a73b8a20e233 src/main/java/jp/ac/u_ryukyu/alicevnc/StartAliceVNC.java --- 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(); + } } }