Created a separated 'externaltools' plugin: initial check-in
[phpeclipse.git] / net.sourceforge.phpeclipse.externaltools / src / net / sourceforge / phpeclipse / externaltools / ExternalToolsPlugin.java
diff --git a/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpeclipse/externaltools/ExternalToolsPlugin.java b/net.sourceforge.phpeclipse.externaltools/src/net/sourceforge/phpeclipse/externaltools/ExternalToolsPlugin.java
new file mode 100644 (file)
index 0000000..811948e
--- /dev/null
@@ -0,0 +1,216 @@
+package net.sourceforge.phpeclipse.externaltools;
+
+/**********************************************************************
+ Copyright (c) 2002 IBM Corp. and others. All rights reserved.
+ This file is made available under the terms of the Common Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/cpl-v10.html
+ �
+ Contributors:
+ **********************************************************************/
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import net.sourceforge.phpdt.externaltools.internal.model.ColorManager;
+import net.sourceforge.phpdt.externaltools.internal.model.ExternalToolsImages;
+import net.sourceforge.phpdt.externaltools.internal.model.IPreferenceConstants;
+import net.sourceforge.phpdt.externaltools.internal.model.VariableContextManager;
+import net.sourceforge.phpdt.externaltools.internal.registry.ArgumentVariableRegistry;
+import net.sourceforge.phpdt.externaltools.internal.registry.PathLocationVariableRegistry;
+import net.sourceforge.phpdt.externaltools.internal.registry.RefreshScopeVariableRegistry;
+import net.sourceforge.phpdt.externaltools.model.IExternalToolConstants;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.Bundle;
+
+/**
+ * External tools plug-in class
+ */
+public final class ExternalToolsPlugin extends AbstractUIPlugin {
+  /**
+   * Status representing no problems encountered during operation.
+   */
+  public static final IStatus OK_STATUS = new Status(IStatus.OK, IExternalToolConstants.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
+
+  private static ExternalToolsPlugin plugin;
+
+  private RefreshScopeVariableRegistry refreshVarRegistry;
+
+  private PathLocationVariableRegistry fileLocVarRegistry;
+
+  private PathLocationVariableRegistry dirLocVarRegistry;
+
+  private ArgumentVariableRegistry argumentVarRegistry;
+
+  /**
+   * Create an instance of the External Tools plug-in.
+   */
+  public ExternalToolsPlugin() { // IPluginDescriptor descriptor) {
+    // super(descriptor);
+    plugin = this;
+  }
+
+  /**
+   * Returns the default instance of the receiver. This represents the runtime plugin.
+   */
+  public static ExternalToolsPlugin getDefault() {
+    return plugin;
+  }
+
+  /**
+   * Returns a new <code>IStatus</code> for this plug-in
+   */
+  public static IStatus newErrorStatus(String message, Throwable exception) {
+    return new Status(Status.ERROR, IExternalToolConstants.PLUGIN_ID, 0, message, exception);
+  }
+
+  /**
+   * Returns a new <code>CoreException</code> for this plug-in
+   */
+  public static CoreException newError(String message, Throwable exception) {
+    return new CoreException(new Status(Status.ERROR, IExternalToolConstants.PLUGIN_ID, 0, message, exception));
+  }
+
+  /**
+   * Returns the registry of refresh scope variables.
+   */
+  public ArgumentVariableRegistry getArgumentVariableRegistry() {
+    if (argumentVarRegistry == null)
+      argumentVarRegistry = new ArgumentVariableRegistry();
+    return argumentVarRegistry;
+  }
+
+  /**
+   * Returns the registry of directory location variables.
+   */
+  public PathLocationVariableRegistry getDirectoryLocationVariableRegistry() {
+    if (dirLocVarRegistry == null)
+      dirLocVarRegistry = new PathLocationVariableRegistry(IExternalToolConstants.EXTENSION_POINT_DIRECTORY_VARIABLES);
+    return dirLocVarRegistry;
+  }
+
+  /**
+   * Returns the registry of file location variables.
+   */
+  public PathLocationVariableRegistry getFileLocationVariableRegistry() {
+    if (fileLocVarRegistry == null)
+      fileLocVarRegistry = new PathLocationVariableRegistry(IExternalToolConstants.EXTENSION_POINT_FILE_VARIABLES);
+    return fileLocVarRegistry;
+  }
+
+  /**
+   * Returns the registry of refresh scope variables.
+   */
+  public RefreshScopeVariableRegistry getRefreshVariableRegistry() {
+    if (refreshVarRegistry == null)
+      refreshVarRegistry = new RefreshScopeVariableRegistry();
+    return refreshVarRegistry;
+  }
+
+  /**
+   * Writes the message to the plug-in's log
+   * 
+   * @param message
+   *          the text to write to the log
+   */
+  public void log(String message, Throwable exception) {
+    IStatus status = newErrorStatus(message, exception);
+    // getLog().log(status);
+    PHPeclipsePlugin.log(status);
+  }
+
+  /**
+   * Returns the ImageDescriptor for the icon with the given path
+   * 
+   * @return the ImageDescriptor object
+   */
+  public ImageDescriptor getImageDescriptor(String path) {
+    try {
+      Bundle bundle = PHPeclipsePlugin.getDefault().getBundle();
+      URL installURL = bundle.getEntry("/"); //$NON-NLS-1$
+      URL url = new URL(installURL, path);
+      return ImageDescriptor.createFromURL(url);
+    } catch (MalformedURLException e) {
+      return null;
+    }
+  }
+
+  /*
+   * (non-Javadoc) Method declared in AbstractUIPlugin.
+   */
+  public void initializeDefaultPreferences(IPreferenceStore prefs) {
+    prefs.setDefault(IPreferenceConstants.PROMPT_FOR_MIGRATION, true);
+
+    PreferenceConverter.setDefault(prefs, IPreferenceConstants.CONSOLE_ERROR_RGB, new RGB(255, 0, 0)); // red - exactly the same as
+                                                                                                       // debug Consol
+    PreferenceConverter.setDefault(prefs, IPreferenceConstants.CONSOLE_WARNING_RGB, new RGB(255, 100, 0)); // orange
+    PreferenceConverter.setDefault(prefs, IPreferenceConstants.CONSOLE_INFO_RGB, new RGB(0, 0, 255)); // blue
+    PreferenceConverter.setDefault(prefs, IPreferenceConstants.CONSOLE_VERBOSE_RGB, new RGB(0, 200, 125)); // green
+    PreferenceConverter.setDefault(prefs, IPreferenceConstants.CONSOLE_DEBUG_RGB, new RGB(0, 0, 0)); // black
+  }
+
+  public static IWorkbenchWindow getActiveWorkbenchWindow() {
+    return PHPeclipsePlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
+  }
+
+  /**
+   * 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;
+  }
+
+  /**
+   * @see org.eclipse.ui.plugin.AbstractUIPlugin#createImageRegistry()
+   */
+  protected ImageRegistry createImageRegistry() {
+    return ExternalToolsImages.initializeImageRegistry();
+  }
+
+  /**
+   * @see org.eclipse.core.runtime.Plugin#startup()
+   */
+  public void startup() throws CoreException {
+//    super.startup();
+    getStandardDisplay().asyncExec(new Runnable() {
+      public void run() {
+        //initialize the variable context manager
+        VariableContextManager.getDefault();
+      }
+    });
+  }
+
+  /**
+   * @see org.eclipse.core.runtime.Plugin#shutdown()
+   */
+  public void shutdown() throws CoreException {
+//     super.shutdown();
+    ColorManager.getDefault().dispose();
+  }
+
+  /**
+   * Returns the preference color, identified by the given preference.
+   */
+  public static Color getPreferenceColor(String pref) {
+    return ColorManager.getDefault().getColor(
+        PreferenceConverter.getColor(PHPeclipsePlugin.getDefault().getPreferenceStore(), pref));
+  }
+}
\ No newline at end of file