1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +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")
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);
}

View file

@ -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)

View file

@ -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() };