1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-28 11:25:35 +02:00

[250675] - [view model] Debugger VM providers' listeners are never removed from the preference store.

This commit is contained in:
Pawel Piech 2008-10-13 17:39:46 +00:00
parent 43fc7fc53e
commit 7fd71fdc14
3 changed files with 67 additions and 55 deletions

View file

@ -67,29 +67,38 @@ import org.eclipse.jface.viewers.TreePath;
*/ */
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class ExpressionVMProvider extends AbstractDMVMProvider public class ExpressionVMProvider extends AbstractDMVMProvider
implements IPropertyChangeListener, IExpressionsListener2 implements IExpressionsListener2
{ {
private IExpressionVMNode[] fExpressionNodes; 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) { public ExpressionVMProvider(AbstractVMAdapter adapter, IPresentationContext context, DsfSession session) {
super(adapter, context, 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. // The VM provider has to handle all events that result in model deltas.
// Add the provider as listener to expression changes events. // Add the provider as listener to expression changes events.
DebugPlugin.getDefault().getExpressionManager().addExpressionListener(this); DebugPlugin.getDefault().getExpressionManager().addExpressionListener(this);
configureLayout(); 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 @Override
@ -286,7 +295,8 @@ public class ExpressionVMProvider extends AbstractDMVMProvider
@Override @Override
public void dispose() { public void dispose() {
DebugPlugin.getDefault().getExpressionManager().removeExpressionListener(this); DebugPlugin.getDefault().getExpressionManager().removeExpressionListener(this);
getPresentationContext().removePropertyChangeListener(this); DsfDebugUITools.getPreferenceStore().removePropertyChangeListener(fPreferencesListener);
getPresentationContext().removePropertyChangeListener(fPresentationContextListener);
super.dispose(); super.dispose();
} }
@ -306,10 +316,6 @@ public class ExpressionVMProvider extends AbstractDMVMProvider
new ExpressionsBreakpointHitUpdatePolicy() }; new ExpressionsBreakpointHitUpdatePolicy() };
} }
public void propertyChange(PropertyChangeEvent event) {
handleEvent(event);
}
public void expressionsAdded(IExpression[] expressions) { public void expressionsAdded(IExpression[] expressions) {
expressionsListChanged(ExpressionsChangedEvent.Type.ADDED, expressions, -1); expressionsListChanged(ExpressionsChangedEvent.Type.ADDED, expressions, -1);
} }

View file

@ -47,15 +47,32 @@ import org.eclipse.jface.util.PropertyChangeEvent;
*/ */
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class RegisterVMProvider extends AbstractDMVMProvider public class RegisterVMProvider extends AbstractDMVMProvider
implements IPropertyChangeListener
{ {
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. * Current default for register formatting.
*/ */
public RegisterVMProvider(AbstractVMAdapter adapter, IPresentationContext context, DsfSession session) { public RegisterVMProvider(AbstractVMAdapter adapter, IPresentationContext context, DsfSession session) {
super(adapter, context, 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. * Create the register data access routines.
@ -89,15 +106,6 @@ public class RegisterVMProvider extends AbstractDMVMProvider
* Now set this schema set as the layout set. * Now set this schema set as the layout set.
*/ */
setRootNode(rootNode); 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 @Override
public void dispose() { public void dispose() {
getPresentationContext().removePropertyChangeListener(this); DsfDebugUITools.getPreferenceStore().removePropertyChangeListener(fPreferencesListener);
getPresentationContext().removePropertyChangeListener(fPresentationContextListener);
super.dispose(); super.dispose();
} }
@ -137,14 +146,6 @@ public class RegisterVMProvider extends AbstractDMVMProvider
return RegisterColumnPresentation.ID; 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) * (non-Javadoc)
* @see org.eclipse.dd.dsf.ui.viewmodel.AbstractVMProvider#canSkipHandlingEvent(java.lang.Object, java.lang.Object) * @see org.eclipse.dd.dsf.ui.viewmodel.AbstractVMProvider#canSkipHandlingEvent(java.lang.Object, java.lang.Object)

View file

@ -40,13 +40,30 @@ import org.eclipse.jface.util.PropertyChangeEvent;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class VariableVMProvider extends AbstractDMVMProvider 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) { public VariableVMProvider(AbstractVMAdapter adapter, IPresentationContext context, DsfSession session) {
super(adapter, context, 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. * 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 // Configure the sub-expression node to be a child of itself. This way the content
// provider will recursively drill-down the variable hierarchy. // provider will recursively drill-down the variable hierarchy.
addChildNodes(subExpressioNode, new IVMNode[] { subExpressioNode }); 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 @Override
public void dispose() { public void dispose() {
getPresentationContext().removePropertyChangeListener(this); DsfDebugUITools.getPreferenceStore().removePropertyChangeListener(fPreferencesListener);
getPresentationContext().removePropertyChangeListener(fPresentationContextListener);
super.dispose(); super.dispose();
} }
@ -95,10 +104,6 @@ public class VariableVMProvider extends AbstractDMVMProvider
return VariableColumnPresentation.ID; return VariableColumnPresentation.ID;
} }
public void propertyChange(PropertyChangeEvent event) {
handleEvent(event);
}
@Override @Override
protected IVMUpdatePolicy[] createUpdateModes() { protected IVMUpdatePolicy[] createUpdateModes() {
return new IVMUpdatePolicy[] { new AutomaticUpdatePolicy(), new ManualUpdatePolicy(), new BreakpointHitUpdatePolicy() }; return new IVMUpdatePolicy[] { new AutomaticUpdatePolicy(), new ManualUpdatePolicy(), new BreakpointHitUpdatePolicy() };