codeOrchestra.lcs.ApplicationWorkbenchAdvisor.java Source code

Java tutorial

Introduction

Here is the source code for codeOrchestra.lcs.ApplicationWorkbenchAdvisor.java

Source

package codeOrchestra.lcs;

import java.io.File;
import java.util.List;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.IWorkbenchConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchAdvisor;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;

import codeOrchestra.http.CodeOrchestraRPCHttpServer;
import codeOrchestra.lcs.errorhandling.ErrorHandler;
import codeOrchestra.lcs.license.COLTRunningKey;
import codeOrchestra.lcs.license.UsagePeriods;
import codeOrchestra.lcs.project.ProjectManager;
import codeOrchestra.lcs.project.RecentProjects;
import codeOrchestra.lcs.rpc.COLTRemoteServiceServlet;
import codeOrchestra.lcs.rpc.impl.COLTRemoteServiceImpl;
import codeOrchestra.lcs.rpc.security.view.SecurityTokenStatusLineItem;
import codeOrchestra.lcs.views.FCSHConsoleView;

/**
 * @author Alexander Eliseyev
 */
public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {

    public static String pathToOpenOnStartup;

    private Application application;

    public ApplicationWorkbenchAdvisor(Application application) {
        this.application = application;
    }

    public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
        return new ApplicationWorkbenchWindowAdvisor(configurer);
    }

    public String getInitialWindowPerspectiveId() {
        return Perspective.ID;
    }

    @Override
    public void initialize(IWorkbenchConfigurer configurer) {
        super.initialize(configurer);

        Throwable socketInitException = application.getServerSocketThread().getSocketInitException();
        if (socketInitException != null) {
            MessageDialog.openError(Display.getDefault().getActiveShell(), "Error",
                    "Can't init tracing socket: " + socketInitException);
        }
    }

    @Override
    public boolean preShutdown() {
        UsagePeriods.getInstance().addUsagePeriod(Application.timeStarted, System.currentTimeMillis());
        COLTRunningKey.setRunning(false);
        return super.preShutdown();
    }

    @Override
    public void postStartup() {
        // Hide FCSH console
        IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        IWorkbenchPage page = activeWorkbenchWindow.getActivePage();
        IWorkbenchPartReference myView = page.findViewReference(FCSHConsoleView.ID);
        page.setPartState(myView, IWorkbenchPage.STATE_MINIMIZED);

        IWorkbenchWindow window = activeWorkbenchWindow;

        // Open project requested
        if (pathToOpenOnStartup != null) {
            try {
                ProjectManager.getInstance().openProject(pathToOpenOnStartup, window);
            } catch (PartInitException e) {
                ErrorHandler.handle(e, "Error while opening COLT project: " + pathToOpenOnStartup);
            }
        }

        // Open recent project
        List<String> recentProjectsPaths = RecentProjects.getRecentProjectsPaths();
        if (!recentProjectsPaths.isEmpty()) {
            String lastProjectPath = recentProjectsPaths.get(0);
            if (new File(lastProjectPath).exists()) {
                try {
                    ProjectManager.getInstance().openProject(lastProjectPath, window);
                } catch (PartInitException e) {
                    ErrorHandler.handle(e, "Error while opening COLT project: " + lastProjectPath);
                }
            }
        }

        // Init remote service
        COLTRemoteServiceImpl.init(window);
        CodeOrchestraRPCHttpServer.getInstance().addServlet(new COLTRemoteServiceServlet(), "/coltService");

        SecurityTokenStatusLineItem.INSTANCE.init(activeWorkbenchWindow.getShell());
    }

}