blob: 6ab2c7d4c50bcc07a9f1a66f6dbd41176916dae5 [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;
}
}