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:
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")
|
@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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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() };
|
||||||
|
|
Loading…
Add table
Reference in a new issue