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 db6ef26..19583f5 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/PHPeclipsePlugin.java @@ -10,12 +10,15 @@ 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.Enumeration; 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; @@ -25,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; @@ -122,7 +124,10 @@ 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; + public static final String ID_PERSPECTIVE = "net.sourceforge.phpeclipse.PHPPerspective"; //$NON-NLS-1$ + + IWorkspace w; + /** * id of builder - matches plugin.xml (concatenate pluginid.builderid) */ @@ -130,7 +135,7 @@ IWorkspace w; //public static final String BUILDER_INDEX_ID = PLUGIN_ID + ".indexbuilder"; /** General debug flag */ - + public static final boolean DEBUG = false; /** @@ -165,29 +170,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; +// 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$ @@ -272,8 +274,7 @@ IWorkspace w; * * @since 3.0 */ -// private IPropertyChangeListener fPropertyChangeListener; - + // private IPropertyChangeListener fPropertyChangeListener; /** * The combined preference store. * @@ -301,9 +302,8 @@ IWorkspace w; public PHPeclipsePlugin(IPluginDescriptor descriptor) { super(descriptor); plugin = this; - setJVM(); - externalTools = new ExternalToolsPlugin(); - +// externalTools = new ExternalToolsPlugin(); + // try { // resourceBundle = // ResourceBundle.getBundle("net.sourceforge.PHPeclipsePluginResources"); @@ -496,9 +496,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(); @@ -560,41 +560,45 @@ IWorkspace w; 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("PHPeclipsePlugin.internalErrorOccurred", t); //$NON-NLS-1$ + } + + public static void log(String message, Throwable t) { + log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, message, t)); } public static void logErrorMessage(String message) { 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() { @@ -614,7 +618,13 @@ IWorkspace w; 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); @@ -625,10 +635,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() { @@ -686,85 +696,62 @@ 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); + 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(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(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(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)) { +// 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"); // TODO How do we start Safari on Mac OS X ? -// 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}"); +// } 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(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"); @@ -775,15 +762,17 @@ IWorkspace w; // 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_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); @@ -846,7 +835,7 @@ IWorkspace w; new PHPSyntaxRdr(); JavaCore.initializeDefaultPluginPreferences(); PreferenceConstants.initializeDefaultValues(store); - externalTools.initializeDefaultPreferences(store); +// externalTools.initializeDefaultPreferences(store); MarkerAnnotationPreferences.initializeDefaultValues(store); } @@ -1113,29 +1102,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. */ @@ -1149,7 +1136,7 @@ IWorkspace w; */ private void uninstallPreferenceStoreBackwardsCompatibility() { JFaceResources.getFontRegistry().removeListener(fFontPropertyChangeListener); -// getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener); + // getPreferenceStore().removePropertyChangeListener(fPropertyChangeListener); } /* @@ -1157,7 +1144,7 @@ IWorkspace w; */ public void start(BundleContext context) throws Exception { super.start(context); - + // JavaCore.start(this, context); final JavaModelManager manager = JavaModelManager.getJavaModelManager(); try { @@ -1167,9 +1154,9 @@ IWorkspace w; // JavaCore.getPlugin().getStateLocation(); getStateLocation(); // retrieve variable values - PHPeclipsePlugin.getDefault().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 @@ -1180,33 +1167,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(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(); + 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; @@ -1342,8 +1327,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; }