Package ch.fusun.baron.clientapp

Source Code of ch.fusun.baron.clientapp.ApplicationWorkbenchWindowAdvisor

package ch.fusun.baron.clientapp;

import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;

import ch.fusun.baron.client.rmi.ClientService;
import ch.fusun.baron.clientapp.login.LoginDialog;
import ch.fusun.baron.clientapp.messages.Messages;
import ch.fusun.baron.core.injection.Inject;
import ch.fusun.baron.core.injection.ReInjector;

/**
* Workbench window advisor
*/
public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

  @Inject
  private ClientService gameClient;

  /**
   * Constructor
   *
   * @param configurer
   */
  public ApplicationWorkbenchWindowAdvisor(
      IWorkbenchWindowConfigurer configurer) {
    super(configurer);
  }

  @Override
  public ActionBarAdvisor createActionBarAdvisor(
      IActionBarConfigurer configurer) {
    return new ApplicationActionBarAdvisor(configurer);
  }

  @Override
  public void preWindowOpen() {
    ReInjector.getInstance().reInject(this);
    boolean connected = false;
    while (!connected) {
      InputDialog inputDialog = new InputDialog(new Shell(),
          Messages.ApplicationWorkbenchWindowAdvisor_HostTitle,
          Messages.ApplicationWorkbenchWindowAdvisor_HostDescription,
          Messages.ApplicationWorkbenchWindowAdvisor_HostDefault,
          null);
      inputDialog.open();
      if (inputDialog.getReturnCode() == InputDialog.OK) {
        connected = getGameClient().connectToServer(
            inputDialog.getValue());
      } else {
        new MessageDialog(
            new Shell(),
            Messages.ApplicationWorkbenchWindowAdvisor_ConnectionFailedTitle,
            null,
            Messages.ApplicationWorkbenchWindowAdvisor_ConnectionFailedDescription,
            0,
            new String[] { Messages.ApplicationWorkbenchWindowAdvisor_ConnectionFailedText },
            0).open();
        System.exit(0);
      }
    }
    new LoginDialog(null, getGameClient()).open();

    IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
    configurer.setInitialSize(new Point(600, 600));
    configurer.setShowCoolBar(true);
    configurer.setShowMenuBar(true);
    configurer.setShowStatusLine(true);
  }

  @Override
  public boolean preWindowShellClose() {
    return super.preWindowShellClose();
  }

  /**
   * @return the gameClient
   */
  public ClientService getGameClient() {
    return gameClient;
  }
}
TOP

Related Classes of ch.fusun.baron.clientapp.ApplicationWorkbenchWindowAdvisor

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.