Fixes for bug #1326088
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / PHPeclipsePlugin.java
index 8786e71..622ca18 100644 (file)
@@ -13,6 +13,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -27,7 +28,6 @@ import net.sourceforge.phpdt.core.IJavaElement;
 import net.sourceforge.phpdt.core.JavaCore;
 import net.sourceforge.phpdt.core.WorkingCopyOwner;
 import net.sourceforge.phpdt.externaltools.internal.model.ColorManager;
-import net.sourceforge.phpdt.externaltools.internal.model.ExternalToolsPlugin;
 import net.sourceforge.phpdt.internal.core.BatchOperation;
 import net.sourceforge.phpdt.internal.core.JavaModelManager;
 import net.sourceforge.phpdt.internal.core.util.Util;
@@ -124,6 +124,8 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
    * The id of the PHP plugin (value <code>"net.sourceforge.phpeclipse"</code>).
    */
   public static final String PLUGIN_ID = "net.sourceforge.phpeclipse"; //$NON-NLS-1$
+  public static final String EDITOR_ID = PHPeclipsePlugin.PLUGIN_ID+".PHPUnitEditor";
+  public static final String ID_PERSPECTIVE = "net.sourceforge.phpeclipse.PHPPerspective"; //$NON-NLS-1$
 
   IWorkspace w;
 
@@ -144,32 +146,32 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * The key to store customized templates.
-   * 
+   *
    * @since 3.0
    */
   private static final String TEMPLATES_KEY = "net.sourceforge.phpdt.ui.text.custom_templates"; //$NON-NLS-1$
 
   /**
    * The key to store customized code templates.
-   * 
+   *
    * @since 3.0
    */
   private static final String CODE_TEMPLATES_KEY = "net.sourceforge.phpdt.ui.text.custom_code_templates"; //$NON-NLS-1$
 
   /**
    * The key to store whether the legacy templates have been migrated
-   * 
+   *
    * @since 3.0
    */
   //   private static final String TEMPLATES_MIGRATION_KEY= "net.sourceforge.phpdt.ui.text.templates_migrated"; //$NON-NLS-1$
   /**
    * The key to store whether the legacy code templates have been migrated
-   * 
+   *
    * @since 3.0
    */
   //   private static final String CODE_TEMPLATES_MIGRATION_KEY= "net.sourceforge.phpdt.ui.text.code_templates_migrated";
   // //$NON-NLS-1$
-  private static ExternalToolsPlugin externalTools;
+//  private static ExternalToolsPlugin externalTools;
 
   /**
    * The Java virtual machine that we are running on.
@@ -207,28 +209,28 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * The template context type registry for the java editor.
-   * 
+   *
    * @since 3.0
    */
   private ContextTypeRegistry fContextTypeRegistry;
 
   /**
    * The code template context type registry for the java editor.
-   * 
+   *
    * @since 3.0
    */
   private ContextTypeRegistry fCodeTemplateContextTypeRegistry;
 
   /**
    * The template store for the java editor.
-   * 
+   *
    * @since 3.0
    */
   private TemplateStore fTemplateStore;
 
   /**
    * The coded template store for the java editor.
-   * 
+   *
    * @since 3.0
    */
   private TemplateStore fCodeTemplateStore;
@@ -270,27 +272,27 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Property change listener on this plugin's preference store.
-   * 
+   *
    * @since 3.0
    */
   //  private IPropertyChangeListener fPropertyChangeListener;
   /**
    * The combined preference store.
-   * 
+   *
    * @since 3.0
    */
   private IPreferenceStore fCombinedPreferenceStore;
 
   /**
    * The extension point registry for the <code>net.sourceforge.phpdt.ui.javaFoldingStructureProvider</code> extension point.
-   * 
+   *
    * @since 3.0
    */
   private JavaFoldingStructureProviderRegistry fFoldingStructureProviderRegistry;
 
   /**
    * Mockup preference store for firing events and registering listeners on project setting changes. FIXME: Temporary solution.
-   * 
+   *
    * @since 3.0
    */
   private MockupPreferenceStore fMockupPreferenceStore;
