Skip to content

Commit

Permalink
Use equinox preferences APIs in RefreshManager class #497
Browse files Browse the repository at this point in the history
Replacing deprecated Preferences API usage with modern Equinox
Preferences API.

Partially fixes
#497
  • Loading branch information
lathapatil authored and akurtakov committed Sep 20, 2023
1 parent f10dfa5 commit d269de5
Showing 1 changed file with 16 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
* IBM - Initial API and implementation
* Christoph Läubrich - Issue #84 - RefreshManager access ResourcesPlugin.getWorkspace in the init phase
* - Issue #97 - RefreshManager.manageAutoRefresh calls ResourcesPlugin.getWorkspace before the Workspace is fully open
* Latha Patil(ETAS GmbH) - GitHub Issue #497- Get rid of deprecated org.eclipse.core.runtime.Preferences in platform code
*******************************************************************************/
package org.eclipse.core.internal.refresh;

import org.eclipse.core.internal.preferences.EclipsePreferences;
import org.eclipse.core.internal.resources.IManager;
import org.eclipse.core.internal.resources.Workspace;
import org.eclipse.core.internal.utils.Messages;
Expand All @@ -23,7 +25,9 @@
import org.eclipse.core.resources.refresh.IRefreshMonitor;
import org.eclipse.core.resources.refresh.IRefreshResult;
import org.eclipse.core.runtime.*;
import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
import org.eclipse.core.runtime.preferences.InstanceScope;

/**
* Manages auto-refresh functionality, including maintaining the active
Expand All @@ -32,7 +36,7 @@
*
* @since 3.0
*/
public class RefreshManager implements IRefreshResult, IManager, Preferences.IPropertyChangeListener {
public class RefreshManager implements IRefreshResult, IManager, EclipsePreferences.IPreferenceChangeListener {
public static final String DEBUG_PREFIX = "Auto-refresh: "; //$NON-NLS-1$
volatile MonitorManager monitors;
private volatile RefreshJob refreshJob;
Expand Down Expand Up @@ -75,16 +79,15 @@ public void monitorFailed(IRefreshMonitor monitor, IResource resource) {
}

/**
* Checks for changes to the PREF_AUTO_UPDATE property.
* @see org.eclipse.core.runtime.Preferences.IPropertyChangeListener#propertyChange(Preferences.PropertyChangeEvent)
* Checks for changes to the PREF_AUTO_REFRESH property.
* @see org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener#preferenceChange(IEclipsePreferences.PreferenceChangeEvent)
*/
@Deprecated
@Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
public void preferenceChange(PreferenceChangeEvent event) {
String property = event.getKey();
if (ResourcesPlugin.PREF_AUTO_REFRESH.equals(property)) {
Preferences preferences = ResourcesPlugin.getPlugin().getPluginPreferences();
final boolean autoRefresh = preferences.getBoolean(ResourcesPlugin.PREF_AUTO_REFRESH);
final boolean autoRefresh = Platform.getPreferencesService().getBoolean(ResourcesPlugin.PI_RESOURCES,
ResourcesPlugin.PREF_AUTO_REFRESH, false, null);
String jobName = autoRefresh ? Messages.refresh_installMonitorsOnWorkspace : Messages.refresh_uninstallMonitorsOnWorkspace;
MonitorJob.createSystem(jobName, getWorkspace().getRoot(),
(ICoreRunnable) monitor -> manageAutoRefresh(autoRefresh, monitor)).schedule();
Expand All @@ -109,7 +112,7 @@ public void shutdown(IProgressMonitor monitor) {
// do nothing if we have already shutdown
return;
}
ResourcesPlugin.getPlugin().getPluginPreferences().removePropertyChangeListener(this);
InstanceScope.INSTANCE.getNode(ResourcesPlugin.PI_RESOURCES).removePreferenceChangeListener(this);
if (monitors != null) {
monitors.stop();
monitors = null;
Expand All @@ -129,9 +132,9 @@ public void startup(IProgressMonitor monitor) {
refreshJob = new RefreshJob(workspace);
monitors = new MonitorManager(workspace, this);

Preferences preferences = ResourcesPlugin.getPlugin().getPluginPreferences();
preferences.addPropertyChangeListener(this);
boolean autoRefresh = preferences.getBoolean(ResourcesPlugin.PREF_AUTO_REFRESH);
InstanceScope.INSTANCE.getNode(ResourcesPlugin.PI_RESOURCES).addPreferenceChangeListener(this);
boolean autoRefresh = Platform.getPreferencesService().getBoolean(ResourcesPlugin.PI_RESOURCES,
ResourcesPlugin.PREF_AUTO_REFRESH, false, null);
if (autoRefresh) {
SubMonitor subMonitor = SubMonitor.convert(monitor, 1);
manageAutoRefresh(autoRefresh, subMonitor.split(1));
Expand Down

0 comments on commit d269de5

Please sign in to comment.