mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
[239390] [update policy] Update Scopes -- update only visible, update all elements
This commit is contained in:
parent
9384592322
commit
257254880f
29 changed files with 924 additions and 14 deletions
|
@ -36,6 +36,14 @@ action.breakpointHitUpdatePolicy.label = Breakpoint Hit
|
|||
action.manualUpdatePolicy.label = Manual
|
||||
action.automaticUpdatePolicy.label = Automatic
|
||||
|
||||
menu.updatePolicyAtomic = Updates Atomic
|
||||
action.updatePolicyAtomic.label = Delay run control until updates are complete
|
||||
action.updatePolicyNotAtomic.label = Do NOT Delay run control until updates are complete
|
||||
|
||||
menu.updateScope = Update Scope
|
||||
action.visibleUpdateScope.label = Visible
|
||||
action.allUpdateScope.label = Expanded
|
||||
|
||||
menu.numberFormat = Number Format
|
||||
action.setDefaultNumberFormatHex.label = Hex
|
||||
action.setDefaultNumberFormatDecimal.label = Decimal
|
||||
|
@ -43,6 +51,6 @@ action.setDefaultNumberFormatOctal.label = Octal
|
|||
action.setDefaultNumberFormatBinary.label = Binary
|
||||
action.setDefaultNumberFormatNatural.label = Natural
|
||||
|
||||
preferencePage.name = DSF Debugging
|
||||
preferencePage.name = DSF Performance
|
||||
|
||||
action.expandStack.label = E&xpand Stack
|
||||
|
|
|
@ -114,6 +114,26 @@
|
|||
style="radio">
|
||||
</action>
|
||||
|
||||
<menu id="updateScope"
|
||||
label="%menu.updateScope"
|
||||
path="additions"/>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.AllUpdateScopeAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdateScope_All"
|
||||
label="%action.allUpdateScope.label"
|
||||
state="false"
|
||||
menubarPath="updateScope/additions"
|
||||
style="radio">
|
||||
</action>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.VisibleUpdateScopeAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdateScope_Visible"
|
||||
label="%action.visibleUpdateScope.label"
|
||||
menubarPath="updateScope/additions"
|
||||
state="true"
|
||||
style="radio">
|
||||
</action>
|
||||
|
||||
<menu id="updatePolicy"
|
||||
label="%menu.updatePolicy"
|
||||
path="additions"/>
|
||||
|
@ -142,6 +162,9 @@
|
|||
state="true"
|
||||
style="radio">
|
||||
</action>
|
||||
|
||||
|
||||
|
||||
</viewContribution>
|
||||
|
||||
<!-- Registers View menu contributions -->
|
||||
|
@ -201,6 +224,25 @@
|
|||
style="radio">
|
||||
</action>
|
||||
|
||||
<menu id="updateScope"
|
||||
label="%menu.updateScope"
|
||||
path="additions"/>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.AllUpdateScopeAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdateScope_All"
|
||||
label="%action.allUpdateScope.label"
|
||||
menubarPath="updateScope/additions"
|
||||
style="radio">
|
||||
</action>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.VisibleUpdateScopeAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdateScope_Visible"
|
||||
label="%action.visibleUpdateScope.label"
|
||||
menubarPath="updateScope/additions"
|
||||
state="true"
|
||||
style="radio">
|
||||
</action>
|
||||
|
||||
<menu id="updatePolicy"
|
||||
label="%menu.updatePolicy"
|
||||
path="additions"/>
|
||||
|
@ -289,6 +331,26 @@
|
|||
style="radio">
|
||||
</action>
|
||||
|
||||
<menu id="updateScope"
|
||||
label="%menu.updateScope"
|
||||
path="additions"/>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.AllUpdateScopeAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdateScope_All"
|
||||
label="%action.allUpdateScope.label"
|
||||
state="false"
|
||||
menubarPath="updateScope/additions"
|
||||
style="radio">
|
||||
</action>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.VisibleUpdateScopeAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdateScope_Visible"
|
||||
label="%action.visibleUpdateScope.label"
|
||||
menubarPath="updateScope/additions"
|
||||
state="true"
|
||||
style="radio">
|
||||
</action>
|
||||
|
||||
<menu id="updatePolicy"
|
||||
label="%menu.updatePolicy"
|
||||
path="additions"/>
|
||||
|
@ -351,7 +413,29 @@
|
|||
menubarPath="updatePolicy/additions"
|
||||
state="true"
|
||||
style="radio">
|
||||
</action>
|
||||
</action>
|
||||
|
||||
<menu id="updatesAtomic"
|
||||
label="%menu.updatePolicyAtomic"
|
||||
path="additions"/>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.AtomicUpdatePolicyAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdatePolicy_Atomic"
|
||||
label="%action.updatePolicyAtomic.label"
|
||||
menubarPath="updatesAtomic/additions"
|
||||
style="radio">
|
||||
</action>
|
||||
<action
|
||||
class="org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions.NonAtomicUpdatePolicyAction"
|
||||
id="org.eclipse.dd.dsf.debug.ui.UpdatePolicy_NonAtomic"
|
||||
label="%action.updatePolicyNotAtomic.label"
|
||||
menubarPath="updatesAtomic/additions"
|
||||
state="true"
|
||||
style="radio">
|
||||
</action>
|
||||
|
||||
|
||||
|
||||
</viewContribution>
|
||||
|
||||
</extension>
|
||||
|
|
|
@ -36,8 +36,8 @@ public class AbstractDebugVMAdapter extends AbstractDMVMAdapter
|
|||
}
|
||||
|
||||
private SteppingController fController;
|
||||
|
||||
@Override
|
||||
|
||||
@Override
|
||||
protected IVMProvider createViewModelProvider(IPresentationContext context) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,8 @@ import org.eclipse.dd.dsf.debug.service.ICachingService;
|
|||
import org.eclipse.dd.dsf.debug.service.IExpressions;
|
||||
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
||||
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
||||
import org.eclipse.dd.dsf.debug.ui.DsfDebugUITools;
|
||||
import org.eclipse.dd.dsf.debug.ui.IDsfDebugUIConstants;
|
||||
import org.eclipse.dd.dsf.service.DsfServicesTracker;
|
||||
import org.eclipse.dd.dsf.service.DsfSession;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMAdapter;
|
||||
|
@ -51,6 +53,7 @@ import org.eclipse.debug.internal.core.IExpressionsListener2;
|
|||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
import org.eclipse.jface.viewers.TreePath;
|
||||
|
@ -95,6 +98,15 @@ public class ExpressionVMProvider extends AbstractDMVMProvider
|
|||
DebugPlugin.getDefault().getExpressionManager().addExpressionListener(this);
|
||||
|
||||
configureLayout();
|
||||
|
||||
final IPreferenceStore store = DsfDebugUITools.getPreferenceStore();
|
||||
store.addPropertyChangeListener(new IPropertyChangeListener()
|
||||
{
|
||||
public void propertyChange(PropertyChangeEvent event) {
|
||||
setAtomicUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_ATOMIC_UPDATE_ENABLE));
|
||||
}
|
||||
});
|
||||
setAtomicUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_ATOMIC_UPDATE_ENABLE));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -22,6 +22,8 @@ import org.eclipse.dd.dsf.debug.service.ICachingService;
|
|||
import org.eclipse.dd.dsf.debug.service.IRegisters;
|
||||
import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext;
|
||||
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
||||
import org.eclipse.dd.dsf.debug.ui.DsfDebugUITools;
|
||||
import org.eclipse.dd.dsf.debug.ui.IDsfDebugUIConstants;
|
||||
import org.eclipse.dd.dsf.service.DsfServicesTracker;
|
||||
import org.eclipse.dd.dsf.service.DsfSession;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMAdapter;
|
||||
|
@ -36,6 +38,7 @@ import org.eclipse.dd.dsf.ui.viewmodel.update.ManualUpdatePolicy;
|
|||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputUpdate;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
|
||||
|
@ -86,6 +89,15 @@ 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) {
|
||||
setAtomicUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_ATOMIC_UPDATE_ENABLE));
|
||||
}
|
||||
});
|
||||
setAtomicUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_ATOMIC_UPDATE_ENABLE));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions;
|
||||
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.update.AllUpdateScope;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class AllUpdateScopeAction extends SelectUpdateScopeAction {
|
||||
|
||||
public AllUpdateScopeAction() {
|
||||
super(AllUpdateScope.ALL_UPDATE_SCOPE_ID);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions;
|
||||
|
||||
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.actions.AbstractVMProviderActionDelegate;
|
||||
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
|
||||
public class AtomicUpdatePolicyAction extends AbstractVMProviderActionDelegate {
|
||||
|
||||
private final static String ATOMIC_UPDATE = "ATOMIC_UPDATE";
|
||||
|
||||
public void run(IAction action) {
|
||||
DsfDebugUIPlugin.getDefault().getPreferenceStore().setValue(ATOMIC_UPDATE, "true");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void selectionChanged(IAction action, ISelection selection) {
|
||||
super.selectionChanged(action, selection);
|
||||
|
||||
this.getAction().setChecked(DsfDebugUIPlugin.getDefault().getPreferenceStore().getBoolean(ATOMIC_UPDATE));
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions;
|
||||
|
||||
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.actions.AbstractVMProviderActionDelegate;
|
||||
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
|
||||
public class NonAtomicUpdatePolicyAction extends AbstractVMProviderActionDelegate {
|
||||
|
||||
private final static String ATOMIC_UPDATE = "ATOMIC_UPDATE";
|
||||
|
||||
public void run(IAction action) {
|
||||
DsfDebugUIPlugin.getDefault().getPreferenceStore().setValue(ATOMIC_UPDATE, "false");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void selectionChanged(IAction action, ISelection selection) {
|
||||
super.selectionChanged(action, selection);
|
||||
|
||||
getAction().setChecked(DsfDebugUIPlugin.getDefault().getPreferenceStore().getBoolean(ATOMIC_UPDATE));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007, 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions;
|
||||
|
||||
import org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.actions.AbstractVMProviderActionDelegate;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.IVMProvider;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.update.ICachingVMProvider;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.update.IVMUpdateScope;
|
||||
import org.eclipse.debug.ui.contexts.DebugContextEvent;
|
||||
import org.eclipse.jface.action.IAction;
|
||||
import org.eclipse.jface.viewers.ISelection;
|
||||
import org.eclipse.ui.IViewPart;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class SelectUpdateScopeAction extends AbstractVMProviderActionDelegate {
|
||||
|
||||
private final String fUpdateScopeId;
|
||||
|
||||
public SelectUpdateScopeAction(String policyId) {
|
||||
fUpdateScopeId = policyId;
|
||||
}
|
||||
|
||||
protected String getUpdateScopeId() {
|
||||
return fUpdateScopeId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(IViewPart view) {
|
||||
super.init(view);
|
||||
update();
|
||||
}
|
||||
|
||||
public void run(IAction action) {
|
||||
if(action.isChecked())
|
||||
{
|
||||
IVMProvider provider = getVMProvider();
|
||||
if (provider instanceof ICachingVMProvider) {
|
||||
ICachingVMProvider cachingProvider = (ICachingVMProvider)provider;
|
||||
IVMUpdateScope policy = getScopeFromProvider(cachingProvider, getUpdateScopeId());
|
||||
if (policy != null) {
|
||||
cachingProvider.setActiveUpdateScope(policy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IVMUpdateScope getScopeFromProvider(ICachingVMProvider provider, String id) {
|
||||
for (IVMUpdateScope policy : provider.getAvailableUpdateScopes()) {
|
||||
if (policy.getID().equals(id)) {
|
||||
return policy;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void selectionChanged(IAction action, ISelection selection) {
|
||||
super.selectionChanged(action, selection);
|
||||
update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void debugContextChanged(DebugContextEvent event) {
|
||||
super.debugContextChanged(event);
|
||||
update();
|
||||
}
|
||||
|
||||
protected void update() {
|
||||
IVMProvider provider = getVMProvider();
|
||||
if (provider instanceof ICachingVMProvider) {
|
||||
getAction().setEnabled(true);
|
||||
IVMUpdateScope activeScope = ((ICachingVMProvider)provider).getActiveUpdateScope();
|
||||
getAction().setChecked( activeScope != null && getUpdateScopeId().equals(activeScope.getID()) );
|
||||
} else {
|
||||
getAction().setEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.debug.internal.provisional.ui.viewmodel.update.actions;
|
||||
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.update.VisibleUpdateScope;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class VisibleUpdateScopeAction extends SelectUpdateScopeAction {
|
||||
|
||||
public VisibleUpdateScopeAction() {
|
||||
super(VisibleUpdateScope.VISIBLE_UPDATE_SCOPE_ID);
|
||||
}
|
||||
}
|
|
@ -19,6 +19,8 @@ import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
|||
import org.eclipse.dd.dsf.debug.service.ICachingService;
|
||||
import org.eclipse.dd.dsf.debug.service.IExpressions;
|
||||
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
||||
import org.eclipse.dd.dsf.debug.ui.DsfDebugUITools;
|
||||
import org.eclipse.dd.dsf.debug.ui.IDsfDebugUIConstants;
|
||||
import org.eclipse.dd.dsf.service.DsfServicesTracker;
|
||||
import org.eclipse.dd.dsf.service.DsfSession;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMAdapter;
|
||||
|
@ -32,6 +34,7 @@ import org.eclipse.dd.dsf.ui.viewmodel.update.ManualUpdatePolicy;
|
|||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentation;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||
|
||||
|
@ -65,6 +68,15 @@ 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) {
|
||||
setAtomicUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_ATOMIC_UPDATE_ENABLE));
|
||||
}
|
||||
});
|
||||
setAtomicUpdate(store.getBoolean(IDsfDebugUIConstants.PREF_ATOMIC_UPDATE_ENABLE));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -94,6 +94,15 @@ public class DsfDebugPreferencePage extends FieldEditorPreferencePage implements
|
|||
minIntervalEditor.setValidRange(0, 10000);
|
||||
minIntervalEditor.fillIntoGrid(performanceGroup, 3);
|
||||
addField(minIntervalEditor);
|
||||
|
||||
// atomic update
|
||||
BooleanFieldEditor atomicUpdateEditor = new BooleanFieldEditor(
|
||||
IDsfDebugUIConstants.PREF_ATOMIC_UPDATE_ENABLE,
|
||||
MessagesForPreferences.DsfDebugPreferencePage_atomicUpdate_label,
|
||||
performanceGroup);
|
||||
|
||||
atomicUpdateEditor.fillIntoGrid(performanceGroup, 3);
|
||||
addField(atomicUpdateEditor);
|
||||
|
||||
// need to set layout again
|
||||
performanceGroup.setLayout(groupLayout);
|
||||
|
|
|
@ -25,6 +25,8 @@ class MessagesForPreferences extends NLS {
|
|||
public static String DsfDebugPreferencePage_performanceGroup_label;
|
||||
|
||||
public static String DsfDebugPreferencePage_syncStepping_label;
|
||||
|
||||
public static String DsfDebugPreferencePage_atomicUpdate_label;
|
||||
|
||||
static {
|
||||
// initialize resource bundle
|
||||
|
|
|
@ -14,3 +14,4 @@ DsfDebugPreferencePage_limitStackFrames_label=Limit number of stack frames to
|
|||
DsfDebugPreferencePage_minStepInterval_label=Minimum interval between steps (in milliseconds)
|
||||
DsfDebugPreferencePage_performanceGroup_label=Performance
|
||||
DsfDebugPreferencePage_syncStepping_label=Synchronize stepping speed with UI updates
|
||||
DsfDebugPreferencePage_atomicUpdate_label=Atomic Update
|
|
@ -0,0 +1,24 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.dd.dsf.debug.ui;
|
||||
|
||||
import org.eclipse.dd.dsf.debug.internal.ui.DsfDebugUIPlugin;
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
|
||||
public class DsfDebugUITools {
|
||||
|
||||
public static IPreferenceStore getPreferenceStore()
|
||||
{
|
||||
return DsfDebugUIPlugin.getDefault().getPreferenceStore();
|
||||
}
|
||||
|
||||
}
|
|
@ -88,6 +88,13 @@ public interface IDsfDebugUIConstants {
|
|||
* @since 1.1
|
||||
*/
|
||||
public static final String PREF_MIN_STEP_INTERVAL= "minStepInterval"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Boolean preference whether to wait for view update before continuing run control requests
|
||||
*
|
||||
* @since 1.1
|
||||
*/
|
||||
public static final String PREF_ATOMIC_UPDATE_ENABLE = "atomicUpdateEnable"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* Help prefixes.
|
||||
|
|
|
@ -333,7 +333,7 @@ abstract public class AbstractVMAdapter implements IVMAdapter
|
|||
*/
|
||||
@ThreadSafe
|
||||
abstract protected IVMProvider createViewModelProvider(IPresentationContext context);
|
||||
|
||||
|
||||
/**
|
||||
* Dispatch given event to VM providers interested in events.
|
||||
*
|
||||
|
|
|
@ -52,7 +52,7 @@ import org.eclipse.jface.viewers.Viewer;
|
|||
*/
|
||||
@ConfinedToDsfExecutor("#getProvider()#getExecutor()")
|
||||
@SuppressWarnings("restriction")
|
||||
public class DefaultVMModelProxyStrategy implements IVMModelProxy {
|
||||
public class DefaultVMModelProxyStrategy implements IVMModelProxy, IVMModelProxyExtension {
|
||||
|
||||
private final AbstractVMProvider fProvider;
|
||||
private final Object fRootElement;
|
||||
|
@ -103,6 +103,14 @@ public class DefaultVMModelProxyStrategy implements IVMModelProxy {
|
|||
return fRootElement;
|
||||
}
|
||||
|
||||
public Object getViewerInput() {
|
||||
return fRootElement;
|
||||
}
|
||||
|
||||
public TreePath getRootPath() {
|
||||
return TreePath.EMPTY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies registered listeners of the given delta.
|
||||
*
|
||||
|
@ -230,7 +238,7 @@ public class DefaultVMModelProxyStrategy implements IVMModelProxy {
|
|||
*
|
||||
* @return viewer or <code>null</code> if not installed
|
||||
*/
|
||||
protected Viewer getViewer() {
|
||||
public Viewer getViewer() {
|
||||
return fViewer;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007, 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.ui.viewmodel;
|
||||
|
||||
import org.eclipse.jface.viewers.TreePath;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
|
||||
/**
|
||||
* View Model extension to IVMModelProxy interface. This extension
|
||||
* allows access to the viewer.
|
||||
*/
|
||||
public interface IVMModelProxyExtension extends IVMModelProxy {
|
||||
|
||||
/**
|
||||
* Returns the viewer.
|
||||
*/
|
||||
public Viewer getViewer();
|
||||
|
||||
/**
|
||||
* Returns the viewer input that was set to the viewer when this proxy
|
||||
* was created.
|
||||
*/
|
||||
public Object getViewerInput();
|
||||
|
||||
/**
|
||||
* Returns the full path for the root element. If the path is empty, it
|
||||
* means that the root element is the viewer input.
|
||||
* @return
|
||||
*/
|
||||
public TreePath getRootPath();
|
||||
}
|
|
@ -19,6 +19,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.dd.dsf.concurrent.CountingRequestMonitor;
|
||||
|
@ -34,6 +35,7 @@ import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
|||
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMAdapter;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMProvider;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.IVMModelProxy;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.IVMModelProxyExtension;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.IVMNode;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.VMChildrenCountUpdate;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.VMChildrenUpdate;
|
||||
|
@ -41,20 +43,30 @@ import org.eclipse.dd.dsf.ui.viewmodel.VMHasChildrenUpdate;
|
|||
import org.eclipse.dd.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.ModelDelta;
|
||||
import org.eclipse.jface.resource.ImageDescriptor;
|
||||
import org.eclipse.jface.viewers.TreePath;
|
||||
import org.eclipse.jface.viewers.TreeViewer;
|
||||
import org.eclipse.swt.graphics.FontData;
|
||||
import org.eclipse.swt.graphics.RGB;
|
||||
import org.eclipse.swt.widgets.Tree;
|
||||
import org.eclipse.swt.widgets.TreeItem;
|
||||
|
||||
/**
|
||||
* Base implementation of a caching view model provider.
|
||||
*/
|
||||
@SuppressWarnings("restriction")
|
||||
public class AbstractCachingVMProvider extends AbstractVMProvider implements ICachingVMProvider {
|
||||
public class AbstractCachingVMProvider extends AbstractVMProvider implements ICachingVMProvider, ICachingVMProviderExtension {
|
||||
|
||||
private boolean fIsAtomicUpdate = false;
|
||||
|
||||
// debug flags
|
||||
public static boolean DEBUG_CACHE = false;
|
||||
|
||||
|
@ -293,8 +305,10 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
|
|||
}
|
||||
|
||||
protected static String SELECTED_UPDATE_MODE = "org.eclipse.dd.dsf.ui.viewmodel.update.selectedUpdateMode"; //$NON-NLS-1$
|
||||
protected static String SELECTED_UPDATE_SCOPE = "org.eclipse.dd.dsf.ui.viewmodel.update.selectedUpdateScope"; //$NON-NLS-1$
|
||||
|
||||
private IVMUpdatePolicy[] fAvailableUpdatePolicies;
|
||||
private IVMUpdateScope[] fAvailableUpdateScopes;
|
||||
|
||||
public Map<Object, RootElementMarkerKey> fRootMarkers = new HashMap<Object, RootElementMarkerKey>();
|
||||
|
||||
|
@ -328,12 +342,19 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
|
|||
fCacheListHead.fPrevious = fCacheListHead;
|
||||
|
||||
fAvailableUpdatePolicies = createUpdateModes();
|
||||
|
||||
fAvailableUpdateScopes = createUpdateScopes();
|
||||
setActiveUpdateScope(new VisibleUpdateScope());
|
||||
}
|
||||
|
||||
protected IVMUpdatePolicy[] createUpdateModes() {
|
||||
return new IVMUpdatePolicy[] { new AutomaticUpdatePolicy() };
|
||||
}
|
||||
|
||||
protected IVMUpdateScope[] createUpdateScopes() {
|
||||
return new IVMUpdateScope[] { new VisibleUpdateScope(), new AllUpdateScope() };
|
||||
}
|
||||
|
||||
public IVMUpdatePolicy[] getAvailableUpdatePolicies() {
|
||||
return fAvailableUpdatePolicies;
|
||||
}
|
||||
|
@ -697,12 +718,239 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void handleEvent(final IVMModelProxy proxyStrategy, final Object event, RequestMonitor rm) {
|
||||
protected void handleEvent(final IVMModelProxy proxyStrategy, final Object event, final RequestMonitor rm) {
|
||||
IElementUpdateTester elementTester = getActiveUpdatePolicy().getElementUpdateTester(event);
|
||||
|
||||
|
||||
flush(new FlushMarkerKey(proxyStrategy.getRootElement(), elementTester));
|
||||
|
||||
super.handleEvent(proxyStrategy, event, rm);
|
||||
if (proxyStrategy instanceof IVMModelProxyExtension) {
|
||||
IVMModelProxyExtension proxyStrategyExtension = (IVMModelProxyExtension)proxyStrategy;
|
||||
if(fIsAtomicUpdate) {
|
||||
if(this.getActiveUpdateScope().getID().equals(AllUpdateScope.ALL_UPDATE_SCOPE_ID)) {
|
||||
updateExpanded(
|
||||
proxyStrategyExtension,
|
||||
proxyStrategyExtension.getViewerInput(), proxyStrategyExtension.getRootPath(),
|
||||
new RequestMonitor(getExecutor(), null) {
|
||||
@Override
|
||||
protected void handleCompleted() {
|
||||
AbstractCachingVMProvider.super.handleEvent(proxyStrategy, event, rm);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// block updating only the viewport
|
||||
|
||||
TreeViewer viewer = (TreeViewer) proxyStrategyExtension.getViewer();
|
||||
Tree tree = viewer.getTree();
|
||||
int count[] = { tree.getSize().y / tree.getItemHeight() };
|
||||
|
||||
final CountingRequestMonitor multiRm = new CountingRequestMonitor(getExecutor(), rm);
|
||||
multiRm.setDoneCount(count[0] + 1);
|
||||
|
||||
ArrayList<IChildrenUpdate> childrenUpdateVector = new ArrayList<IChildrenUpdate>();
|
||||
|
||||
updateVisibleExpanded(tree, new TreeItem[] { tree.getTopItem() }, count, viewer, proxyStrategyExtension,
|
||||
multiRm, childrenUpdateVector);
|
||||
update(childrenUpdateVector.toArray(new IChildrenUpdate[childrenUpdateVector.size()]));
|
||||
|
||||
super.handleEvent(proxyStrategy, event, multiRm);
|
||||
}
|
||||
} else {
|
||||
if(this.getActiveUpdateScope().getID().equals(AllUpdateScope.ALL_UPDATE_SCOPE_ID))
|
||||
{
|
||||
final CountingRequestMonitor multiRm = new CountingRequestMonitor(getExecutor(), rm);
|
||||
multiRm.setDoneCount(2);
|
||||
|
||||
updateExpanded(
|
||||
proxyStrategyExtension,
|
||||
proxyStrategyExtension.getViewerInput(), proxyStrategyExtension.getRootPath(),
|
||||
multiRm);
|
||||
super.handleEvent(proxyStrategy, event, multiRm);
|
||||
} else {
|
||||
super.handleEvent(proxyStrategy, event, rm);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
super.handleEvent(proxyStrategy, event, rm);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateVisibleExpanded(final Object parent, TreeItem startItem[], final int count[], final TreeViewer viewer,
|
||||
final IVMModelProxy proxyStrategy, final RequestMonitor rm, List<IChildrenUpdate> childrenUpdatesVector)
|
||||
{
|
||||
if(parent instanceof Tree)
|
||||
{
|
||||
for(int i = 0; i < ((Tree) parent).getItemCount() && count[0] > 0; i++)
|
||||
{
|
||||
TreeItem item = ((Tree) parent).getItem(i);
|
||||
if(item.equals(startItem[0]))
|
||||
startItem[0] = null;
|
||||
|
||||
if(startItem[0] == null)
|
||||
{
|
||||
childrenUpdatesVector.add(createChildrenUpdate(item, proxyStrategy, viewer.getInput(), rm));
|
||||
count[0]--;
|
||||
}
|
||||
|
||||
if(item.getData() != null && viewer.getExpandedState(item.getData()))
|
||||
updateVisibleExpanded(item, startItem, count, viewer, proxyStrategy, rm,
|
||||
childrenUpdatesVector);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int i = 0; i < ((TreeItem) parent).getItemCount() && count[0] > 0; i++)
|
||||
{
|
||||
TreeItem item = ((TreeItem) parent).getItem(i);
|
||||
if(item.equals(startItem[0]))
|
||||
startItem[0] = null;
|
||||
|
||||
if(startItem[0] == null)
|
||||
{
|
||||
childrenUpdatesVector.add(createChildrenUpdate(item, proxyStrategy, viewer.getInput(), rm));
|
||||
count[0]--;
|
||||
}
|
||||
|
||||
if(item.getData() != null && viewer.getExpandedState(item.getData()))
|
||||
updateVisibleExpanded(item, startItem, count, viewer, proxyStrategy, rm,
|
||||
childrenUpdatesVector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IChildrenUpdate createChildrenUpdate(TreeItem child, final IVMModelProxy proxyStrategy, final Object viewerInput, final RequestMonitor rm)
|
||||
{
|
||||
List<Object> pathList = new LinkedList<Object>();
|
||||
TreeItem item = child.getParentItem();
|
||||
Tree tree = null;
|
||||
while (item != null) {
|
||||
pathList.add(0, item.getData());
|
||||
item = item.getParentItem();
|
||||
}
|
||||
final TreePath path = new TreePath(pathList.toArray());
|
||||
int index = 0;
|
||||
if(child.getParentItem() != null)
|
||||
index = child.getParentItem().indexOf(child);
|
||||
else
|
||||
index = child.getParent().indexOf(child);
|
||||
|
||||
final IPresentationContext presentationContext = getPresentationContext();
|
||||
|
||||
final String columns[] = presentationContext.getColumns();
|
||||
|
||||
return new VMChildrenUpdate(
|
||||
path, viewerInput,
|
||||
getPresentationContext(), index, 1, new DataRequestMonitor<List<Object>>(getExecutor(), null) {
|
||||
@Override
|
||||
protected void handleCompleted() {
|
||||
for(final Object o : getData())
|
||||
{
|
||||
if(o instanceof IAdaptable)
|
||||
{
|
||||
IElementLabelProvider labelProvider = (IElementLabelProvider) ((IAdaptable) o).getAdapter(IElementLabelProvider.class);
|
||||
|
||||
labelProvider.update(new ILabelUpdate[] {
|
||||
new ILabelUpdate()
|
||||
{
|
||||
public Object getElement() {
|
||||
return o;
|
||||
}
|
||||
|
||||
public TreePath getElementPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public IPresentationContext getPresentationContext() {
|
||||
return presentationContext;
|
||||
}
|
||||
|
||||
public Object getViewerInput() {
|
||||
return viewerInput;
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
|
||||
}
|
||||
|
||||
public IStatus getStatus() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isCanceled() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setStatus(IStatus status) {
|
||||
|
||||
}
|
||||
|
||||
public String[] getColumnIds() {
|
||||
return columns;
|
||||
}
|
||||
|
||||
public void setBackground(RGB arg0, int arg1) {
|
||||
|
||||
}
|
||||
|
||||
public void setFontData(FontData arg0, int arg1) {
|
||||
|
||||
}
|
||||
|
||||
public void setForeground(RGB arg0, int arg1) {
|
||||
|
||||
}
|
||||
|
||||
public void setImageDescriptor(ImageDescriptor arg0, int arg1) {
|
||||
|
||||
}
|
||||
|
||||
public void setLabel(String arg0, int arg1) {
|
||||
}
|
||||
|
||||
public void done() {
|
||||
|
||||
rm.done();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void updateExpanded(final IVMModelProxyExtension proxyStrategy, final Object viewerInput, final TreePath path, final RequestMonitor rm)
|
||||
{
|
||||
this.update(new IChildrenUpdate[] { new VMChildrenUpdate(
|
||||
path, viewerInput,
|
||||
getPresentationContext(), -1, -1, new DataRequestMonitor<List<Object>>(getExecutor(), null) {
|
||||
@Override
|
||||
protected void handleCompleted() {
|
||||
if (getData() != null) {
|
||||
TreeViewer viewer = (TreeViewer) proxyStrategy.getViewer();
|
||||
|
||||
int expandedCount = 0;
|
||||
|
||||
final CountingRequestMonitor multiRm = new CountingRequestMonitor(getExecutor(), rm);
|
||||
|
||||
for(Object data : getData())
|
||||
{
|
||||
if(viewer.getExpandedState(data))
|
||||
{
|
||||
Object[] childPathSegments = new Object[path.getSegmentCount() + 1];
|
||||
int i = 0;
|
||||
for (i = 0; i < path.getSegmentCount(); i++) {
|
||||
childPathSegments[i] = path.getSegment(i);
|
||||
}
|
||||
childPathSegments[i] = data;
|
||||
updateExpanded(proxyStrategy, viewerInput, new TreePath(childPathSegments), multiRm);
|
||||
expandedCount++;
|
||||
}
|
||||
}
|
||||
|
||||
multiRm.setDoneCount(expandedCount);
|
||||
}
|
||||
}
|
||||
})});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -906,4 +1154,34 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
|
|||
return null;
|
||||
}
|
||||
|
||||
public IVMUpdateScope[] getAvailableUpdateScopes() {
|
||||
return fAvailableUpdateScopes;
|
||||
}
|
||||
|
||||
public IVMUpdateScope getActiveUpdateScope() {
|
||||
String updateScopeId = (String)getPresentationContext().getProperty(SELECTED_UPDATE_SCOPE);
|
||||
if (updateScopeId != null) {
|
||||
for (IVMUpdateScope updateScope : getAvailableUpdateScopes()) {
|
||||
if (updateScope.getID().equals(updateScopeId)) {
|
||||
return updateScope;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Default to the first one.
|
||||
return getAvailableUpdateScopes()[0];
|
||||
}
|
||||
|
||||
public void setActiveUpdateScope(IVMUpdateScope updateScope) {
|
||||
getPresentationContext().setProperty(SELECTED_UPDATE_SCOPE, updateScope.getID());
|
||||
}
|
||||
|
||||
public boolean isAtomicUpdate() {
|
||||
return fIsAtomicUpdate;
|
||||
}
|
||||
|
||||
public void setAtomicUpdate(boolean enable) {
|
||||
fIsAtomicUpdate = enable;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007, 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.ui.viewmodel.update;
|
||||
|
||||
import org.eclipse.jface.viewers.TreePath;
|
||||
|
||||
/**
|
||||
* An "automatic" update policy which causes the view model provider cache to
|
||||
* be flushed whenever an event causes a delta to be generated in the given
|
||||
* model.
|
||||
*/
|
||||
public class AllUpdateScope implements IVMUpdateScope {
|
||||
|
||||
public static String ALL_UPDATE_SCOPE_ID = "org.eclipse.dd.dsf.ui.viewmodel.update.allUpdateScope"; //$NON-NLS-1$
|
||||
|
||||
public static IElementUpdateTester fgUpdateTester = new IElementUpdateTester() {
|
||||
public int getUpdateFlags(Object viewerInput, TreePath path) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public boolean includes(IElementUpdateTester tester) {
|
||||
return tester.equals(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return ViewModelUpdateMessages.AllUpdateScope_name;
|
||||
}
|
||||
};
|
||||
|
||||
public String getID() {
|
||||
return ALL_UPDATE_SCOPE_ID;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return ViewModelUpdateMessages.AllUpdateScope_name;
|
||||
}
|
||||
}
|
|
@ -34,6 +34,32 @@ public interface ICachingVMProvider extends IVMProvider {
|
|||
* policies supported by the provider.
|
||||
*/
|
||||
public void setActiveUpdatePolicy(IVMUpdatePolicy mode);
|
||||
|
||||
/**
|
||||
* Returns the update policies that the given provider supports.
|
||||
*/
|
||||
public IVMUpdateScope[] getAvailableUpdateScopes();
|
||||
|
||||
/**
|
||||
* Returns the active update policy.
|
||||
*/
|
||||
public IVMUpdateScope getActiveUpdateScope();
|
||||
|
||||
/**
|
||||
* Sets the active update policy. This has to be one of the update
|
||||
* policies supported by the provider.
|
||||
*/
|
||||
public void setActiveUpdateScope(IVMUpdateScope mode);
|
||||
|
||||
/**
|
||||
* Is update atomic?
|
||||
*/
|
||||
public boolean isAtomicUpdate();
|
||||
|
||||
/**
|
||||
* Sets atomic update.
|
||||
*/
|
||||
public void setAtomicUpdate(boolean enable);
|
||||
|
||||
/**
|
||||
* Forces the view to flush its cache and re-fetch data from the view
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.ui.viewmodel.update;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public interface ICachingVMProviderExtension extends ICachingVMProvider {
|
||||
|
||||
|
||||
public boolean isAtomicUpdate();
|
||||
|
||||
public void setAtomicUpdate(boolean enable);
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007, 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.ui.viewmodel.update;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public interface IVMUpdateScope {
|
||||
|
||||
/**
|
||||
* Returns unique ID of this update policy.
|
||||
*/
|
||||
public String getID();
|
||||
|
||||
/**
|
||||
* Returns the user-presentable name of this update policy.
|
||||
*/
|
||||
public String getName();
|
||||
}
|
|
@ -18,6 +18,8 @@ public class ViewModelUpdateMessages extends NLS {
|
|||
|
||||
public static String AutomaticUpdatePolicy_name;
|
||||
public static String ManualUpdatePolicy_name;
|
||||
public static String AllUpdateScope_name;
|
||||
public static String VisibleUpdateScope_name;
|
||||
|
||||
static {
|
||||
// load message values from bundle file
|
||||
|
|
|
@ -9,4 +9,6 @@
|
|||
# Wind River Systems - initial API and implementation
|
||||
###############################################################################
|
||||
AutomaticUpdatePolicy_name = Automatic
|
||||
ManualUpdatePolicy_name = Manual
|
||||
ManualUpdatePolicy_name = Manual
|
||||
AllUpdateScope_name = All Elements
|
||||
VisibleUpdateScope_name== Visible Elements
|
|
@ -0,0 +1,46 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007, 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.dsf.ui.viewmodel.update;
|
||||
|
||||
import org.eclipse.jface.viewers.TreePath;
|
||||
|
||||
/**
|
||||
* An "automatic" update policy which causes the view model provider cache to
|
||||
* be flushed whenever an event causes a delta to be generated in the given
|
||||
* model.
|
||||
*/
|
||||
public class VisibleUpdateScope implements IVMUpdateScope {
|
||||
|
||||
public static String VISIBLE_UPDATE_SCOPE_ID = "org.eclipse.dd.dsf.ui.viewmodel.update.visibleUpdateScope"; //$NON-NLS-1$
|
||||
|
||||
public static IElementUpdateTester fgUpdateTester = new IElementUpdateTester() {
|
||||
public int getUpdateFlags(Object viewerInput, TreePath path) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public boolean includes(IElementUpdateTester tester) {
|
||||
return tester.equals(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return ViewModelUpdateMessages.VisibleUpdateScope_name;
|
||||
}
|
||||
};
|
||||
|
||||
public String getID() {
|
||||
return VISIBLE_UPDATE_SCOPE_ID;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return ViewModelUpdateMessages.VisibleUpdateScope_name;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2008 Wind River Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Wind River Systems - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.eclipse.dd.gdb.internal.ui.viewmodel.launch;
|
||||
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.AbstractVMProvider;
|
||||
import org.eclipse.dd.dsf.ui.viewmodel.DefaultVMModelProxyStrategy;
|
||||
import org.eclipse.debug.core.DebugPlugin;
|
||||
import org.eclipse.jface.viewers.TreePath;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class LaunchVMModelProxyStrategy extends DefaultVMModelProxyStrategy {
|
||||
|
||||
final private TreePath fRootPath;
|
||||
|
||||
public LaunchVMModelProxyStrategy(AbstractVMProvider provider, Object rootElement) {
|
||||
super(provider, rootElement);
|
||||
fRootPath = new TreePath( new Object[] { rootElement });
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getViewerInput() {
|
||||
return DebugPlugin.getDefault().getLaunchManager();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TreePath getRootPath() {
|
||||
return fRootPath;
|
||||
}
|
||||
}
|
|
@ -61,7 +61,6 @@ public class LaunchVMProvider extends AbstractLaunchVMProvider
|
|||
DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
DebugPlugin.getDefault().removeDebugEventListener(this);
|
||||
|
@ -69,7 +68,6 @@ public class LaunchVMProvider extends AbstractLaunchVMProvider
|
|||
super.dispose();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean canSkipHandlingEvent(Object newEvent, Object eventToSkip) {
|
||||
// Never skip the process lifecycle events.
|
||||
|
|
Loading…
Add table
Reference in a new issue