@@ -301,7 +303,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
   public PHPeclipsePlugin(IPluginDescriptor descriptor) {
     super(descriptor);
     plugin = this;
-    externalTools = new ExternalToolsPlugin();
+//    externalTools = new ExternalToolsPlugin();
 
     //    try {
     //      resourceBundle =
@@ -326,7 +328,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
   //  }
   /**
    * Returns all Java editor text hovers contributed to the workbench.
-   * 
+   *
    * @return an array of JavaEditorTextHoverDescriptor
    * @since 2.1
    */
@@ -413,7 +415,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
    * <p>
    * This will force a rebuild of the descriptors the next time a client asks for them.
    * </p>
-   * 
+   *
    * @return an array of JavaEditorTextHoverDescriptor
    * @since 2.1
    */
@@ -451,7 +453,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
   /**
    * Returns an array of all editors that have an unsaved content. If the identical content is presented in more than one editor,
    * only one of those editor parts is part of the result.
-   * 
+   *
    * @return an array of all dirty editor parts.
    */
   public static IEditorPart[] getDirtyEditors() {
@@ -559,14 +561,26 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
     getDefault().getLog().log(status);
   }
 
-  public static void log(Throwable e) {
-    log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "PHPeclipsePlugin.internalErrorOccurred", e)); //$NON-NLS-1$
+  public static void log(Throwable t) {
+         log(error(t));
+  }
+
+  public static void log(String message, Throwable t) {
+    log(error(message, t));
   }
 
   public static void logErrorMessage(String message) {
     log(new Status(IStatus.ERROR, getPluginId(), IJavaStatusConstants.INTERNAL_ERROR, message, null));
   }
 
+  public static IStatus error(Throwable t) {
+         return error("PHPeclipsePlugin.internalErrorOccurred", t); //$NON-NLS-1$
+  }
+
+  public static IStatus error(String message, Throwable t) {
+         return new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, message, t);
+  }
+
   //  private static void setJVM() {
   //    String osName = System.getProperty("os.name");
   //    if (osName.startsWith("Mac OS")) {
@@ -604,7 +618,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Get the identifier index manager for the given project
-   * 
+   *
    * @param iProject
    *          the current project
    * @return
@@ -613,7 +627,13 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
     IPath path = iProject.getWorkingLocation(PHPeclipsePlugin.PLUGIN_ID);
     path = path.append("project.index");
     String indexFilename = path.toString();
