/********************************************************************** 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 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"; 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 "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"); } 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. */ public static PHPeclipsePlugin getDefault() { return plugin; } /** * Returns the workspace instance. */ 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(); try { return bundle.getString(key); } catch (MissingResourceException e) { return key; } } /** * Returns the plugin's resource bundle, */ 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"); 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) { 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(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"); } } }