diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/expression/ExpressionVMProvider.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/expression/ExpressionVMProvider.java index cd508738061..7f7030be6c6 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/expression/ExpressionVMProvider.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/expression/ExpressionVMProvider.java @@ -67,29 +67,38 @@ import org.eclipse.jface.viewers.TreePath; */ @SuppressWarnings("restriction") public class ExpressionVMProvider extends AbstractDMVMProvider - implements IPropertyChangeListener, IExpressionsListener2 + implements IExpressionsListener2 { private IExpressionVMNode[] fExpressionNodes; - + + private IPropertyChangeListener fPreferencesListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)) { + setDelayEventHandleForViewUpdate((Boolean)event.getNewValue()); + } + } + }; + + private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + handleEvent(event); + } + }; + public ExpressionVMProvider(AbstractVMAdapter adapter, IPresentationContext context, DsfSession session) { super(adapter, context, session); - context.addPropertyChangeListener(this); - + context.addPropertyChangeListener(fPresentationContextListener); + + IPreferenceStore store = DsfDebugUITools.getPreferenceStore(); + store.addPropertyChangeListener(fPreferencesListener); + setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); + // The VM provider has to handle all events that result in model deltas. // Add the provider as listener to expression changes events. DebugPlugin.getDefault().getExpressionManager().addExpressionListener(this); configureLayout(); - - final IPreferenceStore store = DsfDebugUITools.getPreferenceStore(); - store.addPropertyChangeListener(new IPropertyChangeListener() - { - public void propertyChange(PropertyChangeEvent event) { - setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); - } - }); - setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); } @Override @@ -286,7 +295,8 @@ public class ExpressionVMProvider extends AbstractDMVMProvider @Override public void dispose() { DebugPlugin.getDefault().getExpressionManager().removeExpressionListener(this); - getPresentationContext().removePropertyChangeListener(this); + DsfDebugUITools.getPreferenceStore().removePropertyChangeListener(fPreferencesListener); + getPresentationContext().removePropertyChangeListener(fPresentationContextListener); super.dispose(); } @@ -306,10 +316,6 @@ public class ExpressionVMProvider extends AbstractDMVMProvider new ExpressionsBreakpointHitUpdatePolicy() }; } - public void propertyChange(PropertyChangeEvent event) { - handleEvent(event); - } - public void expressionsAdded(IExpression[] expressions) { expressionsListChanged(ExpressionsChangedEvent.Type.ADDED, expressions, -1); } diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMProvider.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMProvider.java index c184d4bb49c..231e5f07cf8 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMProvider.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/register/RegisterVMProvider.java @@ -46,16 +46,33 @@ import org.eclipse.jface.util.PropertyChangeEvent; * Provides the VIEW MODEL for the DEBUG MODEL REGISTER view. */ @SuppressWarnings("restriction") -public class RegisterVMProvider extends AbstractDMVMProvider - implements IPropertyChangeListener +public class RegisterVMProvider extends AbstractDMVMProvider { + private IPropertyChangeListener fPreferencesListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)) { + setDelayEventHandleForViewUpdate((Boolean)event.getNewValue()); + } + } + }; + + private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + handleEvent(event); + } + }; + /* * Current default for register formatting. */ public RegisterVMProvider(AbstractVMAdapter adapter, IPresentationContext context, DsfSession session) { super(adapter, context, session); - context.addPropertyChangeListener(this); + context.addPropertyChangeListener(fPresentationContextListener); + + IPreferenceStore store = DsfDebugUITools.getPreferenceStore(); + store.addPropertyChangeListener(fPreferencesListener); + setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); /* * Create the register data access routines. @@ -89,15 +106,6 @@ public class RegisterVMProvider extends AbstractDMVMProvider * Now set this schema set as the layout set. */ setRootNode(rootNode); - - final IPreferenceStore store = DsfDebugUITools.getPreferenceStore(); - store.addPropertyChangeListener(new IPropertyChangeListener() - { - public void propertyChange(PropertyChangeEvent event) { - setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); - } - }); - setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); } /* @@ -115,7 +123,8 @@ public class RegisterVMProvider extends AbstractDMVMProvider */ @Override public void dispose() { - getPresentationContext().removePropertyChangeListener(this); + DsfDebugUITools.getPreferenceStore().removePropertyChangeListener(fPreferencesListener); + getPresentationContext().removePropertyChangeListener(fPresentationContextListener); super.dispose(); } @@ -137,14 +146,6 @@ public class RegisterVMProvider extends AbstractDMVMProvider return RegisterColumnPresentation.ID; } - /* - * (non-Javadoc) - * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - handleEvent(event); - } - /* * (non-Javadoc) * @see org.eclipse.dd.dsf.ui.viewmodel.AbstractVMProvider#canSkipHandlingEvent(java.lang.Object, java.lang.Object) diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/variable/VariableVMProvider.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/variable/VariableVMProvider.java index 188a5148a25..6cda0001723 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/variable/VariableVMProvider.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/variable/VariableVMProvider.java @@ -40,13 +40,30 @@ import org.eclipse.jface.util.PropertyChangeEvent; @SuppressWarnings("restriction") public class VariableVMProvider extends AbstractDMVMProvider - implements IPropertyChangeListener, IColumnPresentationFactory + implements IColumnPresentationFactory { + private IPropertyChangeListener fPreferencesListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)) { + setDelayEventHandleForViewUpdate((Boolean)event.getNewValue()); + } + } + }; + private IPropertyChangeListener fPresentationContextListener = new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + handleEvent(event); + } + }; + public VariableVMProvider(AbstractVMAdapter adapter, IPresentationContext context, DsfSession session) { super(adapter, context, session); - context.addPropertyChangeListener(this); + context.addPropertyChangeListener(fPresentationContextListener); + + IPreferenceStore store = DsfDebugUITools.getPreferenceStore(); + store.addPropertyChangeListener(fPreferencesListener); + setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); /* * Create the variable data access routines. @@ -68,20 +85,12 @@ public class VariableVMProvider extends AbstractDMVMProvider // Configure the sub-expression node to be a child of itself. This way the content // provider will recursively drill-down the variable hierarchy. addChildNodes(subExpressioNode, new IVMNode[] { subExpressioNode }); - - final IPreferenceStore store = DsfDebugUITools.getPreferenceStore(); - store.addPropertyChangeListener(new IPropertyChangeListener() - { - public void propertyChange(PropertyChangeEvent event) { - setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); - } - }); - setDelayEventHandleForViewUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_WAIT_FOR_VIEW_UPDATE_AFTER_STEP_ENABLE)); } @Override public void dispose() { - getPresentationContext().removePropertyChangeListener(this); + DsfDebugUITools.getPreferenceStore().removePropertyChangeListener(fPreferencesListener); + getPresentationContext().removePropertyChangeListener(fPresentationContextListener); super.dispose(); } @@ -95,10 +104,6 @@ public class VariableVMProvider extends AbstractDMVMProvider return VariableColumnPresentation.ID; } - public void propertyChange(PropertyChangeEvent event) { - handleEvent(event); - } - @Override protected IVMUpdatePolicy[] createUpdateModes() { return new IVMUpdatePolicy[] { new AutomaticUpdatePolicy(), new ManualUpdatePolicy(), new BreakpointHitUpdatePolicy() };