-    //    System.out.println(indexFilename);
+//    try {
+//      IdentDB db = IdentDB.getInstance();
+//    } catch (ClassNotFoundException e) {
+//      e.printStackTrace();
+//    } catch (SQLException e) {
+//      e.printStackTrace();
+//    }
     IdentifierIndexManager indexManager = (IdentifierIndexManager) fIndexManagerMap.get(indexFilename);
     if (indexManager == null) {
       indexManager = new IdentifierIndexManager(indexFilename);
@@ -688,60 +708,59 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
     String operatingSystem = Platform.getOS();
     // maxosx, linux, solaris, win32,...
     try {
-      InputStream is = getDefault().openStream(new Path("prefs/default_" + operatingSystem + ".properties"));
+      InputStream is = getDefault().openStream(
+               new Path("prefs/default_" + operatingSystem + ".properties"));
       PropertyResourceBundle resourceBundle = new PropertyResourceBundle(is);
-      
-      store.setDefault(PHP_RUN_PREF, resourceBundle.getString(PHP_RUN_PREF));
-      store.setDefault(EXTERNAL_PARSER_PREF, resourceBundle.getString(EXTERNAL_PARSER_PREF));
-      store.setDefault(MYSQL_RUN_PREF, resourceBundle.getString(MYSQL_RUN_PREF));
-      store.setDefault(APACHE_RUN_PREF, resourceBundle.getString(APACHE_RUN_PREF));
-      
-      store.setDefault(MYSQL_PREF, resourceBundle.getString(MYSQL_PREF));
-      store.setDefault(APACHE_START_PREF, resourceBundle.getString(APACHE_START_PREF));
-      store.setDefault(APACHE_STOP_PREF, resourceBundle.getString(APACHE_STOP_PREF));
-      store.setDefault(APACHE_RESTART_PREF, resourceBundle.getString(APACHE_RESTART_PREF));
-      store.setDefault(MYSQL_START_BACKGROUND, resourceBundle.getString(MYSQL_START_BACKGROUND));
-      store.setDefault(APACHE_START_BACKGROUND, resourceBundle.getString(APACHE_START_BACKGROUND));
-      store.setDefault(APACHE_STOP_BACKGROUND, resourceBundle.getString(APACHE_STOP_BACKGROUND));
-      store.setDefault(APACHE_RESTART_BACKGROUND, resourceBundle.getString(APACHE_RESTART_BACKGROUND));
+      Enumeration enum = resourceBundle.getKeys();
+      String key;
+      while (enum.hasMoreElements()) {
+        key = (String)enum.nextElement();
+        store.setDefault(key, resourceBundle.getString( key ));
+      }
     } catch (Exception e) {
       // no default properties found
       if (operatingSystem.equals(Platform.OS_WIN32)) {
-        store.setDefault(PHP_RUN_PREF, "c:\\apache\\php\\php.exe");
-        store.setDefault(EXTERNAL_PARSER_PREF, "c:\\apache\\php\\php -l -f {0}");
-        store.setDefault(MYSQL_RUN_PREF, "c:\\apache\\mysql\\bin\\mysqld-nt.exe");
-        store.setDefault(APACHE_RUN_PREF, "c:\\apache\\apache.exe");
+//        store.setDefault(PHP_RUN_PREF, "c:\\apache\\php\\php.exe");
+//        store.setDefault(EXTERNAL_PARSER_PREF, "c:\\apache\\php\\php -l -f {0}");
+//        store.setDefault(MYSQL_RUN_PREF, "c:\\apache\\mysql\\bin\\mysqld-nt.exe");
+//        store.setDefault(APACHE_RUN_PREF, "c:\\apache\\apache.exe");
+//        store.setDefault(XAMPP_START_PREF, "c:\\xampp\\xampp_start.exe");
+//        store.setDefault(XAMPP_STOP_PREF, "c:\\xampp\\xampp_stop.exe");
+//        store.setDefault(
+//             ETC_HOSTS_PATH_PREF, "c:\\windows\\system32\\drivers\\etc\\hosts");
       } else {
-        store.setDefault(PHP_RUN_PREF, "/apache/php/php");
-        store.setDefault(EXTERNAL_PARSER_PREF, "/apache/php/php -l -f {0}");
-        store.setDefault(MYSQL_RUN_PREF, "/apache/mysql/bin/mysqld");
-        store.setDefault(APACHE_RUN_PREF, "/apache/apache");
+//        store.setDefault(PHP_RUN_PREF, "/apache/php/php");
+//        store.setDefault(EXTERNAL_PARSER_PREF, "/apache/php/php -l -f {0}");
+//        store.setDefault(MYSQL_RUN_PREF, "/apache/mysql/bin/mysqld");
+//        store.setDefault(APACHE_RUN_PREF, "/apache/apache");
+//        store.setDefault(XAMPP_START_PREF, "xamp/xampp_start");
+//        store.setDefault(XAMPP_STOP_PREF, "xampp/xampp_stop");
       }
-      store.setDefault(MYSQL_PREF, "--standalone");
-      store.setDefault(APACHE_START_PREF, "-c \"DocumentRoot \"{0}\"\"");
-      store.setDefault(APACHE_STOP_PREF, "-k shutdown");
-      store.setDefault(APACHE_RESTART_PREF, "-k restart");
-      store.setDefault(MYSQL_START_BACKGROUND, "true");
-      store.setDefault(APACHE_START_BACKGROUND, "true");
-      store.setDefault(APACHE_STOP_BACKGROUND, "true");
-      store.setDefault(APACHE_RESTART_BACKGROUND, "true");
+//      store.setDefault(MYSQL_PREF, "--standalone");
+//      store.setDefault(APACHE_START_PREF, "-c \"DocumentRoot \"{0}\"\"");
+//      store.setDefault(APACHE_STOP_PREF, "-k shutdown");
+//      store.setDefault(APACHE_RESTART_PREF, "-k restart");
+//      store.setDefault(MYSQL_START_BACKGROUND, "true");
+//      store.setDefault(APACHE_START_BACKGROUND, "true");
+//      store.setDefault(APACHE_STOP_BACKGROUND, "true");
+//      store.setDefault(APACHE_RESTART_BACKGROUND, "true");
     }
 
-    store.setDefault(SHOW_OUTPUT_IN_CONSOLE, "true");
-    store.setDefault(PHP_OBFUSCATOR_DEFAULT, "c:\\temp");
-    if (operatingSystem.equals(Platform.OS_WIN32)) {
+//    store.setDefault(SHOW_OUTPUT_IN_CONSOLE, "true");
+//    store.setDefault(PHP_OBFUSCATOR_DEFAULT, "c:\\temp");
+//    if (operatingSystem.equals(Platform.OS_WIN32)) {
       //    store.setDefault(EXTERNAL_BROWSER_PREF, "rundll32 url.dll,FileProtocolHandler {0}");
-    } else if (operatingSystem.equals(Platform.OS_MACOSX)) {
-      store.setDefault(PHP_OBFUSCATOR_DEFAULT, "/tmp");
+//    } else if (operatingSystem.equals(Platform.OS_MACOSX)) {
+//      store.setDefault(PHP_OBFUSCATOR_DEFAULT, "/tmp");
       // TODO How do we start Safari on Mac OS X ?
       //    store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}");
-    } else {
-      store.setDefault(PHP_OBFUSCATOR_DEFAULT, "/tmp");
+//    } else {
+//      store.setDefault(PHP_OBFUSCATOR_DEFAULT, "/tmp");
       //    store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}");
-    }
+//    }
+
+//    store.setDefault(PHP_EXTENSION_PREFS, "php,php3,php4,php5,phtml,inc,module,class");
 
-    store.setDefault(PHP_EXTENSION_PREFS, "php,php3,php4,php5,phtml,inc,module,class");
-    
     //    store.setDefault(PHP_PARSER_DEFAULT, PHP_EXTERNAL_PARSER);
     //    store.setDefault(PHP_INTERNAL_PARSER, "false");
     //    store.setDefault(PHP_EXTERNAL_PARSER, "true");
@@ -752,15 +771,18 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
     // php syntax highlighting
     store.setDefault(PHP_USERDEF_XMLFILE, "");
     //assume there is none chooA
-    PreferenceConverter.setDefault(store, PHP_MULTILINE_COMMENT, PHPColorProvider.MULTI_LINE_COMMENT);
-    PreferenceConverter.setDefault(store, PHP_SINGLELINE_COMMENT, PHPColorProvider.SINGLE_LINE_COMMENT);
+//    PreferenceConverter.setDefault(store, PHP_MULTILINE_COMMENT, PHPColorProvider.MULTI_LINE_COMMENT);
+//    PreferenceConverter.setDefault(store, PHP_SINGLELINE_COMMENT, PHPColorProvider.SINGLE_LINE_COMMENT);
     PreferenceConverter.setDefault(store, PHP_TAG, PHPColorProvider.TAG);
     PreferenceConverter.setDefault(store, PHP_KEYWORD, PHPColorProvider.KEYWORD);
     PreferenceConverter.setDefault(store, PHP_VARIABLE, PHPColorProvider.VARIABLE);
+    PreferenceConverter.setDefault(store, PHP_VARIABLE_DOLLAR, PHPColorProvider.VARIABLE);
     PreferenceConverter.setDefault(store, PHP_FUNCTIONNAME, PHPColorProvider.FUNCTION_NAME);
     PreferenceConverter.setDefault(store, PHP_CONSTANT, PHPColorProvider.CONSTANT);
     PreferenceConverter.setDefault(store, PHP_TYPE, PHPColorProvider.TYPE);
-    PreferenceConverter.setDefault(store, PHP_STRING, PHPColorProvider.STRING);
+//    PreferenceConverter.setDefault(store, PHP_STRING_DQ, PHPColorProvider.STRING_DQ);
+//    store.setDefault(PHP_STRING_BOLD_DQ, true);
+//    PreferenceConverter.setDefault(store, PHP_STRING_SQ, PHPColorProvider.STRING_SQ);
     PreferenceConverter.setDefault(store, PHP_DEFAULT, PHPColorProvider.DEFAULT);
     PreferenceConverter.setDefault(store, PHPDOC_KEYWORD, PHPColorProvider.PHPDOC_KEYWORD);
     PreferenceConverter.setDefault(store, PHPDOC_TAG, PHPColorProvider.PHPDOC_TAG);
@@ -823,7 +845,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
     new PHPSyntaxRdr();
     JavaCore.initializeDefaultPluginPreferences();
     PreferenceConstants.initializeDefaultValues(store);
-    externalTools.initializeDefaultPreferences(store);
+//    externalTools.initializeDefaultPreferences(store);
     MarkerAnnotationPreferences.initializeDefaultValues(store);
   }
 
