Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Schwarz2014-05-21 03:34:40 -0400
committerTobias Schwarz2014-05-21 03:34:40 -0400
commit777d72d2bd58de26d6013b041069c914ae39ef7f (patch)
tree2e9c11c3166165cada15283ce781935390eafd5b
parentabdee6bcb4d2de51a6234f6a2967732e39a5b714 (diff)
downloadorg.eclipse.tcf-777d72d2bd58de26d6013b041069c914ae39ef7f.tar.gz
org.eclipse.tcf-777d72d2bd58de26d6013b041069c914ae39ef7f.tar.xz
org.eclipse.tcf-777d72d2bd58de26d6013b041069c914ae39ef7f.zip
Target Explorer: rework attach (filter, decoration, ..)
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/interfaces/runtime/IRuntimeModelRefreshService.java8
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/runtime/services/RuntimeModelRefreshService.java19
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/steps/AttachContextsIterator.java2
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/internal/dialogs/AttachContextSelectionDialog.java159
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.java1
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.properties3
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml4
7 files changed, 112 insertions, 84 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/interfaces/runtime/IRuntimeModelRefreshService.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/interfaces/runtime/IRuntimeModelRefreshService.java
index ff12de9f7..bde940520 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/interfaces/runtime/IRuntimeModelRefreshService.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/interfaces/runtime/IRuntimeModelRefreshService.java
@@ -63,6 +63,14 @@ public interface IRuntimeModelRefreshService extends IModelRefreshService {
}
/**
+ * Refresh the content of the model from the top to the given maximum depth.
+ *
+ * @param callback The callback to invoke once the refresh operation finished, or <code>null</code>.
+ * @param depth Maximum depth or <code>-1</code> for full depth.
+ */
+ public void refresh(ICallback callback, int depth);
+
+ /**
* Auto refresh the content of the model from the top. It search for
* all nodes with query state "done" and refresh them one by one.
*
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/runtime/services/RuntimeModelRefreshService.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/runtime/services/RuntimeModelRefreshService.java
index dd2a40dea..3b3e2dd80 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/runtime/services/RuntimeModelRefreshService.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/runtime/services/RuntimeModelRefreshService.java
@@ -151,6 +151,14 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
*/
@Override
public void refresh(final ICallback callback) {
+ refresh(callback, 2);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModelRefreshService#refresh(org.eclipse.tcf.te.runtime.interfaces.callback.ICallback, int)
+ */
+ @Override
+ public void refresh(ICallback callback, int depth) {
Assert.isTrue(Protocol.isDispatchThread(), "Illegal Thread Access"); //$NON-NLS-1$
// Get the parent model
@@ -188,7 +196,7 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
Assert.isNotNull(containerRefreshable);
containerRefreshable.setQueryState(QueryType.CHILD_LIST, QueryState.IN_PROGRESS);
// Initiate the refresh of the level 1 children
- refreshChildrenLevel1(null, 2, container, new Callback() {
+ refreshChildrenLevel1(null, depth, container, new Callback() {
@Override
protected void internalDone(Object caller, IStatus status) {
// Mark the container refresh as done
@@ -628,7 +636,6 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
protected void refreshContextLevel1(final String contextId, final int maxDepth, final IProcessContextNode container, final ICallback callback) {
Assert.isTrue(Protocol.isDispatchThread(), "Illegal Thread Access"); //$NON-NLS-1$
Assert.isNotNull(contextId);
- Assert.isTrue(maxDepth > 0);
Assert.isNotNull(container);
Assert.isNotNull(callback);
@@ -650,7 +657,7 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
@Override
protected void internalDone(Object caller, IStatus status) {
// Refresh the next level if the depth is still larger than 0
- if (maxDepth - 1 > 0) {
+ if (maxDepth < 0 || maxDepth - 1 > 0) {
List<IProcessContextNode> children = container.getChildren(IProcessContextNode.class);
Assert.isNotNull(children);
refreshChildrenLevelN(channel, children.toArray(new IProcessContextNode[children.size()]), maxDepth - 1, callback);
@@ -691,7 +698,6 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
*/
/* default */ void refreshChildrenLevel1(final String parentContextId, final int maxDepth, final IProcessContextNode container, final ICallback callback) {
Assert.isTrue(Protocol.isDispatchThread(), "Illegal Thread Access"); //$NON-NLS-1$
- Assert.isTrue(maxDepth > 0);
Assert.isNotNull(container);
Assert.isNotNull(callback);
@@ -708,7 +714,7 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
@Override
protected void internalDone(Object caller, IStatus status) {
// Refresh the next level if the depth is still larger than 0
- if (maxDepth - 1 > 0) {
+ if (maxDepth < 0 || maxDepth - 1 > 0) {
List<IProcessContextNode> children = container.getChildren(IProcessContextNode.class);
Assert.isNotNull(children);
refreshChildrenLevelN(channel, children.toArray(new IProcessContextNode[children.size()]), maxDepth - 1, callback);
@@ -742,7 +748,6 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
Assert.isTrue(Protocol.isDispatchThread(), "Illegal Thread Access"); //$NON-NLS-1$
Assert.isNotNull(channel);
Assert.isNotNull(parents);
- Assert.isTrue(maxDepth > 0);
Assert.isNotNull(callback);
// The channel must be opened, otherwise the query cannot run
@@ -763,7 +768,7 @@ public class RuntimeModelRefreshService extends AbstractModelService<IRuntimeMod
@Override
protected void internalDone(Object caller, IStatus status) {
// Refresh the next level if the depth is still larger than 0
- if (maxDepth - 1 > 0) {
+ if (maxDepth < 0 || maxDepth - 1 > 0) {
// The callback collector to be fired if the children of all children of all parent contexts got fully refreshed
final AsyncCallbackCollector collector2 = new AsyncCallbackCollector(callback, new CallbackInvocationDelegate());
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/steps/AttachContextsIterator.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/steps/AttachContextsIterator.java
index 24749a867..535a8356d 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/steps/AttachContextsIterator.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/steps/AttachContextsIterator.java
@@ -62,7 +62,7 @@ public class AttachContextsIterator extends AbstractPeerNodeStepGroupIterator {
@Override
public void run() {
IRuntimeModelRefreshService service = ModelManager.getRuntimeModel(peerNode).getService(IRuntimeModelRefreshService.class);
- service.refresh(cb);
+ service.refresh(cb, -1);
}
});
ExecutorsUtil.waitAndExecute(0, cb.getDoneConditionTester(monitor));
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/internal/dialogs/AttachContextSelectionDialog.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/internal/dialogs/AttachContextSelectionDialog.java
index 45fa5e627..b1a2ffed3 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/internal/dialogs/AttachContextSelectionDialog.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/internal/dialogs/AttachContextSelectionDialog.java
@@ -14,6 +14,7 @@ import java.util.EventObject;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicLong;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IStatus;
@@ -31,11 +32,8 @@ import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -43,8 +41,6 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
import org.eclipse.tcf.protocol.Protocol;
import org.eclipse.tcf.te.runtime.callback.Callback;
import org.eclipse.tcf.te.runtime.events.ChangeEvent;
@@ -54,6 +50,8 @@ import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
import org.eclipse.tcf.te.runtime.model.interfaces.IContainerModelNode;
import org.eclipse.tcf.te.runtime.model.interfaces.IModelNode;
import org.eclipse.tcf.te.runtime.properties.PropertiesContainer;
+import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.runtime.services.interfaces.IUIService;
import org.eclipse.tcf.te.tcf.core.interfaces.IContextDataProperties;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
import org.eclipse.tcf.te.tcf.locator.utils.PeerDataHelper;
@@ -66,26 +64,28 @@ import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeMo
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModelRefreshService;
import org.eclipse.tcf.te.tcf.processes.core.util.ProcessDataHelper;
import org.eclipse.tcf.te.tcf.processes.ui.editor.tree.ContentProvider;
+import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate;
import org.eclipse.tcf.te.tcf.processes.ui.nls.Messages;
import org.eclipse.tcf.te.ui.interfaces.IDataExchangeDialog;
import org.eclipse.tcf.te.ui.jface.dialogs.CustomTitleAreaDialog;
import org.eclipse.tcf.te.ui.trees.TreeViewerSorterCaseInsensitive;
import org.eclipse.tcf.te.ui.views.navigator.DelegatingLabelProvider;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.dialogs.PatternFilter;
/**
* Dialog for selecting contexts to attach to.
*/
public class AttachContextSelectionDialog extends CustomTitleAreaDialog implements IEventListener, IDataExchangeDialog {
protected TreeViewer viewer;
+ protected FilteredTree filteredTree;
private boolean initDone = false;
IPeerNode peerNode;
IPropertiesContainer data = null;
- Text filter;
-
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#isResizable()
*/
@@ -131,28 +131,70 @@ public class AttachContextSelectionDialog extends CustomTitleAreaDialog implemen
Label filterLabel = new Label(panel, SWT.NONE);
filterLabel.setText(Messages.AttachContextSelectionDialog_filter_label);
- filter = new Text(panel, SWT.BORDER);
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
- filter.setLayoutData(gd);
- filter.addModifyListener(new ModifyListener() {
+ PatternFilter filter = new PatternFilter() {
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.dialogs.PatternFilter#isElementSelectable(java.lang.Object)
+ */
@Override
- public void modifyText(ModifyEvent e) {
- viewer.refresh();
- viewer.expandAll();
+ public boolean isElementSelectable(final Object element) {
+ final AtomicBoolean canAttach = new AtomicBoolean();
+ if (element instanceof IProcessContextNode) {
+ Protocol.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ canAttach.set(canAttach(element));
+ }
+ });
+ }
+ return element instanceof IProcessContextNode;
}
- });
- Label contextLabel = new Label(panel, SWT.NONE);
- contextLabel.setText(Messages.AttachContextSelectionDialog_contexts_label);
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.dialogs.PatternFilter#isLeafMatch(org.eclipse.jface.viewers.Viewer, java.lang.Object)
+ */
+ @Override
+ protected boolean isLeafMatch(Viewer viewer, final Object element) {
+ if (element instanceof IProcessContextNode) {
+ final AtomicBoolean canAttach = new AtomicBoolean();
+ Protocol.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ canAttach.set(canAttach(element));
+ }
+ });
+ return canAttach.get() && super.isLeafMatch(viewer, element);
+ }
+ return true;
+ }
+ };
+ filter.setIncludeLeadingWildcard(true);
+ filter.setPattern("org.eclipse.ui.keys.optimization.false"); //$NON-NLS-1$
- viewer = new TreeViewer(panel, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
- Tree fModuleTree = viewer.getTree();
- gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
+ filteredTree = new FilteredTree(panel, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, filter, true) {
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.dialogs.FilteredTree#getFilterString()
+ */
+ @Override
+ protected String getFilterString() {
+ String filter = super.getFilterString();
+ if (filter != null) {
+ filter = filter.trim();
+ if (filter.length() == 0) {
+ return "*"; //$NON-NLS-1$
+ }
+ return filter;
+ }
+ return null;
+ }
+ };
+ viewer = filteredTree.getViewer();
+ GridData gd = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL);
gd.minimumHeight = 250;
gd.minimumWidth = 300;
gd.widthHint = 300;
gd.heightHint = 300;
- fModuleTree.setLayoutData(gd);
+ filteredTree.setLayoutData(gd);
+ filteredTree.setQuickSelectionMode(true);
viewer.setContentProvider(new ContentProvider());
DelegatingLabelProvider labelProvider = new DelegatingLabelProvider() {
@@ -161,15 +203,30 @@ public class AttachContextSelectionDialog extends CustomTitleAreaDialog implemen
*/
@Override
public String decorateText(String text, final Object element) {
- final AtomicBoolean isAttached = new AtomicBoolean();
- Protocol.invokeAndWait(new Runnable() {
- @Override
- public void run() {
- isAttached.set(isAttached(element));
+ if (element instanceof IProcessContextNode) {
+
+ final AtomicBoolean isAttached = new AtomicBoolean();
+ final AtomicLong pid = new AtomicLong();
+ Protocol.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ isAttached.set(isAttached(element));
+ pid.set(((IProcessContextNode)element).getSysMonitorContext().getPID());
+ }
+ });
+
+ String id = pid.get() >= 0 ? Long.toString(pid.get()) : ""; //$NON-NLS-1$
+ if (id.startsWith("P")) id = id.substring(1); //$NON-NLS-1$
+ IPeerNode peerNode = (IPeerNode)((IProcessContextNode)element).getAdapter(IPeerNode.class);
+ IUIService service = peerNode != null ? ServiceManager.getInstance().getService(peerNode, IUIService.class) : null;
+ IProcessMonitorUIDelegate delegate = service != null ? service.getDelegate(peerNode, IProcessMonitorUIDelegate.class) : null;
+ String newId = delegate != null ? delegate.getText(element, "PID", id) : null; //$NON-NLS-1$
+ if (newId != null) {
+ text = NLS.bind(Messages.AttachContextSelectionDialog_pid_decoration, text, newId);
+ }
+ if (isAttached.get()) {
+ text = NLS.bind(Messages.AttachContextSelectionDialog_allReadyAttached_decoration, text);
}
- });
- if (isAttached.get()) {
- return NLS.bind(Messages.AttachContextSelectionDialog_allReadyAttached_decoration, text);
}
return text;
}
@@ -220,50 +277,6 @@ public class AttachContextSelectionDialog extends CustomTitleAreaDialog implemen
});
viewer.setSorter(new TreeViewerSorterCaseInsensitive());
- viewer.addFilter(new ViewerFilter() {
- @Override
- public boolean select(Viewer viewer, Object parentElement, final Object element) {
- if (element instanceof IProcessContextNode) {
- final IProcessContextNode node = (IProcessContextNode)element;
- String filterStr = filter.getText().trim();
- filterStr = filterStr.replaceAll("\\*", ".*"); //$NON-NLS-1$ //$NON-NLS-2$
- filterStr = filterStr.replaceAll("\\?", "."); //$NON-NLS-1$ //$NON-NLS-2$
- filterStr += ".*"; //$NON-NLS-1$
- if (!matchesFilter(filterStr, node)) {
- return false;
- }
- }
- return true;
- }
-
- private boolean matchesFilter(final String filterStr, final IProcessContextNode node) {
- boolean childMatches = false;
- if (node.hasChildren()) {
- for (IModelNode child : node.getChildren()) {
- if (child instanceof IProcessContextNode) {
- if (matchesFilter(filterStr, (IProcessContextNode)child)) {
- childMatches = true;
- break;
- }
- }
- else {
- childMatches = true;
- break;
- }
- }
- }
- final AtomicBoolean filterMatches = new AtomicBoolean();
- final AtomicBoolean canAttach = new AtomicBoolean();
- Protocol.invokeAndWait(new Runnable() {
- @Override
- public void run() {
- filterMatches.set(node.getName().toLowerCase().matches(filterStr.toLowerCase()));
- canAttach.set(canAttach(node));
- }
- });
- return (filterMatches.get() || childMatches) && canAttach.get();
- }
- });
EventManager.getInstance().addEventListener(this, ChangeEvent.class);
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.java
index f56129d0f..4fc818e2c 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.java
@@ -202,6 +202,7 @@ public class Messages extends NLS {
public static String AttachContextSelectionDialog_message;
public static String AttachContextSelectionDialog_filter_label;
public static String AttachContextSelectionDialog_contexts_label;
+ public static String AttachContextSelectionDialog_pid_decoration;
public static String AttachContextSelectionDialog_allReadyAttached_decoration;
public static String DefaultContextToolbarDelegate_attachContext_label;
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.properties
index 800f972f2..be29df90a 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.properties
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.properties
@@ -155,7 +155,8 @@ AttachContextSelectionDialog_title=Select contexts to attach
AttachContextSelectionDialog_message=The list shows all attachable contexts, grayed out ones are already attached.
AttachContextSelectionDialog_filter_label=Enter context name or pattern (*, ?):
AttachContextSelectionDialog_contexts_label=Contexts to Attach:
-AttachContextSelectionDialog_allReadyAttached_decoration={0} (already attached)
+AttachContextSelectionDialog_pid_decoration={0} ({1})
+AttachContextSelectionDialog_allReadyAttached_decoration={0} - already attached
DefaultContextToolbarDelegate_attachContext_label=Attach ''{0}''
DefaultContextToolbarDelegate_attachContext_description=Attach\n{0}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml
index 25dbd6bd5..7b0c45aeb 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml
@@ -628,7 +628,7 @@
id="org.eclipse.tcf.te.tcf.ui.ActionHistoryToolbarContribution"/>
<command commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.history"/>
</menuContribution>
- <!--menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution?after=group.launch.rundebug">
+ <menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution?after=group.launch.rundebug">
<command commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.debug">
<visibleWhen checkEnabled="false">
<with variable="defaultContextSelection">
@@ -636,7 +636,7 @@
</with>
</visibleWhen>
</command>
- </menuContribution-->
+ </menuContribution>
<!-- System menu contribution -->
<menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.main.menu.system?after=group.connect">

Back to the top