view src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java @ 73:35f761bcb12c

fix path and messages
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Apr 2014 11:17:34 +0900
parents 36e116795e0c
children f1938dd3b518
line wrap: on
line source

package com.glavsoft.viewer;

import jp.ac.u_ryukyu.treevnc.server.VncProxyService;

public class TreeViewer {
	private boolean treeProxy;
	private boolean viewer;
	private int width; 
	private int height;
	private String hostName = null;

	public static void main(String[] args) {
		new TreeViewer().vncStart(args);
	}

	private void vncStart(String[] args) {
		modeSelect(args);
		if (treeProxy) {
			VncProxyService vps = new VncProxyService();
			vps.proxyStart(args,width,height);
		}
		if(hostName!=null) {
			CuiViewer v = new CuiViewer();
			v.startViewer(hostName,true);
		} else if (viewer) {
			Viewer v = new Viewer();
			v.startViewer();
		}
	}

	private void modeSelect(String[] args) {
		for (int i = 0; i < args.length; i++) {
			if ("-p".equals(args[i]) || "-r".equals(args[i])) {
				// no display. behave as root.
				// relay rfb update to clients.
				treeProxy = true;
			} else if ("-d".equals(args[i])) {
				// behave as root with display.
				// use this on main display such as large tv.
				treeProxy = true;
				viewer = true;
			} else if ("-v".equals(args[i])) {
				// behave as client.
				// open display and connect to some tree node.
				viewer = true;
			} else if ("--version".equals(args[i])) {
				System.out.println("version :" + VncProxyService.ver());
				System.exit(0);
			} else if ("--retina".equals(args[i])) {
				// retina display too large for TreeVNC.
				// restrict display size.
				treeProxy = true;
				width = 1280;
				height = 800;
			} else if ("--width".equals(args[i])) {
				width = Integer.parseInt(args[i+1]);
				i++;
			} else if ("--height".equals(args[i])) {
				height = Integer.parseInt(args[i+1]);
				i++;
			} else if ("--host".equals(args[i])) {
				hostName = args[++i];
			} else {
				System.out.println("(default) TreeVNCClient\n"
						+ "-p:       TreeVNCProxy\n"
						+ "-v:      VNCViewer\n"
						+ "-r:      TreeVNCProxy for RemoteHost. you should input parameter host and port\n"
						+ "--host hostname:  set host name\n"
						+ "--retina:    TreeVNC proxy for retina.this mode can select screen range.\n"
						+ "--width w: set display width\n"
						+ "--height h: set display height\n");
			}
		}
	}

	private boolean setWidthAndHeight(String[] args, int i) {
		if(isInteger(args[++i])&&isInteger(args[++i])) {
			width = Integer.parseInt(args[--i]);
			height = Integer.parseInt(args[++i]);
			return true;
		} else {
			width = 1920;
			height = 1080;
			return false;
		}
	}

	private boolean isInteger(String num) {
		try {
			Integer.parseInt(num);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	}
}