Package com.google.code.vimsztool.ui

Source Code of com.google.code.vimsztool.ui.JdtUI

package com.google.code.vimsztool.ui;

import java.io.File;
import java.io.InputStream;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;

import com.google.code.vimsztool.locate.FileSystemDb;
import com.google.code.vimsztool.server.SzjdeServer;
import com.google.code.vimsztool.util.JdeLogger;
import com.google.code.vimsztool.util.Preference;
import com.google.code.vimsztool.util.UserLibConfig;
import com.google.code.vimsztool.util.VjdeUtil;

public class JdtUI {
 
  private static JdeLogger log = JdeLogger.getLogger("JdtUI");
  public static JdtUI instance = null;
  private Shell shell;
  private Tray systemTray;
  private Image img;
  private TrayItem systemTrayItem;
  private Display display;
  private Preference pref = Preference.getInstance();

  public static void main(String[] args) {

    int i = 0;
    String sztoolHome = "";
    while (i < args.length && args[i].startsWith("-")) {
      String arg = args[i++];
      if (arg.equals("--sztool-home") && ( i<args.length)) {
        sztoolHome = args[i++];
      }
    }
    instance = new JdtUI(sztoolHome);
    instance.run();
  }
  public JdtUI(String sztoolHome) {
    pref.init(sztoolHome);
  }

  public void run() {
    display = new Display();
    shell = new Shell(display);
    initSysTray();
    initServer();
    initUserLibConfig();
    initFsWatcher();
    shell.setSize(700, 500);
    shell.setText("SzTool"); //$NON-NLS-1$

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
  }

  public void exit() {
    img.dispose();
    systemTray.dispose();
    shell.dispose();
    System.exit(0);
  }
 
  private void initFsWatcher() {
    FileSystemDb.getInstance().initWatchOnIndexedDir();
  }

  private void initServer() {
    try {
      String port=pref.getValue(Preference.JDE_SERVER_PORT);
      int portNum = Integer.parseInt(port);
      new SzjdeServer(portNum).start();
    } catch (Exception e) {
      String errorMsg = VjdeUtil.getExceptionValue(e);
        log.info(errorMsg);
    }
  }

  private void initUserLibConfig() {
    String conxml = pref.getValue(Preference.JDE_ECLIPSE_CONXML_PATH);
    File file = new File(conxml);
    if (file.exists() && file.isFile() && file.canRead()) {
      UserLibConfig.init(conxml);
    }
  }

  private void initSysTray() {
    systemTray = shell.getDisplay().getSystemTray();

    final Menu systemTrayMenu = new Menu(shell, SWT.POP_UP);
    MenuItem quitItem = new MenuItem(systemTrayMenu, SWT.NONE);
    quitItem.setText("quit");

    quitItem.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        exit();
      }
    });

    systemTrayItem = new TrayItem(systemTray, SWT.NONE);
    InputStream is = JdtUI.class.getClassLoader().getResourceAsStream(
        "resource/logo.png");
    img = new Image(Display.getDefault(), is);

    systemTrayItem.setImage(img);
    systemTrayItem.setToolTipText("SzTool"); //$NON-NLS-1$

    systemTrayItem.addListener(SWT.MenuDetect, new Listener() {
      public void handleEvent(Event event) {
        systemTrayMenu.setVisible(true);
      }
    });

  }

}
TOP

Related Classes of com.google.code.vimsztool.ui.JdtUI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.