Java tutorial
/******************************************************************************* * Copyright (c) 2008 Chase Technology Ltd - http://www.chasetechnology.co.uk * 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: * Doug Satchwell (Chase Technology Ltd) - initial API and implementation *******************************************************************************/ package org.eclipse.wst.xsl.internal.debug.ui; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.preference.IPreferenceNode; import org.eclipse.jface.preference.IPreferencePage; import org.eclipse.jface.preference.PreferenceDialog; import org.eclipse.jface.preference.PreferenceManager; import org.eclipse.jface.preference.PreferenceNode; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.window.Window; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; /** * The XSL Debug UI plugin. * * @author Doug Satchwell * @since 1.0 */ public class XSLDebugUIPlugin extends AbstractUIPlugin { /** * The id of this. */ public static final String PLUGIN_ID = "org.eclipse.wst.xsl.debug.ui"; //$NON-NLS-1$ // The shared instance private static XSLDebugUIPlugin plugin; private XSLDebugUILaunchListener launchListener = new XSLDebugUILaunchListener(); /** * Create a new instance of this. */ public XSLDebugUIPlugin() { plugin = this; } @Override public void start(BundleContext context) throws Exception { super.start(context); launchListener.start(); } @Override public void stop(BundleContext context) throws Exception { plugin = null; launchListener.stop(); super.stop(context); } /** * Get the singleton instance of this. * * @return the singleton */ public static XSLDebugUIPlugin getDefault() { return plugin; } /** * Get an ImageDescriptor from a path in this bundle. * * @param path * the path to the image * @return the ImageDescriptor */ public static ImageDescriptor getImageDescriptor(String path) { return imageDescriptorFromPlugin(PLUGIN_ID, path); } /** * Convenience method for opening a given preference page. * * @param id * the id of the preference page * @param page * the preference page to show */ public static void showPreferencePage(String id, IPreferencePage page) { final IPreferenceNode targetNode = new PreferenceNode(id, page); PreferenceManager manager = new PreferenceManager(); manager.addToRoot(targetNode); final PreferenceDialog dialog = new PreferenceDialog(XSLDebugUIPlugin.getActiveWorkbenchShell(), manager); final boolean[] result = new boolean[] { false }; BusyIndicator.showWhile(XSLDebugUIPlugin.getStandardDisplay(), new Runnable() { public void run() { dialog.create(); dialog.setMessage(targetNode.getLabelText()); result[0] = (dialog.open() == Window.OK); } }); } /** * Get the current Display if possible, or else the default Display. * * @return the current or default Display */ public static Display getStandardDisplay() { Display display; display = Display.getCurrent(); if (display == null) display = Display.getDefault(); return display; } /** * Get the active workbench window from the workbench. * * @return the active workbench window */ public static IWorkbenchWindow getActiveWorkbenchWindow() { return getDefault().getWorkbench().getActiveWorkbenchWindow(); } /** * Get the shell of the active workbench window. * * @return the active workbench shell */ public static Shell getActiveWorkbenchShell() { IWorkbenchWindow window = getActiveWorkbenchWindow(); if (window != null) { return window.getShell(); } return null; } /** * Get the active page of the active workbench window. * * @return the active page */ public static IWorkbenchPage getActivePage() { IWorkbenchWindow w = getActiveWorkbenchWindow(); if (w != null) { return w.getActivePage(); } return null; } /** * Log the given exception by creating a new Status. * * @param e * the exception to log */ public static void log(Exception e) { getDefault().getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, 0, "", e)); //$NON-NLS-1$ } /** * Log the given core exception. * * @param e * the exception to log */ public static void log(CoreException e) { getDefault().getLog().log(e.getStatus()); } }