diff options
-rw-r--r-- | dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF | 17 | ||||
-rw-r--r-- | dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java | 75 |
2 files changed, 59 insertions, 33 deletions
diff --git a/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF b/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF index 535e8a593a1..fe3ef1ee41a 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF +++ b/dsf/org.eclipse.cdt.dsf.ui/META-INF/MANIFEST.MF @@ -6,18 +6,17 @@ Bundle-SymbolicName: org.eclipse.cdt.dsf.ui;singleton:=true Bundle-Version: 2.0.1.qualifier Bundle-Activator: org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin Bundle-Localization: plugin -Require-Bundle: org.eclipse.ui, - org.eclipse.core.runtime, - org.eclipse.core.variables, - org.eclipse.debug.ui, - org.eclipse.cdt.dsf, - org.eclipse.cdt.core, - org.eclipse.cdt.debug.core, - org.eclipse.cdt.debug.ui, +Require-Bundle: org.eclipse.ui;bundle-version="3.5.0", + org.eclipse.core.runtime;bundle-version="3.5.0", + org.eclipse.debug.ui;bundle-version="3.5.0", + org.eclipse.cdt.dsf;bundle-version="2.0.0", + org.eclipse.cdt.core;bundle-version="5.1.0", + org.eclipse.cdt.debug.core;bundle-version="6.0.0", + org.eclipse.cdt.debug.ui;bundle-version="6.0.0", org.eclipse.jface.text;bundle-version="3.4.0", org.eclipse.ui.editors;bundle-version="3.4.0", org.eclipse.ui.workbench.texteditor;bundle-version="3.4.0", - org.eclipse.ui.ide;bundle-version="3.4.0", + org.eclipse.ui.ide;bundle-version="3.5.0", org.eclipse.cdt.ui;bundle-version="5.1.0", org.eclipse.core.expressions;bundle-version="3.4.0", org.eclipse.core.filesystem;bundle-version="1.2.0" diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java index 343b1f246de..12747366dae 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java @@ -33,6 +33,9 @@ import org.eclipse.cdt.dsf.debug.ui.viewmodel.IDebugVMConstants; import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueVMUtil; import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin; import org.eclipse.cdt.dsf.ui.concurrent.SimpleDisplayExecutor; +import org.eclipse.cdt.dsf.ui.viewmodel.IVMNode; +import org.eclipse.cdt.dsf.ui.viewmodel.IVMProvider; +import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext; import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider; import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate; import org.eclipse.cdt.dsf.ui.viewmodel.properties.VMPropertiesUpdate; @@ -49,7 +52,7 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.TreeModelViewer; import org.eclipse.debug.ui.IDebugModelPresentation; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.debug.ui.IDebugView; -import org.eclipse.debug.ui.IDetailPane; +import org.eclipse.debug.ui.IDetailPane2; import org.eclipse.debug.ui.IValueDetailListener; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; @@ -69,6 +72,7 @@ import org.eclipse.jface.text.TextViewer; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; @@ -80,18 +84,19 @@ import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.IViewSite; import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.progress.WorkbenchJob; import org.eclipse.ui.texteditor.IUpdate; -import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds; -public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropertyChangeListener { +public class NumberFormatDetailPane implements IDetailPane2, IAdaptable, IPropertyChangeListener { /** * The <code>IWorkbenchPartSite</code> that the details area (and the @@ -258,7 +263,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert private ITreeSelection fElements; private boolean fFirst = true; private IProgressMonitor fMonitor; - private boolean fComputed = false; public DetailJob(IPresentationContext context, Object viewerInput, ITreeSelection elements, IDebugModelPresentation model) @@ -290,8 +294,13 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert final IElementPropertiesProvider propertiesProvider = (IElementPropertiesProvider)DebugPlugin.getAdapter(element, IElementPropertiesProvider.class); - final Executor executor = SimpleDisplayExecutor.getSimpleDisplayExecutor( - fWorkbenchPartSite.getShell().getDisplay()); + Display display; + if (fWorkbenchPartSite != null) { + display = fWorkbenchPartSite.getShell().getDisplay(); + } else { + display = PlatformUI.getWorkbench().getDisplay(); + } + final Executor executor = SimpleDisplayExecutor.getSimpleDisplayExecutor(display); Set<String> properties = new HashSet<String>(1); properties.add(IDebugVMConstants.PROP_FORMATTED_VALUE_AVAILABLE_FORMATS); propertiesProvider.update(new IPropertiesUpdate[] { new VMPropertiesUpdate( @@ -364,7 +373,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert */ public void detailComputed(IValue value, final String result) { synchronized (this) { - fComputed = true; } if (!fMonitor.isCanceled()) { WorkbenchJob append = new WorkbenchJob("append details") { //$NON-NLS-1$ @@ -491,8 +499,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert @Override public void focusGained(FocusEvent e) { - getViewSite().setSelectionProvider(fTextViewer.getSelectionProvider()); - setGlobalAction(IDebugView.SELECT_ALL_ACTION, getAction(DETAIL_SELECT_ALL_ACTION)); setGlobalAction(IDebugView.COPY_ACTION, getAction(DETAIL_COPY_ACTION)); @@ -502,8 +508,6 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert @Override public void focusLost(FocusEvent e) { - getViewSite().setSelectionProvider(null); - setGlobalAction(IDebugView.SELECT_ALL_ACTION, null); setGlobalAction(IDebugView.COPY_ACTION, null); @@ -522,13 +526,13 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert TextViewerAction textAction= new TextViewerAction(fTextViewer, ITextOperationTarget.SELECT_ALL); textAction.configureAction(MessagesForDetailPane.DetailPane_Select_All, "", ""); //$NON-NLS-1$ //$NON-NLS-2$ - textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL); + textAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_SELECT_ALL); PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugHelpContextIds.DETAIL_PANE_SELECT_ALL_ACTION); setAction(DETAIL_SELECT_ALL_ACTION, textAction); textAction= new TextViewerAction(fTextViewer, ITextOperationTarget.COPY); textAction.configureAction(MessagesForDetailPane.DetailPane_Copy, "", ""); //$NON-NLS-1$ //$NON-NLS-2$ - textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY); + textAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_COPY); PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugHelpContextIds.DETAIL_PANE_COPY_ACTION); setAction(DETAIL_COPY_ACTION, textAction); @@ -614,16 +618,26 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert if (fDetailJob != null) { fDetailJob.cancel(); } - IWorkbenchPart part = fWorkbenchPartSite.getPart(); - if (part instanceof IDebugView) { - Viewer viewer = ((IDebugView)part).getViewer(); - Object input = viewer.getInput(); - if (input != null && viewer instanceof TreeModelViewer) { - TreeModelViewer treeModelViewer = (TreeModelViewer)viewer; - fDetailJob = new DetailJob(treeModelViewer.getPresentationContext(), input, - (ITreeSelection)selection, null); - fDetailJob.schedule(); - } + if (fWorkbenchPartSite != null) { + IWorkbenchPart part = fWorkbenchPartSite.getPart(); + if (part instanceof IDebugView) { + Viewer viewer = ((IDebugView)part).getViewer(); + Object input = viewer.getInput(); + if (input != null && viewer instanceof TreeModelViewer) { + TreeModelViewer treeModelViewer = (TreeModelViewer)viewer; + fDetailJob = new DetailJob(treeModelViewer.getPresentationContext(), input, + (ITreeSelection)selection, null); + fDetailJob.schedule(); + } + } + } else if (firstElement instanceof IDMVMContext) { + IVMNode vmNode = ((IDMVMContext) firstElement).getVMNode(); + if (vmNode != null) { + IVMProvider vmProvider = vmNode.getVMProvider(); + fDetailJob = new DetailJob(vmProvider.getPresentationContext(), firstElement, + (ITreeSelection)selection, null); + fDetailJob.schedule(); + } } } } @@ -648,7 +662,10 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert if (fDetailJob != null) fDetailJob.cancel(); fDebugModelIdentifier = null; // Setting this to null makes sure the text viewer is reconfigured with the model presentation after disposal - if (fTextViewer != null && fTextViewer.getControl() != null) fTextViewer.getControl().dispose(); + if (fTextViewer != null && fTextViewer.getControl() != null) { + fTextViewer.getControl().dispose(); + fTextViewer = null; + } if (isInView()){ DsfUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); @@ -759,4 +776,14 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert getAction(DETAIL_WORD_WRAP_ACTION).setChecked(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP)); } } + + /* + * @see org.eclipse.debug.ui.IDetailPane2#getSelectionProvider() + */ + public ISelectionProvider getSelectionProvider() { + if (fTextViewer != null) { + return fTextViewer.getSelectionProvider(); + } + return null; + } } |