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 61c802a..8786e71 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java @@ -10,12 +10,14 @@ package net.sourceforge.phpeclipse; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.PropertyResourceBundle; import java.util.Set; import net.sourceforge.phpdt.core.IBuffer; @@ -28,6 +30,7 @@ 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; import net.sourceforge.phpdt.internal.corext.template.php.CodeTemplateContextType; import net.sourceforge.phpdt.internal.corext.template.php.HTMLContextType; import net.sourceforge.phpdt.internal.corext.template.php.JavaContextType; @@ -77,6 +80,7 @@ import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; @@ -120,7 +124,9 @@ public class PHPeclipsePlugin extends AbstractUIPlugin implements IPreferenceCon * The id of the PHP plugin (value "net.sourceforge.phpeclipse"). */ public static final String PLUGIN_ID = "net.sourceforge.phpeclipse"; //$NON-NLS-1$ -IWorkspace w; + + IWorkspace w; + /** * id of builder - matches plugin.xml (concatenate pluginid.builderid) */ @@ -128,7 +134,7 @@ IWorkspace w; //public static final String BUILDER_INDEX_ID = PLUGIN_ID + ".indexbuilder"; /** General debug flag */ - + public static final boolean DEBUG = false; /** @@ -163,29 +169,26 @@ IWorkspace w; */ // private static final String CODE_TEMPLATES_MIGRATION_KEY= "net.sourceforge.phpdt.ui.text.code_templates_migrated"; // //$NON-NLS-1$ - private static ExternalToolsPlugin externalTools; /** * 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; - - /** JVM constant for any other platform */ - private static final int OTHER = -1; - + // 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; + // + // /** JVM constant for any other platform */ + // private static final int OTHER = -1; // public static final String PHP_RESOURCES_VIEW_ID = PLUGIN_ID + // ".resourcesview.ViewPHPResources"; //$NON-NLS-1$ public static final String PHP_CODING_ACTION_SET_ID = PLUGIN_ID + ".ui.CodingActionSet"; //$NON-NLS-1$ @@ -270,8 +273,7 @@ IWorkspace w; * * @since 3.0 */ -// private IPropertyChangeListener fPropertyChangeListener; - + // private IPropertyChangeListener fPropertyChangeListener; /** * The combined preference store. * @@ -299,9 +301,8 @@ IWorkspace w; public PHPeclipsePlugin(IPluginDescriptor descriptor) { super(descriptor); plugin = this; - setJVM(); externalTools = new ExternalToolsPlugin(); - + // try { // resourceBundle = // ResourceBundle.getBundle("net.sourceforge.PHPeclipsePluginResources"); @@ -494,9 +495,9 @@ IWorkspace w; return new Path(getDefault().getDescriptor().getInstallURL().getFile()); } - public static int getJVM() { - return jvm; - } + // public static int getJVM() { + // return jvm; + // } public static String getPluginId() { return getDefault().getDescriptor().getUniqueIdentifier(); @@ -566,33 +567,33 @@ IWorkspace w; log(new Status(IStatus.ERROR, getPluginId(), IJavaStatusConstants.INTERNAL_ERROR, message, null)); } - private 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; - } - } - } + // private 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; + // } + // } + // } // TODO: refactor this into a better method name ! public synchronized ICompilationUnitDocumentProvider getCompilationUnitDocumentProvider() { @@ -609,7 +610,10 @@ IWorkspace w; * @return */ public IdentifierIndexManager getIndexManager(IProject iProject) { - String indexFilename = iProject.getLocation() + File.separator + "project.index"; + IPath path = iProject.getWorkingLocation(PHPeclipsePlugin.PLUGIN_ID); + path = path.append("project.index"); + String indexFilename = path.toString(); + // System.out.println(indexFilename); IdentifierIndexManager indexManager = (IdentifierIndexManager) fIndexManagerMap.get(indexFilename); if (indexManager == null) { indexManager = new IdentifierIndexManager(indexFilename); @@ -620,10 +624,10 @@ IWorkspace w; public synchronized IWorkingCopyManager getWorkingCopyManager() { if (fWorkingCopyManager == null) { - ICompilationUnitDocumentProvider provider= getCompilationUnitDocumentProvider(); - fWorkingCopyManager= new WorkingCopyManager(provider); - } - return fWorkingCopyManager; + ICompilationUnitDocumentProvider provider = getCompilationUnitDocumentProvider(); + fWorkingCopyManager = new WorkingCopyManager(provider); + } + return fWorkingCopyManager; } public synchronized MembersOrderPreferenceCache getMemberOrderPreferenceCache() { @@ -681,85 +685,63 @@ IWorkspace w; // return resourceBundle; // } protected void initializeDefaultPreferences(IPreferenceStore store) { - // windows preferences: - // store.setDefault(LOCALHOST_PREF, "http://localhost"); - // store.setDefault(DOCUMENTROOT_PREF, - // getWorkspace().getRoot().getLocation().toString()); - // store.setDefault(PHP_LOCALHOST_PREF, "http://localhost"); - // store.setDefault(PHP_DOCUMENTROOT_PREF, getWorkspace().getRoot() - // .getLocation().toString()); - + String operatingSystem = Platform.getOS(); + // maxosx, linux, solaris, win32,... + try { + 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)); + } 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"); + } 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(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_EXTERNAL_PREVIEW_PREF, "true"); -// store.setDefault(USE_EXTERNAL_BROWSER_PREF, "false"); store.setDefault(SHOW_OUTPUT_IN_CONSOLE, "true"); store.setDefault(PHP_OBFUSCATOR_DEFAULT, "c:\\temp"); - // store.setDefault(PHP_BOOKMARK_DEFAULT, ""); - // - // store.setDefault(PHP_AUTO_PREVIEW_DEFAULT, "true"); - // store.setDefault(PHP_BRING_TO_TOP_PREVIEW_DEFAULT, "true"); - // store.setDefault(PHP_SHOW_HTML_FILES_LOCAL, "true"); - - String windowsSystem = Platform.getWS(); - if (jvm == WINDOWS_9x) { -// store.setDefault(EXTERNAL_BROWSER_PREF, "command.com /c start iexplore {0}"); - } else if (windowsSystem.equals(Platform.WS_WIN32)) { -// store.setDefault(EXTERNAL_BROWSER_PREF, "rundll32 url.dll,FileProtocolHandler {0}"); - } else if (windowsSystem.equals(Platform.WS_CARBON)) { + 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"); // TODO How do we start Safari on Mac OS X ? -// store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}"); + // store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}"); } else { store.setDefault(PHP_OBFUSCATOR_DEFAULT, "/tmp"); -// store.setDefault(EXTERNAL_BROWSER_PREF, "netscape {0}"); - } - // if ((jvm == WINDOWS_9x) || (jvm == WINDOWS_NT)) { - // - if (windowsSystem.equals(Platform.WS_WIN32)) { -// String workspaceLocation = getWorkspace().getRoot().getLocation().toString(); -// String baseLocation = null; -// int index = workspaceLocation.lastIndexOf('/'); -// if (index>0) { -// index = workspaceLocation.lastIndexOf('/', index-1); -// if (index>0) { -// baseLocation = workspaceLocation.substring(0,index); -// } -// } -// if (baseLocation!=null) { -// String xampp_start = baseLocation + "/xampp_start.exe"; -// String xampp_stop = baseLocation + "/xampp_stop.exe"; -// File testFile = new File(xampp_start); -// if (testFile.exists()) { -// System.out.println(xampp_start); -// System.out.println(xampp_stop); -// } else { -// xampp_start = "c:\\xampp\\xampp_start.exe"; -// xampp_stop = "c:\\xampp\\xampp_stop.exe"; -// testFile = new File(xampp_start); -// if (testFile.exists()) { -// System.out.println(xampp_start); -// System.out.println(xampp_stop); -// } -// } -// } - 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"); - } 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(EXTERNAL_BROWSER_PREF, "netscape {0}"); } + store.setDefault(PHP_EXTENSION_PREFS, "php,php3,php4,php5,phtml,inc,module,class"); - 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(PHP_PARSER_DEFAULT, PHP_EXTERNAL_PARSER); // store.setDefault(PHP_INTERNAL_PARSER, "false"); // store.setDefault(PHP_EXTERNAL_PARSER, "true"); @@ -1108,29 +1090,27 @@ IWorkspace w; * Backwards compatibility: propagate the Java editor tab width from a pre-3.0 plug-in to the new preference key. This is done * only once. */ -// final String oldTabWidthKey = PreferenceConstants.EDITOR_TAB_WIDTH; -// final String newTabWidthKey = AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH; -// String tabWidthPropagatedKey = "tabWidthPropagated"; //$NON-NLS-1$ -// if (getPreferenceStore().contains(oldTabWidthKey) && !getPreferenceStore().isDefault(oldTabWidthKey)) { -// if (!getPreferenceStore().getBoolean(tabWidthPropagatedKey)) -// getPreferenceStore().setValue(newTabWidthKey, getPreferenceStore().getInt(oldTabWidthKey)); -// } -// getPreferenceStore().setValue(tabWidthPropagatedKey, true); -// -// /* -// * Backwards compatibility: set the Java editor tab width in this plug-in's preference store with the old key to let older -// * versions access it. Since 3.0 the tab width is managed by the extended texteditor and uses a new key. -// */ -// getPreferenceStore().putValue(oldTabWidthKey, getPreferenceStore().getString(newTabWidthKey)); - -// fPropertyChangeListener = new IPropertyChangeListener() { -// public void propertyChange(PropertyChangeEvent event) { -// if (newTabWidthKey.equals(event.getProperty())) -// getPreferenceStore().putValue(oldTabWidthKey, getPreferenceStore().getString(newTabWidthKey)); -// } -// }; -// getPreferenceStore().addPropertyChangeListener(fPropertyChangeListener); - + // final String oldTabWidthKey = PreferenceConstants.EDITOR_TAB_WIDTH; + // final String newTabWidthKey = AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH; + // String tabWidthPropagatedKey = "tabWidthPropagated"; //$NON-NLS-1$ + // if (getPreferenceStore().contains(oldTabWidthKey) && !getPreferenceStore().isDefault(oldTabWidthKey)) { + // if (!getPreferenceStore().getBoolean(tabWidthPropagatedKey)) + // getPreferenceStore().setValue(newTabWidthKey, getPreferenceStore().getInt(oldTabWidthKey)); + // } + // getPreferenceStore().setValue(tabWidthPropagatedKey, true); + // + // /* + // * Backwards compatibility: set the Java editor tab width in this plug-in's preference store with the old key to let older + // * versions access it. Since 3.0 the tab width is managed by the extended texteditor and uses a new key. + // */ + // getPreferenceStore().putValue(oldTabWidthKey, getPreferenceStore().getString(newTabWidthKey)); + // fPropertyChangeListener = new IPropertyChangeListener() { + // public void propertyChange(PropertyChangeEvent event) { + // if (newTabWidthKey.equals(event.getProperty())) + // getPreferenceStore().putValue(oldTabWidthKey, getPreferenceStore().getString(newTabWidthKey)); + // } + // }; + // getPreferenceStore().addPropertyChangeListener(fPropertyChangeListener); /* * Backward compatibility for the refactoring preference key. */ @@ -1144,7 +1124,7 @@ IWorkspace w; */ private void uninstallPreferenceStoreBackwardsCompatibility() { JFaceResources.getFontRegistry().removeListener(fFontPropertyChangeListener); -// getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener); + // getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener); } /* @@ -1152,7 +1132,7 @@ IWorkspace w; */ public void start(BundleContext context) throws Exception { super.start(context); - + // JavaCore.start(this, context); final JavaModelManager manager = JavaModelManager.getJavaModelManager(); try { @@ -1162,9 +1142,9 @@ IWorkspace w; // JavaCore.getPlugin().getStateLocation(); getStateLocation(); // retrieve variable values - //JavaCore.getPlugin().getPluginPreferences().addPropertyChangeListener(new - // JavaModelManager.PluginPreferencesListener()); - // manager.loadVariablesAndContainers(); + PHPeclipsePlugin.getDefault().getPluginPreferences().addPropertyChangeListener( + new JavaModelManager.PluginPreferencesListener()); + // manager.loadVariablesAndContainers(); final IWorkspace workspace = ResourcesPlugin.getWorkspace(); workspace.addResourceChangeListener(manager.deltaState, IResourceChangeEvent.PRE_BUILD | IResourceChangeEvent.POST_BUILD @@ -1175,33 +1155,31 @@ IWorkspace w; // process deltas since last activated in indexer thread so that indexes are up-to-date. // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=38658 - // Job processSavedState = new Job(ProjectPrefUtil.bind("savedState.jobName")) { //$NON-NLS-1$ - // protected IStatus run(IProgressMonitor monitor) { - // try { - // // add save participant and process delta atomically - // // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59937 - // workspace.run( - // new IWorkspaceRunnable() { - // public void run(IProgressMonitor progress) throws CoreException { - // ISavedState savedState = workspace.addSaveParticipant(PHPeclipsePlugin.this, manager); - // if (savedState != null) { - // // the event type coming from the saved state is always POST_AUTO_BUILD - // // force it to be POST_CHANGE so that the delta processor can handle it - // manager.deltaState.getDeltaProcessor().overridenEventType = IResourceChangeEvent.POST_CHANGE; - // savedState.processResourceChangeEvents(manager.deltaState); - // } - // } - // }, - // monitor); - // } catch (CoreException e) { - // return e.getStatus(); - // } - // return Status.OK_STATUS; - // } - // }; - // processSavedState.setSystem(true); - // processSavedState.setPriority(Job.SHORT); // process asap - // processSavedState.schedule(); + Job processSavedState = new Job(Util.bind("savedState.jobName")) { //$NON-NLS-1$ + protected IStatus run(IProgressMonitor monitor) { + try { + // add save participant and process delta atomically + // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59937 + workspace.run(new IWorkspaceRunnable() { + public void run(IProgressMonitor progress) throws CoreException { + ISavedState savedState = workspace.addSaveParticipant(PHPeclipsePlugin.this, manager); + if (savedState != null) { + // the event type coming from the saved state is always POST_AUTO_BUILD + // force it to be POST_CHANGE so that the delta processor can handle it + manager.deltaState.getDeltaProcessor().overridenEventType = IResourceChangeEvent.POST_CHANGE; + savedState.processResourceChangeEvents(manager.deltaState); + } + } + }, monitor); + } catch (CoreException e) { + return e.getStatus(); + } + return Status.OK_STATUS; + } + }; + processSavedState.setSystem(true); + processSavedState.setPriority(Job.SHORT); // process asap + processSavedState.schedule(); } catch (RuntimeException e) { manager.shutdown(); throw e; @@ -1337,8 +1315,10 @@ IWorkspace w; public IPreferenceStore getCombinedPreferenceStore() { if (fCombinedPreferenceStore == null) { IPreferenceStore generalTextStore = EditorsUI.getPreferenceStore(); - fCombinedPreferenceStore = new ChainedPreferenceStore(new IPreferenceStore[] { getPreferenceStore(), - new PreferencesAdapter(PHPeclipsePlugin.getDefault().getPluginPreferences()), generalTextStore }); + fCombinedPreferenceStore = new ChainedPreferenceStore(new IPreferenceStore[] { + getPreferenceStore(), + new PreferencesAdapter(PHPeclipsePlugin.getDefault().getPluginPreferences()), + generalTextStore }); } return fCombinedPreferenceStore; }