|
1 | 1 | /******************************************************************************* |
2 | | - * Copyright (c) 2005, 2024 IBM Corporation and others. |
| 2 | + * Copyright (c) 2005, 2025 IBM Corporation and others. |
3 | 3 | * |
4 | 4 | * This program and the accompanying materials |
5 | 5 | * are made available under the terms of the Eclipse Public License 2.0 |
|
37 | 37 | import org.eclipse.core.runtime.Status; |
38 | 38 | import org.eclipse.core.runtime.jobs.Job; |
39 | 39 | import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
| 40 | +import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; |
40 | 41 | import org.eclipse.core.runtime.preferences.InstanceScope; |
41 | 42 | import org.eclipse.jdt.core.IJavaProject; |
42 | 43 | import org.eclipse.jdt.core.JavaCore; |
|
65 | 66 |
|
66 | 67 | public class MinimalState { |
67 | 68 |
|
| 69 | + private static final IPreferenceChangeListener PREF_CHANGE_LISTENER = e -> { |
| 70 | + if (e.getKey().equals("org.eclipse.jdt.launching.PREF_DEFAULT_ENVIRONMENTS_XML")) { //$NON-NLS-1$ |
| 71 | + Object oldValue = e.getOldValue() == null ? "" : e.getOldValue(); //$NON-NLS-1$ |
| 72 | + Object newValue = e.getNewValue() == null ? "" : e.getNewValue(); //$NON-NLS-1$ |
| 73 | + if (!oldValue.equals(newValue)) { |
| 74 | + triggerSystemPackagesReload(); |
| 75 | + } |
| 76 | + } |
| 77 | + }; |
| 78 | + |
| 79 | + private static final IVMInstallChangedListener VM_CHANGED_LISTENER = new IVMInstallChangedListener() { |
| 80 | + @Override |
| 81 | + public void vmRemoved(IVMInstall vm) { |
| 82 | + triggerSystemPackagesReload(); |
| 83 | + } |
| 84 | + |
| 85 | + @Override |
| 86 | + public void vmChanged(PropertyChangeEvent event) { |
| 87 | + triggerSystemPackagesReload(); |
| 88 | + } |
| 89 | + |
| 90 | + @Override |
| 91 | + public void vmAdded(IVMInstall vm) { |
| 92 | + triggerSystemPackagesReload(); |
| 93 | + } |
| 94 | + |
| 95 | + @Override |
| 96 | + public void defaultVMInstallChanged(IVMInstall previous, IVMInstall current) { |
| 97 | + triggerSystemPackagesReload(); |
| 98 | + } |
| 99 | + }; |
| 100 | + |
68 | 101 | protected State fState; |
69 | 102 |
|
70 | 103 | protected long fId; |
@@ -268,39 +301,20 @@ protected boolean initializePlatformProperties() { |
268 | 301 | static { |
269 | 302 | // Listen to changes in the available VMInstalls and |
270 | 303 | // ExecutionEnvironment defaults |
271 | | - @SuppressWarnings("restriction") |
272 | | - String nodeQualifier = org.eclipse.jdt.internal.launching.LaunchingPlugin.ID_PLUGIN; |
273 | | - IEclipsePreferences launchingNode = InstanceScope.INSTANCE.getNode(nodeQualifier); |
274 | | - launchingNode.addPreferenceChangeListener(e -> { |
275 | | - if (e.getKey().equals("org.eclipse.jdt.launching.PREF_DEFAULT_ENVIRONMENTS_XML")) { //$NON-NLS-1$ |
276 | | - Object oldValue = e.getOldValue() == null ? "" : e.getOldValue(); //$NON-NLS-1$ |
277 | | - Object newValue = e.getNewValue() == null ? "" : e.getNewValue(); //$NON-NLS-1$ |
278 | | - if (!oldValue.equals(newValue)) { |
279 | | - triggerSystemPackagesReload(); |
280 | | - } |
281 | | - } |
282 | | - }); |
283 | | - JavaRuntime.addVMInstallChangedListener(new IVMInstallChangedListener() { |
284 | | - @Override |
285 | | - public void vmRemoved(IVMInstall vm) { |
286 | | - triggerSystemPackagesReload(); |
287 | | - } |
288 | | - |
289 | | - @Override |
290 | | - public void vmChanged(PropertyChangeEvent event) { |
291 | | - triggerSystemPackagesReload(); |
292 | | - } |
| 304 | + IEclipsePreferences launchingNode = getJdtLaunchingPreferences(); |
| 305 | + launchingNode.addPreferenceChangeListener(PREF_CHANGE_LISTENER); |
| 306 | + JavaRuntime.addVMInstallChangedListener(VM_CHANGED_LISTENER); |
| 307 | + } |
293 | 308 |
|
294 | | - @Override |
295 | | - public void vmAdded(IVMInstall vm) { |
296 | | - triggerSystemPackagesReload(); |
297 | | - } |
| 309 | + static void shutdown() { |
| 310 | + IEclipsePreferences launchingNode = getJdtLaunchingPreferences(); |
| 311 | + launchingNode.removePreferenceChangeListener(PREF_CHANGE_LISTENER); |
| 312 | + JavaRuntime.removeVMInstallChangedListener(VM_CHANGED_LISTENER); |
| 313 | + } |
298 | 314 |
|
299 | | - @Override |
300 | | - public void defaultVMInstallChanged(IVMInstall previous, IVMInstall current) { |
301 | | - triggerSystemPackagesReload(); |
302 | | - } |
303 | | - }); |
| 315 | + @SuppressWarnings("restriction") |
| 316 | + private static IEclipsePreferences getJdtLaunchingPreferences() { |
| 317 | + return InstanceScope.INSTANCE.getNode(org.eclipse.jdt.internal.launching.LaunchingPlugin.ID_PLUGIN); |
304 | 318 | } |
305 | 319 |
|
306 | 320 | public static void triggerSystemPackagesReload() { |
|
0 commit comments