org.eclipse.m2m.internal.qvt.oml.debug.ui.QVTODebugUIPlugin.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.m2m.internal.qvt.oml.debug.ui.QVTODebugUIPlugin.java

Source

/*******************************************************************************
 * Copyright (c) 2009 R.Dvorak and others.
 * 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:
 *     Radek Dvorak - initial API and implementation
 *******************************************************************************/
package org.eclipse.m2m.internal.qvt.oml.debug.ui;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.viewers.DecorationOverlayIcon;
import org.eclipse.jface.viewers.IDecoration;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

/**
 * The activator class controls the plug-in life cycle
 */
public class QVTODebugUIPlugin extends AbstractUIPlugin {

    // The plug-in fBreakpointID
    public static final String PLUGIN_ID = "org.eclipse.m2m.qvt.oml.debug.ui"; //$NON-NLS-1$

    public static final String DEBUG_EDITOR_ID = "org.eclipse.m2m.qvt.oml.editor.ui.QvtEditor"; //$NON-NLS-1$   

    // The shared instance
    private static QVTODebugUIPlugin plugin;

    /**
     * The constructor
     */
    public QVTODebugUIPlugin() {
        plugin = this;
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
     * )
     */
    @Override
    public void start(BundleContext context) throws Exception {
        super.start(context);
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
     * )
     */
    @Override
    public void stop(BundleContext context) throws Exception {
        plugin = null;
        super.stop(context);
    }

    /**
     * Returns the shared instance
     * 
     * @return the shared instance
     */
    public static QVTODebugUIPlugin getDefault() {
        return plugin;
    }

    public static void log(IStatus status) {
        getDefault().getLog().log(status);
    }

    public static void log(Throwable e) {
        log(new Status(IStatus.ERROR, PLUGIN_ID, 100001, "Unexpected exception caught", e)); //$NON-NLS-1$
    }

    public static IStatus createStatus(int severity, String message) {
        return new Status(severity, PLUGIN_ID, 0, message, null);
    }

    public static IStatus createErrorStatus(String message) {
        return createStatus(IStatus.ERROR, message);
    }

    /**
     * Returns the active workbench window
     * 
     * @return the active workbench window
     */
    public static IWorkbenchWindow getActiveWorkbenchWindow() {
        return getDefault().getWorkbench().getActiveWorkbenchWindow();
    }

    /**
     * Returns the active workbench shell or <code>null</code> if none
     * 
     * @return the active workbench shell or <code>null</code> if none
     */
    public static Shell getActiveWorkbenchShell() {
        IWorkbenchWindow window = getActiveWorkbenchWindow();
        if (window != null) {
            return window.getShell();
        }
        return null;
    }

    public static void statusDialog(IStatus status) {
        switch (status.getSeverity()) {
        case IStatus.ERROR:
            statusDialog(DebugUIMessages.StatusDialog_Error, status);
            break;
        case IStatus.WARNING:
            statusDialog(DebugUIMessages.StatusDialog_Warning, status);
            break;
        case IStatus.INFO:
            statusDialog(DebugUIMessages.StatusDialog_Information, status);
            break;
        }
    }

    public static void statusDialog(String title, IStatus status) {
        Shell shell = getActiveWorkbenchShell();
        if (shell != null) {
            switch (status.getSeverity()) {
            case IStatus.ERROR:
                ErrorDialog.openError(shell, title, null, status);
                break;
            case IStatus.WARNING:
                MessageDialog.openWarning(shell, title, status.getMessage());
                break;
            case IStatus.INFO:
                MessageDialog.openInformation(shell, title, status.getMessage());
                break;
            }
        }
    }

    public static final Display getStandardDisplay() {
        Display display = Display.getCurrent();
        if (display == null) {
            display = Display.getDefault();
        }
        return display;
    }

    @Override
    protected ImageRegistry createImageRegistry() {
        ImageRegistry imageRegistry = super.createImageRegistry();
        imageRegistry.put(QVTODebugImages.LOCAL_VARIABLE, imageDescriptor("localvar_obj.gif")); //$NON-NLS-1$      
        imageRegistry.put(QVTODebugImages.THIS_VARIABLE, imageDescriptor("thisvar_obj.gif")); //$NON-NLS-1$
        imageRegistry.put(QVTODebugImages.PREDEFINED_VARIABLE, imageDescriptor("predefvar_obj.gif")); //$NON-NLS-1$
        imageRegistry.put(QVTODebugImages.MODEL_PARAMETER, imageDescriptor("modelpar_obj.gif")); //$NON-NLS-1$
        imageRegistry.put(QVTODebugImages.ATTRIBUTE, imageDescriptor("attribute_obj.gif")); //$NON-NLS-1$
        imageRegistry.put(QVTODebugImages.REFERENCE, imageDescriptor("reference_obj.gif")); //$NON-NLS-1$
        imageRegistry.put(QVTODebugImages.COLLECTION_ELEMENT, imageDescriptor("index_element_obj.gif")); //$NON-NLS-1$

        imageRegistry.put(QVTODebugImages.INTERM_PROPERTY, overlayImage("intermprop_ovr.gif", //$NON-NLS-1$ 
                imageRegistry.get(QVTODebugImages.ATTRIBUTE), IDecoration.BOTTOM_RIGHT));

        imageRegistry.put(QVTODebugImages.CONDITIONAL_BPNT_ENABLED, overlayImage("conditional_ovr.gif", //$NON-NLS-1$ 
                DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_BREAKPOINT), IDecoration.TOP_LEFT));
        imageRegistry.put(QVTODebugImages.CONDITIONAL_BPNT_DISABLED, overlayImage("conditional_ovr_disabled.gif", //$NON-NLS-1$
                DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_BREAKPOINT_DISABLED), IDecoration.TOP_LEFT));

        return imageRegistry;
    }

    private ImageDescriptor imageDescriptor(String imagePath) {
        return imageDescriptorFromPlugin(PLUGIN_ID, "icons/" + imagePath); //$NON-NLS-1$
    }

    private final ImageDescriptor overlayImage(String overImagePath, Image base, int quadrant) {
        ImageDescriptor decorator = imageDescriptor(overImagePath);
        return new DecorationOverlayIcon(base, decorator, quadrant);
    }
}