/******************************************************************************* * Copyright (c) 2002, 2010 IBM Corporation 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: * IBM Rational Software - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.managedbuilder.ui.properties; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.plugin.AbstractUIPlugin; public class ManagedBuilderUIPlugin extends AbstractUIPlugin { //The shared instance. private static ManagedBuilderUIPlugin plugin; // Unique ID of the plugin private static final String PLUGIN_ID = "org.eclipse.cdt.managedbuilder.ui"; //$NON-NLS-1$ /** * The constructor */ public ManagedBuilderUIPlugin() { // super(); plugin = this; } /** * @return */ public static Shell getActiveWorkbenchShell() { IWorkbenchWindow window = getActiveWorkbenchWindow(); if (window != null) { return window.getShell(); } return null; } /** * Returns the active workbench window or <code>null</code> if none */ public static IWorkbenchWindow getActiveWorkbenchWindow() { return getDefault().getWorkbench().getActiveWorkbenchWindow(); } /** * Returns the singleton instance of the plugin */ public static ManagedBuilderUIPlugin getDefault() { return plugin; } /** * Convenience method which returns the unique identifier of this plugin. */ public static String getUniqueIdentifier() { return PLUGIN_ID; } public static void log(IStatus status) { ResourcesPlugin.getPlugin().getLog().log(status); } public static void log(Throwable e) { if (e instanceof InvocationTargetException) e = ((InvocationTargetException) e).getTargetException(); IStatus status = null; if (e instanceof CoreException) status = ((CoreException) e).getStatus(); else status = new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.OK, e.getMessage(), e); log(status); } /** * Utility method with conventions */ public static void errorDialog(Shell shell, String title, String message, Throwable t) { log(t); IStatus status; if (t instanceof CoreException) { status = ((CoreException) t).getStatus(); // if the 'message' resource string and the IStatus' message are the same, // don't show both in the dialog if (status != null && message.equals(status.getMessage())) { message = null; } } else { status = new Status(IStatus.ERROR, ManagedBuilderUIPlugin.getUniqueIdentifier(), -1, "Internal Error: ", t); //$NON-NLS-1$ } ErrorDialog.openError(shell, title, message, status); } /** * @return */ public static IWorkspace getWorkspace() { return ResourcesPlugin.getWorkspace(); } /** * Answers the <code>Shell</code> associated with the active workbench, or * one of the windows associated with the workbench. * @return */ public Shell getShell() { if (getActiveWorkbenchShell() != null) { return getActiveWorkbenchShell(); } else { IWorkbenchWindow[] windows = getDefault().getWorkbench().getWorkbenchWindows(); return windows[0].getShell(); } } }