blob: c29be214f4901db3b3487b94a742fd1183df2915 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 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 Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ptp.rdt.ui;
import org.eclipse.cdt.internal.ui.ICStatusConstants;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.core.runtime.Status;
import org.eclipse.ptp.rdt.ui.serviceproviders.IndexLocationChangeListener;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.internal.editors.text.EditorsPlugin;
import org.osgi.framework.BundleContext;
/**
* <strong>EXPERIMENTAL</strong>. This class or interface has been added as part
* of a work in progress. There is no guarantee that this API will work or that
* it will remain the same. Please do not use this API without consulting with
* the RDT team.
*
*
*/
public class UIPlugin extends Plugin {
private static UIPlugin fInstance = null;
public static final String PLUGIN_ID = "org.eclipse.ptp.rdt.ui"; //$NON-NLS-1$
public static final String TYPE_HIERARCHY_VIEW_ID = "org.eclipse.ptp.rdt.ui.typeHierarchy"; //$NON-NLS-1$
public static final String CALL_HIERARCHY_VIEW_ID = "org.eclipse.ptp.rdt.ui.callHierarchy"; //$NON-NLS-1$
public static final String INCLUDE_BROWSER_VIEW_ID = "org.eclipse.ptp.rdt.ui.includeBrowser"; //$NON-NLS-1$
private static final String PREFERENCE_HAS_ALREADY_RUN = "org.eclipse.ptp.rdt.ui.hasRun"; //$NON-NLS-1$
public static final String REMOTE_SEARCH_ACTION_SET_ID = "org.eclipse.ptp.rdt.ui.SearchActionSet"; //$NON-NLS-1$
public UIPlugin() {
fInstance = this;
}
/**
* Returns the standard display to be used. The method first checks, if the
* thread calling this method has an associated display. If so, this display
* is returned. Otherwise the method returns the default display.
*/
public static Display getStandardDisplay() {
Display display = Display.getCurrent();
if (display == null) {
display = Display.getDefault();
}
return display;
}
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
IndexLocationChangeListener.startListening();
turnOffIndexerAnnotations();
}
@Override
public void stop(BundleContext context) throws Exception {
try {
IndexLocationChangeListener.stopListening();
} finally {
super.stop(context);
}
}
public static UIPlugin getDefault() {
return fInstance;
}
/**
* Turns off the C/C++ Indexer Marker annotations.
*
* This is done because there are currently bugs with false annotations
* being presented by the remote editor, so its better to just not show them
* at all.
*
* Only runs once, the first time RDT is used.
*
* TODO Find a better way to fix this!
*/
private static void turnOffIndexerAnnotations() {
Preferences preferences = EditorsPlugin.getDefault().getPluginPreferences();
boolean hasAlreadyRun = preferences.getBoolean(PREFERENCE_HAS_ALREADY_RUN); // default
// is
// false
if (!hasAlreadyRun) {
// Set the preferences to false, this is the same as going to the
// Annotations
// preference page for C/C++ Indexer Markers and unchecking the
// checkboxes.
preferences.setValue("indexResultIndicationInOverviewRuler", false); //$NON-NLS-1$
preferences.setValue("indexResultIndicationInVerticalRuler", false); //$NON-NLS-1$
preferences.setValue("indexResultIndication", false); //$NON-NLS-1$
// only do this once ever
preferences.setValue(PREFERENCE_HAS_ALREADY_RUN, true);
EditorsPlugin.getDefault().savePluginPreferences();
}
}
public static void log(Throwable e) {
log("Error", e); //$NON-NLS-1$
}
public static void log(String message, Throwable e) {
log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, message, e));
}
public static void log(IStatus status) {
getDefault().getLog().log(status);
}
public void logErrorMessage(String message) {
log(new Status(IStatus.ERROR, getPluginId(), ICStatusConstants.INTERNAL_ERROR, message, null));
}
public static String getPluginId() {
return PLUGIN_ID;
}
}