improved php parser
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / PHPeclipsePlugin.java
index 911cceb..b4b4e07 100644 (file)
@@ -14,28 +14,47 @@ package net.sourceforge.phpeclipse;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
+import net.sourceforge.phpeclipse.phpeditor.PHPDocumentProvider;
+import net.sourceforge.phpeclipse.phpeditor.util.PHPColorProvider;
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IPluginDescriptor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 
 /**
  * The main plugin class to be used in the desktop.
  */
-public class PHPeclipsePlugin extends AbstractUIPlugin {
-       public static final String LOCALHOST_PREF = "_localhost";
-       public static final String DOCUMENTROOT_PREF = "_documentroot";
-       public static final String USE_EXTERNAL_BROWSER_PREF = "_use_external_browser";
-       public static final String EXTERNAL_BROWSER_PREF = "_external_browser";
-       public static final String MYSQL_PREF = "_my_sql";
-       public static final String APACHE_START_PREF = "_apache_start";
-       public static final String APACHE_STOP_PREF = "_apache_stop";
-       public static final String APACHE_RESTART_PREF = "_apache_restart";
+public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceConstants {
+//     public static final String LOCALHOST_PREF = "_localhost";
+//     public static final String DOCUMENTROOT_PREF = "_documentroot";
+//     public static final String USE_EXTERNAL_BROWSER_PREF = "_use_external_browser";
+//     public static final String EXTERNAL_BROWSER_PREF = "_external_browser";
+//     public static final String MYSQL_PREF = "_my_sql";
+//     public static final String APACHE_START_PREF = "_apache_start";
+//     public static final String APACHE_STOP_PREF = "_apache_stop";
+//     public static final String APACHE_RESTART_PREF = "_apache_restart";
+//  public static final String SHOW_OUTPUT_IN_CONSOLE = "_sho_output_in_console";
+//  public static final String EXTERNAL_PARSER_PREF = "_external_parser";
+  
+  /**
+   * The id of the PHP plugin (value <code>"net.sourceforge.phpeclipse"</code>).
+   */ 
+  public static final String ID_PLUGIN= "net.sourceforge.phpeclipse"; //$NON-NLS-1$
+  
        //The shared instance.
        private static PHPeclipsePlugin plugin;
        //Resource bundle.
        private ResourceBundle resourceBundle;
+  
+  private PHPDocumentProvider fCompilationUnitDocumentProvider;
        /**
        * The Java virtual machine that we are running on.  
        */
@@ -75,6 +94,13 @@ public class PHPeclipsePlugin extends AbstractUIPlugin {
                }
        }
 
+  // @TODO: refactor this into a better method name !
+  public PHPDocumentProvider getCompilationUnitDocumentProvider() {
+    if (fCompilationUnitDocumentProvider == null)
+      fCompilationUnitDocumentProvider= new PHPDocumentProvider();
+    return fCompilationUnitDocumentProvider;
+  }
+  
        public static void setJVM() {
                String osName = System.getProperty("os.name");
 
@@ -124,6 +150,52 @@ public class PHPeclipsePlugin extends AbstractUIPlugin {
        public static IWorkspace getWorkspace() {
                return ResourcesPlugin.getWorkspace();
        }
+  public static IWorkbenchPage getActivePage() {
+    return getDefault().getActivePage();
+  }
+  
+  public static IWorkbenchWindow getActiveWorkbenchWindow() {
+    return getDefault().getWorkbench().getActiveWorkbenchWindow();
+  }
+  
+  public static Shell getActiveWorkbenchShell() {
+    return getActiveWorkbenchWindow().getShell();
+  }
+  
+  public static String getPluginId() {
+    return getDefault().getDescriptor().getUniqueIdentifier();
+  }
+
+  public static void log(IStatus status) {
+    getDefault().getLog().log(status);
+  }
+  
+//  public static void logErrorMessage(String message) {
+//    log(new Status(IStatus.ERROR, getPluginId(), JavaStatusConstants.INTERNAL_ERROR, message, null));
+//  }
+//
+//  public static void logErrorStatus(String message, IStatus status) {
+//    if (status == null) {
+//      logErrorMessage(message);
+//      return; 
+//    }
+//    MultiStatus multi= new MultiStatus(getPluginId(), JavaStatusConstants.INTERNAL_ERROR, message, null);
+//    multi.add(status);
+//    log(multi);
+//  }
+//  
+//  public static void log(Throwable e) {
+//    log(new Status(IStatus.ERROR, getPluginId(), JavaStatusConstants.INTERNAL_ERROR, JavaUIMessages.getString("JavaPlugin.internal_error"), e)); //$NON-NLS-1$
+//  }
+  
+  public static boolean isDebug() {
+    return getDefault().isDebugging();
+  }
+  
+  static IPath getInstallLocation() {
+    return new Path(getDefault().getDescriptor().getInstallURL().getFile());
+  }
 
        /**
         * Returns the string from the plugin's resource bundle,
@@ -150,6 +222,7 @@ public class PHPeclipsePlugin extends AbstractUIPlugin {
                store.setDefault(LOCALHOST_PREF, "http://localhost");
                
                store.setDefault(USE_EXTERNAL_BROWSER_PREF, "false");
+    store.setDefault(SHOW_OUTPUT_IN_CONSOLE, "true");
                if (jvm == WINDOWS_9x) {
                        store.setDefault(EXTERNAL_BROWSER_PREF, "command.com /c start iexplore {0}");
                } else if (jvm == WINDOWS_NT) {
@@ -158,17 +231,30 @@ public class PHPeclipsePlugin extends AbstractUIPlugin {
                        store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}");
                }
                if ((jvm == WINDOWS_9x) || (jvm == WINDOWS_NT)) {
+      store.setDefault(EXTERNAL_PARSER_PREF, "c:\\apache\\php\\php -l -f {0}");
       store.setDefault(DOCUMENTROOT_PREF, "c:\\eclipse\\workspace");
                        store.setDefault(MYSQL_PREF, "c:\\apache\\mysql\\bin\\mysqld.exe --standalone");
                        store.setDefault(APACHE_START_PREF, "c:\\apache\\apache.exe -c \"DocumentRoot \"{0}\"\"");
                        store.setDefault(APACHE_STOP_PREF, "c:\\apache\\apache.exe -k shutdown");
                        store.setDefault(APACHE_RESTART_PREF, "c:\\apache\\apache.exe -k restart");
                } else {
+      store.setDefault(EXTERNAL_PARSER_PREF, "/apache/php/php -l -f {0}");
       store.setDefault(DOCUMENTROOT_PREF, "/eclipse/workspace");
                        store.setDefault(MYSQL_PREF, "/apache/mysql/bin/mysqld --standalone");
                        store.setDefault(APACHE_START_PREF, "/apache/apache -c \"DocumentRoot \"{0}\"\"");
                        store.setDefault(APACHE_STOP_PREF, "/apache/apache.exe -k shutdown");
                        store.setDefault(APACHE_RESTART_PREF, "/apache/apache -k restart");
+      
                }
+    
+    // php syntax highlighting
+    PreferenceConverter.setDefault(store, PHP_MULTILINE_COMMENT, PHPColorProvider.MULTI_LINE_COMMENT);
+    PreferenceConverter.setDefault(store, PHP_SINGLELINE_COMMENT, PHPColorProvider.SINGLE_LINE_COMMENT);
+    PreferenceConverter.setDefault(store, PHP_KEYWORD, PHPColorProvider.KEYWORD);
+    PreferenceConverter.setDefault(store, PHP_VARIABLE, PHPColorProvider.VARIABLE);
+    PreferenceConverter.setDefault(store, PHP_FUNCTIONNAME, PHPColorProvider.FUNCTION_NAME);
+    PreferenceConverter.setDefault(store, PHP_STRING, PHPColorProvider.STRING);
+    PreferenceConverter.setDefault(store, PHP_DEFAULT, PHPColorProvider.DEFAULT);
+
        }
 }
\ No newline at end of file