ca.uvic.chisel.logging.eclipse.internal.PluginStarter.java Source code

Java tutorial

Introduction

Here is the source code for ca.uvic.chisel.logging.eclipse.internal.PluginStarter.java

Source

/*******************************************************************************
 * Copyright (c) 2010 the CHISEL group and contributors.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Del Myers - initial API and implementation
 *******************************************************************************/
package ca.uvic.chisel.logging.eclipse.internal;

import org.eclipse.core.commands.IExecutionListener;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;

import ca.uvic.chisel.logging.eclipse.ILoggingCategory;
import ca.uvic.chisel.logging.eclipse.WorkbenchLoggingPlugin;
import ca.uvic.chisel.logging.eclipse.internal.network.UploadJob;
import ca.uvic.chisel.logging.eclipse.internal.ui.UploadWizard;

public class PluginStarter implements IStartup {
    InternalWindowListener windowListener = new InternalWindowListener();
    private IExecutionListener commandLogger = new CommandLogger();

    public void earlyStartup() {
        if (!WorkbenchLoggingPlugin.isEnabled())
            return;
        PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
            public void run() {
                // check if a new upload needs to be done.
                IPreferenceStore store = WorkbenchLoggingPlugin.getDefault().getPreferenceStore();
                long lastUpload = store.getLong(UploadJob.LAST_UPLOAD_KEY);
                long interval = store.getLong(UploadJob.UPLOAD_INTERVAL_KEY);
                if (interval <= 0) {
                    store.setValue(UploadJob.UPLOAD_INTERVAL_KEY, UploadJob.UPLOAD_INTERVAL_WEEKLY);
                    interval = UploadJob.UPLOAD_INTERVAL_WEEKLY;
                }
                if (lastUpload != 0) {
                    long today = UploadJob.today();
                    //see if there is anything to upload.
                    boolean stale = false;
                    for (ILoggingCategory category : WorkbenchLoggingPlugin.getDefault().getCategoryManager()
                            .getCategories()) {
                        if (((LoggingCategory) category).isStale()) {
                            stale = true;
                            break;
                        }
                    }
                    if (stale) {
                        if (today - lastUpload >= interval) {
                            WizardDialog dialog = new WizardDialog(
                                    PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
                                    new UploadWizard());
                            dialog.open();
                        }
                    }
                } else {
                    store.setValue(UploadJob.UPLOAD_INTERVAL_KEY, UploadJob.UPLOAD_INTERVAL_WEEKLY);
                    store.setValue(UploadJob.LAST_UPLOAD_KEY, UploadJob.today());
                }
                IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
                for (IWorkbenchWindow window : windows) {
                    windowListener.windowOpened(window);
                }
                windowListener.initialize(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
                ICommandService commandService = (ICommandService) PlatformUI.getWorkbench()
                        .getService(ICommandService.class);
                if (commandService != null) {
                    commandService.addExecutionListener(commandLogger);
                }
            }

        });
    }

}