@@ -842,7 +864,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Open a file in the Workbench that may or may not exist in the workspace. Must be run on the UI thread.
-   * 
+   *
    * @param filename
    * @throws CoreException
    */
@@ -888,7 +910,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Open a file in the Workbench that may or may not exist in the workspace. Must be run on the UI thread.
-   * 
+   *
    * @param filename
    * @param line
    * @throws CoreException
@@ -911,7 +933,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Open a file in the Workbench that may or may not exist in the workspace. Must be run on the UI thread.
-   * 
+   *
    * @param filename
    * @param offset
    * @throws CoreException
@@ -1307,9 +1329,9 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Returns a combined preference store, this store is read-only.
-   * 
+   *
    * @return the combined preference store
-   * 
+   *
    * @since 3.0
    */
   public IPreferenceStore getCombinedPreferenceStore() {
@@ -1332,7 +1354,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
   /**
    * Returns the registry of the extensions to the <code>net.sourceforge.phpdt.ui.javaFoldingStructureProvider</code> extension
    * point.
-   * 
+   *
    * @return the registry of contributed <code>IJavaFoldingStructureProvider</code>
    * @since 3.0
    */
@@ -1356,7 +1378,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
    * <p>
    * If this method is called in the dynamic scope of another such call, this method simply runs the action.
    * </p>
-   * 
+   *
    * @param action
    *          the action to perform
    * @param monitor
@@ -1387,7 +1409,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
    * The supplied scheduling rule is used to determine whether this operation can be run simultaneously with workspace changes in
    * other threads. See <code>IWorkspace.run(...)</code> for more details.
    * </p>
-   * 
+   *
    * @param action
    *          the action to perform
    * @param rule
@@ -1412,7 +1434,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Returns the template context type registry for the java plugin.
-   * 
+   *
    * @return the template context type registry for the java plugin
    * @since 3.0
    */
@@ -1430,7 +1452,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Returns the template store for the java editor templates.
-   * 
+   *
    * @return the template store for the java editor templates
    * @since 3.0
    */
@@ -1457,7 +1479,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Returns the template context type registry for the code generation templates.
-   * 
+   *
    * @return the template context type registry for the code generation templates
    * @since 3.0
    */
@@ -1473,7 +1495,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon
 
   /**
    * Returns the template store for the code generation templates.
-   * 
+   *
    * @return the template store for the code generation templates
    * @since 3.0
    */