X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java index f8431ba..20ede98 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java @@ -1,34 +1,142 @@ +/********************************************************************** +Copyright (c) 2000, 2002 IBM Corp. and others. +All rights reserved. This program and the accompanying materials +are 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: + IBM Corporation - Initial implementation + Klaus Hartlage - www.eclipseproject.de +**********************************************************************/ package net.sourceforge.phpeclipse; -import org.eclipse.ui.plugin.*; -import org.eclipse.core.runtime.*; -import org.eclipse.core.resources.*; -import java.util.*; +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +import net.sourceforge.phpeclipse.phpeditor.PHPDocumentProvider; +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.MultiStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +//import org.eclipse.jdt.internal.ui.JavaStatusConstants; +//import org.eclipse.jdt.internal.ui.JavaUIMessages; +import org.eclipse.jface.preference.IPreferenceStore; +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"; + + /** + * The id of the PHP plugin (value "net.sourceforge.phpeclipse"). + */ + 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. + */ + private static int jvm; + + /** MRJ 2.0 */ + private static final int MRJ_2_0 = 0; + + /** MRJ 2.1 or later */ + private static final int MRJ_2_1 = 1; + + /** Java on Mac OS X 10.0 (MRJ 3.0) */ + private static final int MRJ_3_0 = 3; + /** MRJ 3.1 */ + private static final int MRJ_3_1 = 4; + + /** Windows NT */ + private static final int WINDOWS_NT = 5; + + /** Windows 9x */ + private static final int WINDOWS_9x = 6; + + /** JVM constant for any other platform */ + private static final int OTHER = -1; /** * The constructor. */ public PHPeclipsePlugin(IPluginDescriptor descriptor) { super(descriptor); plugin = this; + setJVM(); try { - resourceBundle = - ResourceBundle.getBundle( - "net.sourceforge.PHPeclipsePluginResources"); + resourceBundle = ResourceBundle.getBundle("net.sourceforge.PHPeclipsePluginResources"); } catch (MissingResourceException x) { resourceBundle = null; } } + // @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"); + + if (osName.startsWith("Mac OS")) { + String mrjVersion = System.getProperty("mrj.version"); + String majorMRJVersion = mrjVersion.substring(0, 3); + jvm = OTHER; + try { + + double version = Double.valueOf(majorMRJVersion).doubleValue(); + + if (version == 2) { + jvm = MRJ_2_0; + } else if (version >= 2.1 && version < 3) { + jvm = MRJ_2_1; + } else if (version == 3.0) { + jvm = MRJ_3_0; + } else if (version >= 3.1) { + jvm = MRJ_3_1; + } + + } catch (NumberFormatException nfe) { + + } + + } else if (osName.startsWith("Windows")) { + if (osName.indexOf("9") != -1) { + jvm = WINDOWS_9x; + } else { + jvm = WINDOWS_NT; + } + } + } + public static int getJVM() { + return jvm; + } /** * Returns the shared instance. */ @@ -42,14 +150,59 @@ 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, * or 'key' if not found. */ public static String getResourceString(String key) { - ResourceBundle bundle = - PHPeclipsePlugin.getDefault().getResourceBundle(); + ResourceBundle bundle = PHPeclipsePlugin.getDefault().getResourceBundle(); try { return bundle.getString(key); } catch (MissingResourceException e) { @@ -63,4 +216,31 @@ public class PHPeclipsePlugin extends AbstractUIPlugin { public ResourceBundle getResourceBundle() { return resourceBundle; } -} + + protected void initializeDefaultPreferences(IPreferenceStore store) { + // windows preferences: + store.setDefault(LOCALHOST_PREF, "http://localhost"); + + store.setDefault(USE_EXTERNAL_BROWSER_PREF, "false"); + if (jvm == WINDOWS_9x) { + store.setDefault(EXTERNAL_BROWSER_PREF, "command.com /c start iexplore {0}"); + } else if (jvm == WINDOWS_NT) { + store.setDefault(EXTERNAL_BROWSER_PREF, "rundll32 url.dll,FileProtocolHandler {0}"); + } else { + store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}"); + } + if ((jvm == WINDOWS_9x) || (jvm == WINDOWS_NT)) { + 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(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"); + } + } +} \ No newline at end of file