mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
Bug 210558: Migrate CDT to use new platform Modules view.
This commit is contained in:
parent
1aa23a4f5d
commit
78f39429c5
18 changed files with 947 additions and 1163 deletions
|
@ -8,6 +8,7 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* Ken Ryall (Nokia) - bugs 118894, 170027, 91771
|
* Ken Ryall (Nokia) - bugs 118894, 170027, 91771
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.core.model;
|
package org.eclipse.cdt.debug.internal.core.model;
|
||||||
|
|
||||||
|
@ -103,6 +104,7 @@ import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.MultiStatus;
|
import org.eclipse.core.runtime.MultiStatus;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
|
import org.eclipse.core.runtime.Platform;
|
||||||
import org.eclipse.core.runtime.Preferences;
|
import org.eclipse.core.runtime.Preferences;
|
||||||
import org.eclipse.core.runtime.Status;
|
import org.eclipse.core.runtime.Status;
|
||||||
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
|
import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
|
||||||
|
@ -826,6 +828,11 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv
|
||||||
return getMemoryBlockRetrieval();
|
return getMemoryBlockRetrieval();
|
||||||
if ( adapter.equals( IModuleRetrieval.class ) )
|
if ( adapter.equals( IModuleRetrieval.class ) )
|
||||||
return getModuleManager();
|
return getModuleManager();
|
||||||
|
|
||||||
|
// Force adapters to be loaded. Otherwise the adapter manager may not find
|
||||||
|
// the model proxy adapter for CDT debug elements.
|
||||||
|
Platform.getAdapterManager().loadAdapter(this, adapter.getName());
|
||||||
|
|
||||||
return super.getAdapter( adapter );
|
return super.getAdapter( adapter );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
|
||||||
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
|
org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
|
||||||
org.eclipse.ui.console;bundle-version="[3.1.100,4.0.0)",
|
org.eclipse.ui.console;bundle-version="[3.1.100,4.0.0)",
|
||||||
org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)",
|
org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)",
|
||||||
org.eclipse.core.filesystem
|
org.eclipse.core.filesystem,
|
||||||
|
org.eclipse.core.expressions
|
||||||
Bundle-ActivationPolicy: lazy
|
Bundle-ActivationPolicy: lazy
|
||||||
Bundle-RequiredExecutionEnvironment: J2SE-1.5
|
Bundle-RequiredExecutionEnvironment: J2SE-1.5
|
||||||
|
|
|
@ -13,7 +13,6 @@ pluginName=C/C++ Development Tools Debugger UI
|
||||||
providerName=Eclipse.org
|
providerName=Eclipse.org
|
||||||
|
|
||||||
MemoryView.name=Memory
|
MemoryView.name=Memory
|
||||||
ModulesView.name=Modules
|
|
||||||
SignalsView.name=Signals
|
SignalsView.name=Signals
|
||||||
ExecutablesView.name=Executables
|
ExecutablesView.name=Executables
|
||||||
|
|
||||||
|
@ -122,9 +121,6 @@ CommonModulePage.label=Common
|
||||||
ModulesDetailPaneFontDefinition.label=Modules View Detail Pane Text Font
|
ModulesDetailPaneFontDefinition.label=Modules View Detail Pane Text Font
|
||||||
ModulesDetailPaneFontDefinition.description=The text font used in the detail pane of the Modules view.
|
ModulesDetailPaneFontDefinition.description=The text font used in the detail pane of the Modules view.
|
||||||
|
|
||||||
CollapseAllModulesAction.label=Collapse All
|
|
||||||
CollapseAllModulesAction.tooltip=Collapse All
|
|
||||||
|
|
||||||
ModulePropertiesAction.label=Properties...
|
ModulePropertiesAction.label=Properties...
|
||||||
ModulePropertiesAction.tooltip=Open Module Properties Dialog
|
ModulePropertiesAction.tooltip=Open Module Properties Dialog
|
||||||
|
|
||||||
|
|
|
@ -37,12 +37,6 @@
|
||||||
class="org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyView"
|
class="org.eclipse.cdt.debug.internal.ui.views.disassembly.DisassemblyView"
|
||||||
id="org.eclipse.cdt.debug.ui.DisassemblyView">
|
id="org.eclipse.cdt.debug.ui.DisassemblyView">
|
||||||
</view>
|
</view>
|
||||||
<view
|
|
||||||
icon="icons/view16/modules_view.gif"
|
|
||||||
class="org.eclipse.cdt.debug.internal.ui.views.modules.ModulesView"
|
|
||||||
category="org.eclipse.debug.ui"
|
|
||||||
name="%ModulesView.name"
|
|
||||||
id="org.eclipse.cdt.debug.ui.ModulesView"/>
|
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.perspectiveExtensions">
|
point="org.eclipse.ui.perspectiveExtensions">
|
||||||
|
@ -66,6 +60,9 @@
|
||||||
<viewShortcut
|
<viewShortcut
|
||||||
id="org.eclipse.debug.ui.RegisterView">
|
id="org.eclipse.debug.ui.RegisterView">
|
||||||
</viewShortcut>
|
</viewShortcut>
|
||||||
|
<viewShortcut
|
||||||
|
id="org.eclipse.debug.ui.ModuleView">
|
||||||
|
</viewShortcut>
|
||||||
<viewShortcut
|
<viewShortcut
|
||||||
id="org.eclipse.debug.ui.MemoryView">
|
id="org.eclipse.debug.ui.MemoryView">
|
||||||
</viewShortcut>
|
</viewShortcut>
|
||||||
|
@ -82,12 +79,9 @@
|
||||||
visible="false"
|
visible="false"
|
||||||
relative="org.eclipse.debug.ui.VariableView"
|
relative="org.eclipse.debug.ui.VariableView"
|
||||||
relationship="stack"
|
relationship="stack"
|
||||||
id="org.eclipse.cdt.debug.ui.ModulesView">
|
id="org.eclipse.debug.ui.ModuleView">
|
||||||
</view>
|
</view>
|
||||||
<viewShortcut
|
<view
|
||||||
id="org.eclipse.cdt.debug.ui.ModulesView">
|
|
||||||
</viewShortcut>
|
|
||||||
<view
|
|
||||||
visible="true"
|
visible="true"
|
||||||
relative="org.eclipse.ui.console.ConsoleView"
|
relative="org.eclipse.ui.console.ConsoleView"
|
||||||
relationship="stack"
|
relationship="stack"
|
||||||
|
@ -757,7 +751,7 @@
|
||||||
</action>
|
</action>
|
||||||
</objectContribution>
|
</objectContribution>
|
||||||
<viewerContribution
|
<viewerContribution
|
||||||
targetID="org.eclipse.cdt.debug.ui.ModulesView"
|
targetID="org.eclipse.debug.ui.ModuleView"
|
||||||
id="org.eclipse.cdt.debug.ui.modulesView.popupMenu">
|
id="org.eclipse.cdt.debug.ui.modulesView.popupMenu">
|
||||||
<action
|
<action
|
||||||
helpContextId="load_symbols_for_all_context"
|
helpContextId="load_symbols_for_all_context"
|
||||||
|
@ -955,7 +949,7 @@
|
||||||
</menu>
|
</menu>
|
||||||
</viewContribution>
|
</viewContribution>
|
||||||
<viewContribution
|
<viewContribution
|
||||||
targetID="org.eclipse.cdt.debug.ui.ModulesView"
|
targetID="org.eclipse.debug.ui.ModuleView"
|
||||||
id="org.eclipse.debug.ui.modulesView.toolbar">
|
id="org.eclipse.debug.ui.modulesView.toolbar">
|
||||||
<action
|
<action
|
||||||
helpContextId="load_symbols_for_all_context"
|
helpContextId="load_symbols_for_all_context"
|
||||||
|
@ -973,16 +967,6 @@
|
||||||
id="org.eclipse.cdt.debug.ui"/>
|
id="org.eclipse.cdt.debug.ui"/>
|
||||||
</enablement>
|
</enablement>
|
||||||
</action>
|
</action>
|
||||||
<action
|
|
||||||
helpContextId="collapse_all_modules_context"
|
|
||||||
disabledIcon="icons/dlcl16/collapseall.gif"
|
|
||||||
toolbarPath="additions"
|
|
||||||
label="%CollapseAllModulesAction.label"
|
|
||||||
tooltip="%CollapseAllModulesAction.tooltip"
|
|
||||||
icon="icons/elcl16/collapseall.gif"
|
|
||||||
class="org.eclipse.cdt.debug.internal.ui.actions.CollapseAllModulesAction"
|
|
||||||
style="push"
|
|
||||||
id="org.eclipse.cdt.debug.ui.CollapseAllModulesAction"/>
|
|
||||||
</viewContribution>
|
</viewContribution>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
|
@ -1136,7 +1120,7 @@
|
||||||
</contextViewBinding>
|
</contextViewBinding>
|
||||||
<contextViewBinding
|
<contextViewBinding
|
||||||
contextId="org.eclipse.cdt.debug.ui.debugging"
|
contextId="org.eclipse.cdt.debug.ui.debugging"
|
||||||
viewId="org.eclipse.cdt.debug.ui.ModulesView"/>
|
viewId="org.eclipse.debug.ui.ModuleView"/>
|
||||||
</extension>
|
</extension>
|
||||||
<extension
|
<extension
|
||||||
point="org.eclipse.ui.editors.annotationTypes">
|
point="org.eclipse.ui.editors.annotationTypes">
|
||||||
|
@ -1269,15 +1253,35 @@
|
||||||
<factory
|
<factory
|
||||||
adaptableType="org.eclipse.cdt.debug.core.model.IModuleRetrieval"
|
adaptableType="org.eclipse.cdt.debug.core.model.IModuleRetrieval"
|
||||||
class="org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory">
|
class="org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory">
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider"/>
|
||||||
|
</factory>
|
||||||
|
<factory
|
||||||
|
adaptableType="org.eclipse.cdt.debug.core.model.ICDebugTarget"
|
||||||
|
class="org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory">
|
||||||
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider"/>
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider"/>
|
||||||
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory"/>
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory"/>
|
||||||
</factory>
|
</factory>
|
||||||
|
<factory
|
||||||
|
adaptableType="org.eclipse.cdt.debug.core.model.ICThread"
|
||||||
|
class="org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory">
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider"/>
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory"/>
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider"/>
|
||||||
|
</factory>
|
||||||
|
<factory
|
||||||
|
adaptableType="org.eclipse.cdt.debug.core.model.ICStackFrame"
|
||||||
|
class="org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory">
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider"/>
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory"/>
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider"/>
|
||||||
|
</factory>
|
||||||
<factory
|
<factory
|
||||||
adaptableType="org.eclipse.cdt.debug.core.model.ICModule"
|
adaptableType="org.eclipse.cdt.debug.core.model.ICModule"
|
||||||
class="org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory">
|
class="org.eclipse.cdt.debug.internal.ui.elements.adapters.CDebugElementAdapterFactory">
|
||||||
<adapter
|
<adapter
|
||||||
type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider">
|
type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider">
|
||||||
</adapter>
|
</adapter>
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider"/>
|
||||||
</factory>
|
</factory>
|
||||||
<factory
|
<factory
|
||||||
adaptableType="org.eclipse.cdt.debug.core.model.ICModule"
|
adaptableType="org.eclipse.cdt.debug.core.model.ICModule"
|
||||||
|
@ -1292,6 +1296,7 @@
|
||||||
<adapter
|
<adapter
|
||||||
type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider">
|
type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider">
|
||||||
</adapter>
|
</adapter>
|
||||||
|
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider"/>
|
||||||
</factory>
|
</factory>
|
||||||
<factory
|
<factory
|
||||||
adaptableType="org.eclipse.cdt.core.model.ICElement"
|
adaptableType="org.eclipse.cdt.core.model.ICElement"
|
||||||
|
@ -1507,4 +1512,23 @@
|
||||||
actionType="org.eclipse.cdt.debug.ui.breakpointactions.ExternalToolAction"/>
|
actionType="org.eclipse.cdt.debug.ui.breakpointactions.ExternalToolAction"/>
|
||||||
</extension>
|
</extension>
|
||||||
|
|
||||||
|
<extension point="org.eclipse.debug.ui.detailPaneFactories">
|
||||||
|
<detailFactories
|
||||||
|
class="org.eclipse.cdt.debug.internal.ui.views.modules.ModuleDetailPaneFactory"
|
||||||
|
id="org.eclipse.cdt.debug.ui.moduleDetailPaneFactory">
|
||||||
|
<enablement>
|
||||||
|
<with variable="selection">
|
||||||
|
<count value="1">
|
||||||
|
</count>
|
||||||
|
<iterate>
|
||||||
|
<or>
|
||||||
|
<instanceof value="org.eclipse.cdt.debug.core.model.ICModule"/>
|
||||||
|
<instanceof value="org.eclipse.cdt.core.model.ICElement"/>
|
||||||
|
</or>
|
||||||
|
</iterate>
|
||||||
|
</with>
|
||||||
|
</enablement>
|
||||||
|
</detailFactories>
|
||||||
|
</extension>
|
||||||
|
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2004, 2005 QNX Software 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:
|
|
||||||
* QNX Software Systems - Initial API and implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
package org.eclipse.cdt.debug.internal.ui.actions;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.internal.ui.CDebugImages;
|
|
||||||
import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
|
|
||||||
import org.eclipse.cdt.debug.internal.ui.preferences.ICDebugPreferenceConstants;
|
|
||||||
import org.eclipse.cdt.debug.internal.ui.views.modules.ModulesView;
|
|
||||||
import org.eclipse.jface.action.Action;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action that controls the appearance of the details pane in debug views
|
|
||||||
* such as the modules view. Instances of this class can be created to show
|
|
||||||
* the detail pane underneath the main tree, to the right of the main tree,
|
|
||||||
* or not shown at all.
|
|
||||||
*/
|
|
||||||
public class ToggleDetailPaneAction extends Action {
|
|
||||||
|
|
||||||
private ModulesView fModulesView;
|
|
||||||
|
|
||||||
private String fOrientation;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for ToggleDetailPaneAction.
|
|
||||||
*/
|
|
||||||
public ToggleDetailPaneAction( ModulesView view, String orientation, String hiddenLabel ) {
|
|
||||||
super( "", AS_RADIO_BUTTON ); //$NON-NLS-1$
|
|
||||||
setModulesView( view );
|
|
||||||
setOrientation( orientation );
|
|
||||||
if ( orientation == ICDebugPreferenceConstants.MODULES_DETAIL_PANE_UNDERNEATH ) {
|
|
||||||
setText( ActionMessages.getString( "ToggleDetailPaneAction.0" ) ); //$NON-NLS-1$
|
|
||||||
setToolTipText( ActionMessages.getString( "ToggleDetailPaneAction.1" ) ); //$NON-NLS-1$
|
|
||||||
setDescription( ActionMessages.getString( "ToggleDetailPaneAction.2" ) ); //$NON-NLS-1$
|
|
||||||
setImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_UNDER );
|
|
||||||
setDisabledImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_UNDER_DISABLED );
|
|
||||||
setHoverImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_UNDER );
|
|
||||||
}
|
|
||||||
else if ( orientation == ICDebugPreferenceConstants.MODULES_DETAIL_PANE_RIGHT ) {
|
|
||||||
setText( ActionMessages.getString( "ToggleDetailPaneAction.3" ) ); //$NON-NLS-1$
|
|
||||||
setToolTipText( ActionMessages.getString( "ToggleDetailPaneAction.4" ) ); //$NON-NLS-1$
|
|
||||||
setDescription( ActionMessages.getString( "ToggleDetailPaneAction.5" ) ); //$NON-NLS-1$
|
|
||||||
setImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_RIGHT );
|
|
||||||
setDisabledImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_RIGHT_DISABLED );
|
|
||||||
setHoverImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_RIGHT );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
setText( hiddenLabel );
|
|
||||||
setToolTipText( ActionMessages.getString( "ToggleDetailPaneAction.6" ) ); //$NON-NLS-1$
|
|
||||||
setDescription( ActionMessages.getString( "ToggleDetailPaneAction.7" ) ); //$NON-NLS-1$
|
|
||||||
setImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_HIDE );
|
|
||||||
setDisabledImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_HIDE_DISABLED );
|
|
||||||
setHoverImageDescriptor( CDebugImages.DESC_LCL_DETAIL_PANE_HIDE );
|
|
||||||
}
|
|
||||||
view.getSite().getWorkbenchWindow().getWorkbench().getHelpSystem().setHelp( this, ICDebugHelpContextIds.SHOW_DETAIL_PANE_ACTION );
|
|
||||||
}
|
|
||||||
|
|
||||||
private ModulesView getModulesView() {
|
|
||||||
return fModulesView;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setModulesView( ModulesView modulesView ) {
|
|
||||||
fModulesView = modulesView;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setOrientation( String orientation ) {
|
|
||||||
fOrientation = orientation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOrientation() {
|
|
||||||
return fOrientation;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.jface.action.IAction#run()
|
|
||||||
*/
|
|
||||||
public void run() {
|
|
||||||
getModulesView().setDetailPaneOrientation( getOrientation() );
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2007 QNX Software Systems and others.
|
* Copyright (c) 2004, 2008 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -9,15 +9,18 @@
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* IBM Corporation
|
* IBM Corporation
|
||||||
* ARM Limited - https://bugs.eclipse.org/bugs/show_bug.cgi?id=186981
|
* ARM Limited - https://bugs.eclipse.org/bugs/show_bug.cgi?id=186981
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.ui.elements.adapters;
|
package org.eclipse.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
|
||||||
import org.eclipse.cdt.debug.core.model.ICModule;
|
import org.eclipse.cdt.debug.core.model.ICModule;
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICStackFrame;
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICThread;
|
||||||
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
||||||
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleContentProvider;
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleContentProvider;
|
||||||
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleMementoProvider;
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleMementoProvider;
|
||||||
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleProxyFactory;
|
|
||||||
import org.eclipse.core.runtime.IAdapterFactory;
|
import org.eclipse.core.runtime.IAdapterFactory;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider;
|
||||||
|
@ -25,8 +28,14 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactor
|
||||||
|
|
||||||
public class CDebugElementAdapterFactory implements IAdapterFactory {
|
public class CDebugElementAdapterFactory implements IAdapterFactory {
|
||||||
|
|
||||||
|
private static IElementContentProvider fgDebugTargetContentProvider = new CDebugTargetContentProvider();
|
||||||
|
private static IElementContentProvider fgThreadContentProvider = new CThreadContentProvider();
|
||||||
|
private static IElementContentProvider fgStackFrameContentProvider = new CStackFrameContentProvider();
|
||||||
private static IElementContentProvider fgModuleContentProvider = new ModuleContentProvider();
|
private static IElementContentProvider fgModuleContentProvider = new ModuleContentProvider();
|
||||||
private static IModelProxyFactory fgModuleProxyFactory = new ModuleProxyFactory();
|
|
||||||
|
private static IModelProxyFactory fgDebugElementProxyFactory = new CDebugElementProxyFactory();
|
||||||
|
|
||||||
|
private static IElementMementoProvider fgStackFrameMementoProvider = new CStackFrameMementoProvider();
|
||||||
private static IElementMementoProvider fgModuleMementoProvider = new ModuleMementoProvider();
|
private static IElementMementoProvider fgModuleMementoProvider = new ModuleMementoProvider();
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -37,23 +46,45 @@ public class CDebugElementAdapterFactory implements IAdapterFactory {
|
||||||
return adaptableObject;
|
return adaptableObject;
|
||||||
}
|
}
|
||||||
if ( adapterType.equals( IElementContentProvider.class ) ) {
|
if ( adapterType.equals( IElementContentProvider.class ) ) {
|
||||||
if ( adaptableObject instanceof IModuleRetrieval ) {
|
if ( adaptableObject instanceof ICDebugTarget ) {
|
||||||
return fgModuleContentProvider;
|
return fgDebugTargetContentProvider;
|
||||||
}
|
}
|
||||||
if ( adaptableObject instanceof ICModule ) {
|
if ( adaptableObject instanceof ICThread ) {
|
||||||
return fgModuleContentProvider;
|
return fgThreadContentProvider;
|
||||||
}
|
}
|
||||||
if ( adaptableObject instanceof ICElement ) {
|
if ( adaptableObject instanceof ICStackFrame ) {
|
||||||
|
return fgStackFrameContentProvider;
|
||||||
|
}
|
||||||
|
if ( adaptableObject instanceof ICModule ||
|
||||||
|
adaptableObject instanceof ICElement )
|
||||||
|
{
|
||||||
return fgModuleContentProvider;
|
return fgModuleContentProvider;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( adapterType.equals( IModelProxyFactory.class ) ) {
|
if ( adapterType.equals( IModelProxyFactory.class ) ) {
|
||||||
if ( adaptableObject instanceof IModuleRetrieval ) {
|
if ( adaptableObject instanceof ICDebugTarget ) {
|
||||||
return fgModuleProxyFactory;
|
return fgDebugElementProxyFactory;
|
||||||
}
|
}
|
||||||
|
if ( adaptableObject instanceof ICThread ) {
|
||||||
|
return fgDebugElementProxyFactory;
|
||||||
|
}
|
||||||
|
if ( adaptableObject instanceof ICStackFrame ) {
|
||||||
|
return fgDebugElementProxyFactory;
|
||||||
|
}
|
||||||
|
if ( adaptableObject instanceof IModuleRetrieval ) {
|
||||||
|
return fgDebugElementProxyFactory;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if ( adapterType.equals( IElementMementoProvider.class ) ) {
|
if ( adapterType.equals( IElementMementoProvider.class ) ) {
|
||||||
if ( adaptableObject instanceof IModuleRetrieval ) {
|
if ( adaptableObject instanceof ICStackFrame ) {
|
||||||
|
return fgStackFrameMementoProvider;
|
||||||
|
}
|
||||||
|
if ( adaptableObject instanceof IModuleRetrieval ||
|
||||||
|
adaptableObject instanceof ICThread ||
|
||||||
|
adaptableObject instanceof ICModule ||
|
||||||
|
adaptableObject instanceof ICElement)
|
||||||
|
{
|
||||||
return fgModuleMementoProvider;
|
return fgModuleMementoProvider;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2007 QNX Software Systems and others.
|
* Copyright (c) 2004, 2008 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -8,24 +8,26 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
* IBM Corporation
|
* IBM Corporation
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.ui.views.modules;
|
package org.eclipse.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
|
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
|
||||||
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
||||||
import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModulesViewModelProxy;
|
||||||
import org.eclipse.core.runtime.IAdaptable;
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory;
|
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.update.DefaultModelProxyFactory;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
public class ModuleProxyFactory implements IModelProxyFactory {
|
public class CDebugElementProxyFactory extends DefaultModelProxyFactory {
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.debug.internal.ui.viewers.provisional.IModelProxyFactoryAdapter#createModelProxy(java.lang.Object, org.eclipse.debug.internal.ui.viewers.provisional.IPresentationContext)
|
* @see org.eclipse.debug.internal.ui.viewers.provisional.IModelProxyFactoryAdapter#createModelProxy(java.lang.Object, org.eclipse.debug.internal.ui.viewers.provisional.IPresentationContext)
|
||||||
*/
|
*/
|
||||||
public IModelProxy createModelProxy( Object element, IPresentationContext context ) {
|
public IModelProxy createModelProxy( Object element, IPresentationContext context ) {
|
||||||
if ( ICDebugUIConstants.ID_MODULES_VIEW.equals( context.getId() ) ) {
|
if ( IDebugUIConstants.ID_MODULE_VIEW.equals( context.getId() ) ) {
|
||||||
IModuleRetrieval mr = null;
|
IModuleRetrieval mr = null;
|
||||||
if ( element instanceof IAdaptable ) {
|
if ( element instanceof IAdaptable ) {
|
||||||
ICDebugTarget target = (ICDebugTarget)((IAdaptable)element).getAdapter( ICDebugTarget.class );
|
ICDebugTarget target = (ICDebugTarget)((IAdaptable)element).getAdapter( ICDebugTarget.class );
|
||||||
|
@ -36,6 +38,6 @@ public class ModuleProxyFactory implements IModelProxyFactory {
|
||||||
return new ModulesViewModelProxy( mr );
|
return new ModulesViewModelProxy( mr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return super.createModelProxy(element, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleContentProvider;
|
||||||
|
import org.eclipse.debug.internal.ui.model.elements.DebugTargetContentProvider;
|
||||||
|
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.IHasChildrenUpdate;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegating provider implementation. If the memento request is for the
|
||||||
|
* modules view, the provider impelementation delegates the request to the
|
||||||
|
* modules view-specific provider. Otherwise, it calls the default superclass
|
||||||
|
* implementation.
|
||||||
|
*/
|
||||||
|
public class CDebugTargetContentProvider extends DebugTargetContentProvider {
|
||||||
|
private ModuleContentProvider fModuleContentProvider = new ModuleContentProvider();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IChildrenCountUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IHasChildrenUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IChildrenUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleContentProvider;
|
||||||
|
import org.eclipse.debug.internal.ui.model.elements.StackFrameContentProvider;
|
||||||
|
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.IHasChildrenUpdate;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegating provider implementation. If the memento request is for the
|
||||||
|
* modules view, the provider impelementation delegates the request to the
|
||||||
|
* modules view-specific provider. Otherwise, it calls the default superclass
|
||||||
|
* implementation.
|
||||||
|
*/
|
||||||
|
public class CStackFrameContentProvider extends StackFrameContentProvider {
|
||||||
|
private ModuleContentProvider fModuleContentProvider = new ModuleContentProvider();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IChildrenCountUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IHasChildrenUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IChildrenUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleMementoProvider;
|
||||||
|
import org.eclipse.debug.internal.ui.model.elements.StackFrameMementoProvider;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegating provider implementation. If the memento request is for the
|
||||||
|
* modules view, the provider impelementation delegates the request to the
|
||||||
|
* modules view-specific provider. Otherwise, it calls the default superclass
|
||||||
|
* implementation.
|
||||||
|
*/
|
||||||
|
public class CStackFrameMementoProvider extends StackFrameMementoProvider {
|
||||||
|
private ModuleMementoProvider fModuleMementoProvider = new ModuleMementoProvider();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void encodeElements(IElementMementoRequest[] requests) {
|
||||||
|
if (requests[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleMementoProvider.encodeElements(requests);
|
||||||
|
} else {
|
||||||
|
super.encodeElements(requests);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void compareElements(IElementCompareRequest[] requests) {
|
||||||
|
if (requests[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleMementoProvider.compareElements(requests);
|
||||||
|
} else {
|
||||||
|
super.compareElements(requests);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.views.modules.ModuleContentProvider;
|
||||||
|
import org.eclipse.debug.internal.ui.model.elements.ThreadContentProvider;
|
||||||
|
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.IHasChildrenUpdate;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegating provider implementation. If the memento request is for the
|
||||||
|
* modules view, the provider impelementation delegates the request to the
|
||||||
|
* modules view-specific provider. Otherwise, it calls the default superclass
|
||||||
|
* implementation.
|
||||||
|
*/
|
||||||
|
public class CThreadContentProvider extends ThreadContentProvider {
|
||||||
|
private ModuleContentProvider fModuleContentProvider = new ModuleContentProvider();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IChildrenCountUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IHasChildrenUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(IChildrenUpdate[] updates) {
|
||||||
|
if (updates[0].getPresentationContext().getId().equals(IDebugUIConstants.ID_MODULE_VIEW)) {
|
||||||
|
fModuleContentProvider.update(updates);
|
||||||
|
} else {
|
||||||
|
super.update(updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* ARM - Initial API and implementation
|
* ARM - Initial API and implementation
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.ui.views.modules;
|
package org.eclipse.cdt.debug.internal.ui.views.modules;
|
||||||
|
|
||||||
|
@ -17,12 +18,12 @@ import org.eclipse.cdt.debug.core.model.ICModule;
|
||||||
import org.eclipse.cdt.debug.core.model.ICStackFrame;
|
import org.eclipse.cdt.debug.core.model.ICStackFrame;
|
||||||
import org.eclipse.cdt.debug.core.model.ICThread;
|
import org.eclipse.cdt.debug.core.model.ICThread;
|
||||||
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
import org.eclipse.cdt.debug.core.model.IModuleRetrieval;
|
||||||
import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IAdaptable;
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
import org.eclipse.debug.internal.ui.model.elements.ElementContentProvider;
|
import org.eclipse.debug.internal.ui.model.elements.ElementContentProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
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.IViewerUpdate;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
public class ModuleContentProvider extends ElementContentProvider {
|
public class ModuleContentProvider extends ElementContentProvider {
|
||||||
|
|
||||||
|
@ -44,7 +45,7 @@ public class ModuleContentProvider extends ElementContentProvider {
|
||||||
* @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#supportsContextId(java.lang.String)
|
* @see org.eclipse.debug.internal.ui.model.elements.ElementContentProvider#supportsContextId(java.lang.String)
|
||||||
*/
|
*/
|
||||||
protected boolean supportsContextId( String id ) {
|
protected boolean supportsContextId( String id ) {
|
||||||
return ICDebugUIConstants.ID_MODULES_VIEW.equals( id );
|
return IDebugUIConstants.ID_MODULE_VIEW.equals( id );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Object[] getAllChildren( Object parent, IPresentationContext context ) throws CoreException {
|
protected Object[] getAllChildren( Object parent, IPresentationContext context ) throws CoreException {
|
||||||
|
|
|
@ -0,0 +1,545 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006, 2007 IBM Corporation 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:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
* QNX Software Systems - Mikhail Khodjaiants - Registers View (Bug 53640)
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.debug.internal.ui.views.modules;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.IAddress;
|
||||||
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICModule;
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants;
|
||||||
|
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
|
||||||
|
import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
|
||||||
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
import org.eclipse.core.runtime.Status;
|
||||||
|
import org.eclipse.core.runtime.jobs.Job;
|
||||||
|
import org.eclipse.debug.core.model.IDebugElement;
|
||||||
|
import org.eclipse.debug.internal.ui.views.variables.details.AbstractDetailPane;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
import org.eclipse.debug.ui.IDebugView;
|
||||||
|
import org.eclipse.jface.action.IMenuListener;
|
||||||
|
import org.eclipse.jface.action.IMenuManager;
|
||||||
|
import org.eclipse.jface.action.MenuManager;
|
||||||
|
import org.eclipse.jface.action.Separator;
|
||||||
|
import org.eclipse.jface.resource.JFaceResources;
|
||||||
|
import org.eclipse.jface.text.Document;
|
||||||
|
import org.eclipse.jface.text.DocumentEvent;
|
||||||
|
import org.eclipse.jface.text.IDocument;
|
||||||
|
import org.eclipse.jface.text.IDocumentListener;
|
||||||
|
import org.eclipse.jface.text.IFindReplaceTarget;
|
||||||
|
import org.eclipse.jface.text.ITextOperationTarget;
|
||||||
|
import org.eclipse.jface.text.ITextViewer;
|
||||||
|
import org.eclipse.jface.text.source.SourceViewer;
|
||||||
|
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||||
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||||
|
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||||
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
|
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.custom.StyledText;
|
||||||
|
import org.eclipse.swt.events.FocusAdapter;
|
||||||
|
import org.eclipse.swt.events.FocusEvent;
|
||||||
|
import org.eclipse.swt.graphics.Point;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.swt.widgets.Control;
|
||||||
|
import org.eclipse.swt.widgets.Menu;
|
||||||
|
import org.eclipse.ui.IWorkbenchActionConstants;
|
||||||
|
import org.eclipse.ui.PlatformUI;
|
||||||
|
import org.eclipse.ui.actions.ActionFactory;
|
||||||
|
import org.eclipse.ui.console.actions.TextViewerAction;
|
||||||
|
import org.eclipse.ui.progress.WorkbenchJob;
|
||||||
|
import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ModuleDetailPane extends AbstractDetailPane implements IAdaptable, IPropertyChangeListener{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These are the IDs for the actions in the context menu
|
||||||
|
*/
|
||||||
|
protected static final String DETAIL_COPY_ACTION = ActionFactory.COPY.getId() + ".SourceDetailPane"; //$NON-NLS-1$
|
||||||
|
protected static final String DETAIL_SELECT_ALL_ACTION = IDebugView.SELECT_ALL_ACTION + ".SourceDetailPane"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ID, name and description of this pane are stored in constants so that the class
|
||||||
|
* does not have to be instantiated to access them.
|
||||||
|
*/
|
||||||
|
public static final String ID = "ModuleDetailPane";
|
||||||
|
public static final String NAME = "Module Viewer";
|
||||||
|
public static final String DESCRIPTION = "A detail pane that is based on a source viewer. Displays as text and has actions for assigning values, content assist and text modifications.";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Job to compute the details for a selection
|
||||||
|
*/
|
||||||
|
class DetailJob extends Job {
|
||||||
|
|
||||||
|
private Object fElement;
|
||||||
|
// whether a result was collected
|
||||||
|
private IProgressMonitor fMonitor;
|
||||||
|
|
||||||
|
public DetailJob(Object element) {
|
||||||
|
super("compute module details"); //$NON-NLS-1$
|
||||||
|
setSystem(true);
|
||||||
|
fElement = element;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
|
||||||
|
*/
|
||||||
|
protected IStatus run(IProgressMonitor monitor) {
|
||||||
|
fMonitor = monitor;
|
||||||
|
|
||||||
|
String detail = "";
|
||||||
|
if ( fElement instanceof ICModule ) {
|
||||||
|
detail = getModuleDetail( ((ICModule)fElement) );
|
||||||
|
}
|
||||||
|
if ( fElement instanceof ICElement ) {
|
||||||
|
detail = fElement.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
detailComputed(detail);
|
||||||
|
return Status.OK_STATUS;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void detailComputed(final String result) {
|
||||||
|
if (!fMonitor.isCanceled()) {
|
||||||
|
WorkbenchJob setDetail = new WorkbenchJob("set details") { //$NON-NLS-1$
|
||||||
|
public IStatus runInUIThread(IProgressMonitor monitor) {
|
||||||
|
if (!fMonitor.isCanceled()) {
|
||||||
|
getDetailDocument().set(result);
|
||||||
|
}
|
||||||
|
return Status.OK_STATUS;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
setDetail.setSystem(true);
|
||||||
|
setDetail.schedule();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getModuleDetail( ICModule module ) {
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
|
||||||
|
// Type
|
||||||
|
String type = null;
|
||||||
|
switch( module.getType() ) {
|
||||||
|
case ICModule.EXECUTABLE:
|
||||||
|
type = ModulesMessages.getString( "ModulesView.1" ); //$NON-NLS-1$
|
||||||
|
break;
|
||||||
|
case ICModule.SHARED_LIBRARY:
|
||||||
|
type = ModulesMessages.getString( "ModulesView.2" ); //$NON-NLS-1$
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( type != null ) {
|
||||||
|
sb.append( ModulesMessages.getString( "ModulesView.3" ) ); //$NON-NLS-1$
|
||||||
|
sb.append( type );
|
||||||
|
sb.append( '\n' );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Symbols flag
|
||||||
|
sb.append( ModulesMessages.getString( "ModulesView.4" ) ); //$NON-NLS-1$
|
||||||
|
sb.append( ( module.areSymbolsLoaded() ) ? ModulesMessages.getString( "ModulesView.5" ) : ModulesMessages.getString( "ModulesView.6" ) ); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
sb.append( '\n' );
|
||||||
|
|
||||||
|
// Symbols file
|
||||||
|
sb.append( ModulesMessages.getString( "ModulesView.7" ) ); //$NON-NLS-1$
|
||||||
|
sb.append( module.getSymbolsFileName().toOSString() );
|
||||||
|
sb.append( '\n' );
|
||||||
|
|
||||||
|
// CPU
|
||||||
|
String cpu = module.getCPU();
|
||||||
|
if ( cpu != null ) {
|
||||||
|
sb.append( ModulesMessages.getString( "ModulesView.8" ) ); //$NON-NLS-1$
|
||||||
|
sb.append( cpu );
|
||||||
|
sb.append( '\n' );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Base address
|
||||||
|
IAddress baseAddress = module.getBaseAddress();
|
||||||
|
if ( !baseAddress.isZero() ) {
|
||||||
|
sb.append( ModulesMessages.getString( "ModulesView.9" ) ); //$NON-NLS-1$
|
||||||
|
sb.append( baseAddress.toHexAddressString() );
|
||||||
|
sb.append( '\n' );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Size
|
||||||
|
long size = module.getSize();
|
||||||
|
if ( size > 0 ) {
|
||||||
|
sb.append( ModulesMessages.getString( "ModulesView.10" ) ); //$NON-NLS-1$
|
||||||
|
sb.append( size );
|
||||||
|
sb.append( '\n' );
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The source viewer in which the computed string detail
|
||||||
|
* of selected modules will be displayed.
|
||||||
|
*/
|
||||||
|
private SourceViewer fSourceViewer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variables used to create the detailed information for a selection
|
||||||
|
*/
|
||||||
|
private IDocument fDetailDocument;
|
||||||
|
private DetailJob fDetailJob = null;
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.IDetailPane#createControl(org.eclipse.swt.widgets.Composite)
|
||||||
|
*/
|
||||||
|
public Control createControl(Composite parent) {
|
||||||
|
|
||||||
|
createSourceViewer(parent);
|
||||||
|
|
||||||
|
if (isInView()){
|
||||||
|
createViewSpecificComponents();
|
||||||
|
createActions();
|
||||||
|
CDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
|
||||||
|
JFaceResources.getFontRegistry().addListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return fSourceViewer.getControl();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the source viewer in the given parent composite
|
||||||
|
*
|
||||||
|
* @param parent Parent composite to create the source viewer in
|
||||||
|
*/
|
||||||
|
private void createSourceViewer(Composite parent) {
|
||||||
|
|
||||||
|
// Create & configure a SourceViewer
|
||||||
|
fSourceViewer = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL);
|
||||||
|
fSourceViewer.setDocument(getDetailDocument());
|
||||||
|
fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IInternalCDebugUIConstants.DETAIL_PANE_FONT));
|
||||||
|
fSourceViewer.setEditable(false);
|
||||||
|
PlatformUI.getWorkbench().getHelpSystem().setHelp(fSourceViewer.getTextWidget(), ICDebugHelpContextIds.MODULES_DETAIL_PANE);
|
||||||
|
Control control = fSourceViewer.getControl();
|
||||||
|
GridData gd = new GridData(GridData.FILL_BOTH);
|
||||||
|
control.setLayoutData(gd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates listeners and other components that should only be added to the
|
||||||
|
* source viewer when this detail pane is inside a view.
|
||||||
|
*/
|
||||||
|
private void createViewSpecificComponents(){
|
||||||
|
|
||||||
|
// Add a document listener so actions get updated when the document changes
|
||||||
|
getDetailDocument().addDocumentListener(new IDocumentListener() {
|
||||||
|
public void documentAboutToBeChanged(DocumentEvent event) {}
|
||||||
|
public void documentChanged(DocumentEvent event) {
|
||||||
|
updateSelectionDependentActions();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add the selection listener so selection dependent actions get updated.
|
||||||
|
fSourceViewer.getSelectionProvider().addSelectionChangedListener(new ISelectionChangedListener() {
|
||||||
|
public void selectionChanged(SelectionChangedEvent event) {
|
||||||
|
updateSelectionDependentActions();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add a focus listener to update actions when details area gains focus
|
||||||
|
fSourceViewer.getControl().addFocusListener(new FocusAdapter() {
|
||||||
|
public void focusGained(FocusEvent e) {
|
||||||
|
|
||||||
|
getViewSite().setSelectionProvider(fSourceViewer.getSelectionProvider());
|
||||||
|
|
||||||
|
setGlobalAction(IDebugView.SELECT_ALL_ACTION, getAction(DETAIL_SELECT_ALL_ACTION));
|
||||||
|
setGlobalAction(IDebugView.COPY_ACTION, getAction(DETAIL_COPY_ACTION));
|
||||||
|
|
||||||
|
getViewSite().getActionBars().updateActionBars();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void focusLost(FocusEvent e) {
|
||||||
|
|
||||||
|
getViewSite().setSelectionProvider(null);
|
||||||
|
|
||||||
|
setGlobalAction(IDebugView.SELECT_ALL_ACTION, null);
|
||||||
|
setGlobalAction(IDebugView.CUT_ACTION, null);
|
||||||
|
setGlobalAction(IDebugView.COPY_ACTION, null);
|
||||||
|
setGlobalAction(IDebugView.PASTE_ACTION, null);
|
||||||
|
setGlobalAction(IDebugView.FIND_ACTION, null);
|
||||||
|
|
||||||
|
getViewSite().getActionBars().updateActionBars();
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add a context menu to the detail area
|
||||||
|
createDetailContextMenu(fSourceViewer.getTextWidget());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the actions to add to the context menu
|
||||||
|
*/
|
||||||
|
private void createActions() {
|
||||||
|
|
||||||
|
TextViewerAction textAction= new TextViewerAction(fSourceViewer, ITextOperationTarget.SELECT_ALL);
|
||||||
|
textAction.configureAction("Select &All", "", "");
|
||||||
|
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL);
|
||||||
|
PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, ICDebugHelpContextIds.MODULE_DETAIL_PANE_SELECT_ALL_ACTION);
|
||||||
|
setAction(DETAIL_SELECT_ALL_ACTION, textAction);
|
||||||
|
|
||||||
|
textAction= new TextViewerAction(fSourceViewer, ITextOperationTarget.COPY);
|
||||||
|
textAction.configureAction("&Copy", "", "");
|
||||||
|
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY);
|
||||||
|
PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, ICDebugHelpContextIds.MODULE_DETAIL_PANE_COPY_ACTION);
|
||||||
|
setAction(DETAIL_COPY_ACTION, textAction);
|
||||||
|
|
||||||
|
setSelectionDependantAction(DETAIL_COPY_ACTION);
|
||||||
|
|
||||||
|
updateSelectionDependentActions();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the context menu particular to the detail pane. Note that anyone
|
||||||
|
* wishing to contribute an action to this menu must use
|
||||||
|
* <code>ICDebugUIConstants.MODULES_VIEW_DETAIL_ID</code> as the
|
||||||
|
* <code>targetID</code> in the extension XML.
|
||||||
|
*/
|
||||||
|
protected void createDetailContextMenu(Control menuControl) {
|
||||||
|
MenuManager menuMgr= new MenuManager();
|
||||||
|
menuMgr.setRemoveAllWhenShown(true);
|
||||||
|
menuMgr.addMenuListener(new IMenuListener() {
|
||||||
|
public void menuAboutToShow(IMenuManager mgr) {
|
||||||
|
fillDetailContextMenu(mgr);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Menu menu= menuMgr.createContextMenu(menuControl);
|
||||||
|
menuControl.setMenu(menu);
|
||||||
|
|
||||||
|
getViewSite().registerContextMenu(ICDebugUIConstants.MODULES_VIEW_DETAIL_ID, menuMgr, fSourceViewer.getSelectionProvider());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds items to the detail pane's context menu including any extension defined
|
||||||
|
* actions.
|
||||||
|
*
|
||||||
|
* @param menu The menu to add the item to.
|
||||||
|
*/
|
||||||
|
protected void fillDetailContextMenu(IMenuManager menu) {
|
||||||
|
|
||||||
|
menu.add(new Separator(ICDebugUIConstants.MODULES_GROUP));
|
||||||
|
menu.add(new Separator());
|
||||||
|
menu.add(getAction(DETAIL_COPY_ACTION));
|
||||||
|
menu.add(getAction(DETAIL_SELECT_ALL_ACTION));
|
||||||
|
menu.add(new Separator());
|
||||||
|
menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.IDetailPane#display(org.eclipse.jface.viewers.IStructuredSelection)
|
||||||
|
*/
|
||||||
|
public void display(IStructuredSelection selection) {
|
||||||
|
|
||||||
|
if (selection == null){
|
||||||
|
clearSourceViewer();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isInView()){
|
||||||
|
fSourceViewer.setEditable(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selection.isEmpty()){
|
||||||
|
clearSourceViewer();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object firstElement = selection.getFirstElement();
|
||||||
|
if (firstElement != null && firstElement instanceof IDebugElement) {
|
||||||
|
String modelID = ((IDebugElement)firstElement).getModelIdentifier();
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized (this) {
|
||||||
|
if (fDetailJob != null) {
|
||||||
|
fDetailJob.cancel();
|
||||||
|
}
|
||||||
|
fDetailJob = new DetailJob(selection.getFirstElement());
|
||||||
|
fDetailJob.schedule();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.IDetailPane#setFocus()
|
||||||
|
*/
|
||||||
|
public boolean setFocus(){
|
||||||
|
if (fSourceViewer != null){
|
||||||
|
fSourceViewer.getTextWidget().setFocus();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.internal.ui.views.variables.details.AbstractDetailPane#dispose()
|
||||||
|
*/
|
||||||
|
public void dispose(){
|
||||||
|
super.dispose();
|
||||||
|
|
||||||
|
if (fDetailJob != null) fDetailJob.cancel();
|
||||||
|
if (fSourceViewer != null && fSourceViewer.getControl() != null) fSourceViewer.getControl().dispose();
|
||||||
|
|
||||||
|
if (isInView()){
|
||||||
|
CDebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this);
|
||||||
|
JFaceResources.getFontRegistry().removeListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.IDetailPane#getDescription()
|
||||||
|
*/
|
||||||
|
public String getDescription() {
|
||||||
|
return DESCRIPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.IDetailPane#getID()
|
||||||
|
*/
|
||||||
|
public String getID() {
|
||||||
|
return ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.IDetailPane#getName()
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
|
||||||
|
*/
|
||||||
|
public Object getAdapter(Class required) {
|
||||||
|
if (ITextViewer.class.equals(required)) {
|
||||||
|
return fSourceViewer;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lazily instantiate and return a Document for the detail pane text viewer.
|
||||||
|
*/
|
||||||
|
protected IDocument getDetailDocument() {
|
||||||
|
if (fDetailDocument == null) {
|
||||||
|
fDetailDocument = new Document();
|
||||||
|
}
|
||||||
|
return fDetailDocument;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears the source viewer, removes all text.
|
||||||
|
*/
|
||||||
|
protected void clearSourceViewer(){
|
||||||
|
if (fDetailJob != null) {
|
||||||
|
fDetailJob.cancel();
|
||||||
|
}
|
||||||
|
fDetailDocument.set("");
|
||||||
|
fSourceViewer.setEditable(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
|
||||||
|
*/
|
||||||
|
public void propertyChange(PropertyChangeEvent event) {
|
||||||
|
String propertyName= event.getProperty();
|
||||||
|
if (propertyName.equals(IInternalCDebugUIConstants.DETAIL_PANE_FONT)) {
|
||||||
|
fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IInternalCDebugUIConstants.DETAIL_PANE_FONT));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper class that wraps around an IFindReplaceTarget. Allows the detail pane to scroll
|
||||||
|
* to text selected by the find/replace action. The source viewer treats the text as a single
|
||||||
|
* line, even when the text is wrapped onto several lines so the viewer will not scroll properly
|
||||||
|
* on it's own. See bug 178106.
|
||||||
|
*/
|
||||||
|
class FindReplaceTargetWrapper implements IFindReplaceTarget{
|
||||||
|
|
||||||
|
private IFindReplaceTarget fTarget;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param target find/replace target this class will wrap around.
|
||||||
|
*/
|
||||||
|
public FindReplaceTargetWrapper(IFindReplaceTarget target){
|
||||||
|
fTarget = target;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.text.IFindReplaceTarget#canPerformFind()
|
||||||
|
*/
|
||||||
|
public boolean canPerformFind() {
|
||||||
|
return fTarget.canPerformFind();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.text.IFindReplaceTarget#findAndSelect(int, java.lang.String, boolean, boolean, boolean)
|
||||||
|
*/
|
||||||
|
public int findAndSelect(int widgetOffset, String findString, boolean searchForward, boolean caseSensitive, boolean wholeWord) {
|
||||||
|
int position = fTarget.findAndSelect(widgetOffset, findString, searchForward, caseSensitive, wholeWord);
|
||||||
|
// Explicitly tell the widget to show the selection because the viewer thinks the text is all on one line, even if wrapping is turned on.
|
||||||
|
if (fSourceViewer != null){
|
||||||
|
StyledText text = fSourceViewer.getTextWidget();
|
||||||
|
if(text != null && !text.isDisposed()) {
|
||||||
|
text.showSelection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.text.IFindReplaceTarget#getSelection()
|
||||||
|
*/
|
||||||
|
public Point getSelection() {
|
||||||
|
return fTarget.getSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.text.IFindReplaceTarget#getSelectionText()
|
||||||
|
*/
|
||||||
|
public String getSelectionText() {
|
||||||
|
return fTarget.getSelectionText();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.text.IFindReplaceTarget#isEditable()
|
||||||
|
*/
|
||||||
|
public boolean isEditable() {
|
||||||
|
return fTarget.isEditable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.text.IFindReplaceTarget#replaceSelection(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void replaceSelection(String text) {
|
||||||
|
fTarget.replaceSelection(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2006 IBM Corporation 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:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.debug.internal.ui.views.modules;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.eclipse.debug.ui.IDetailPane;
|
||||||
|
import org.eclipse.debug.ui.IDetailPaneFactory;
|
||||||
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modules view detail pane factory.
|
||||||
|
*/
|
||||||
|
public class ModuleDetailPaneFactory implements IDetailPaneFactory {
|
||||||
|
|
||||||
|
public static final String MODULE_DETAIL_PANE_ID = ModuleDetailPane.ID;
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.internal.ui.views.variables.IDetailsFactory#createDetailsArea(java.lang.String)
|
||||||
|
*/
|
||||||
|
public IDetailPane createDetailPane(String id) {
|
||||||
|
return new ModuleDetailPane();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.internal.ui.views.variables.IDetailsFactory#getDetailsTypes(org.eclipse.jface.viewers.IStructuredSelection)
|
||||||
|
*/
|
||||||
|
public Set getDetailPaneTypes(IStructuredSelection selection) {
|
||||||
|
Set possibleIDs = new HashSet(1);
|
||||||
|
possibleIDs.add(ModuleDetailPane.ID);
|
||||||
|
return possibleIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.ui.IDetailPaneFactory#getDefaultDetailPane(java.util.Set, org.eclipse.jface.viewers.IStructuredSelection)
|
||||||
|
*/
|
||||||
|
public String getDefaultDetailPane(IStructuredSelection selection) {
|
||||||
|
// Return null so that any contributed detail pane can override the default
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.internal.ui.views.variables.IDetailsFactory#getName(java.lang.String)
|
||||||
|
*/
|
||||||
|
public String getDetailPaneName(String id) {
|
||||||
|
if (id.equals(ModuleDetailPane.ID)){
|
||||||
|
return ModuleDetailPane.NAME;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.internal.ui.views.variables.IDetailsFactory#getDescription(java.lang.String)
|
||||||
|
*/
|
||||||
|
public String getDetailPaneDescription(String id) {
|
||||||
|
if (id.equals(ModuleDetailPane.ID)){
|
||||||
|
return ModuleDetailPane.DESCRIPTION;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -7,17 +7,18 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* ARM - Initial API and implementation
|
* ARM - Initial API and implementation
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.ui.views.modules;
|
package org.eclipse.cdt.debug.internal.ui.views.modules;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.debug.core.model.ICModule;
|
import org.eclipse.cdt.debug.core.model.ICModule;
|
||||||
import org.eclipse.cdt.debug.internal.ui.CDebugImages;
|
import org.eclipse.cdt.debug.internal.ui.CDebugImages;
|
||||||
import org.eclipse.cdt.debug.internal.ui.views.modules.ModulesView.ModulesViewPresentationContext;
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IAdaptable;
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
import org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider;
|
import org.eclipse.debug.internal.ui.model.elements.ElementLabelProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.internal.ui.views.DebugModelPresentationContext;
|
||||||
import org.eclipse.debug.ui.IDebugModelPresentation;
|
import org.eclipse.debug.ui.IDebugModelPresentation;
|
||||||
import org.eclipse.jface.resource.ImageDescriptor;
|
import org.eclipse.jface.resource.ImageDescriptor;
|
||||||
import org.eclipse.jface.viewers.TreePath;
|
import org.eclipse.jface.viewers.TreePath;
|
||||||
|
@ -34,8 +35,8 @@ public class ModuleLabelProvider extends ElementLabelProvider {
|
||||||
*/
|
*/
|
||||||
protected String getLabel( TreePath elementPath, IPresentationContext presentationContext, String columnId ) throws CoreException {
|
protected String getLabel( TreePath elementPath, IPresentationContext presentationContext, String columnId ) throws CoreException {
|
||||||
Object element = elementPath.getLastSegment();
|
Object element = elementPath.getLastSegment();
|
||||||
if ( element instanceof ICModule && presentationContext instanceof ModulesViewPresentationContext ) {
|
if ( element instanceof ICModule && presentationContext instanceof DebugModelPresentationContext ) {
|
||||||
IDebugModelPresentation presentation = ((ModulesViewPresentationContext)presentationContext).getModelPresentation();
|
IDebugModelPresentation presentation = ((DebugModelPresentationContext)presentationContext).getModelPresentation();
|
||||||
return presentation.getText( element );
|
return presentation.getText( element );
|
||||||
}
|
}
|
||||||
if ( element instanceof IAdaptable ) {
|
if ( element instanceof IAdaptable ) {
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
#
|
#
|
||||||
# Contributors:
|
# Contributors:
|
||||||
# QNX Software Systems - initial API and implementation
|
# QNX Software Systems - initial API and implementation
|
||||||
|
# Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
ModulesView.0=Modules View Only
|
|
||||||
ModulesView.1=executable
|
ModulesView.1=executable
|
||||||
ModulesView.10=Size:
|
ModulesView.10=Size:
|
||||||
ModulesView.11=\ (symbols loaded)
|
ModulesView.11=\ (symbols loaded)
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Wind River Systems - adapted to work with platform Modules view (bug 210558)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.ui;
|
package org.eclipse.cdt.debug.ui;
|
||||||
|
|
||||||
|
@ -31,16 +32,6 @@ public interface ICDebugUIConstants {
|
||||||
*/
|
*/
|
||||||
public static final String ID_DISASSEMBLY_VIEW = PREFIX + "DisassemblyView"; //$NON-NLS-1$
|
public static final String ID_DISASSEMBLY_VIEW = PREFIX + "DisassemblyView"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
|
||||||
* Modules view identifier (value <code>"org.eclipse.cdt.debug.ui.ModulesView"</code>).
|
|
||||||
*/
|
|
||||||
public static final String ID_MODULES_VIEW = PREFIX + "ModulesView"; //$NON-NLS-1$
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Id for the popup menu associated with the variables (tree viewer) part of the VariableView
|
|
||||||
*/
|
|
||||||
public static final String MODULES_VIEW_MODULES_ID = PREFIX + "ModulesView.modules"; //$NON-NLS-1$
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Id for the popup menu associated with the detail (text viewer) part of the Modules view
|
* Id for the popup menu associated with the detail (text viewer) part of the Modules view
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue