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:
parent
43fc7fc53e
commit
7fd71fdc14
3 changed files with 67 additions and 55 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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() };
|
||||
|
|
Loading…
Add table
Reference in a new issue