Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Stieber2013-06-03 11:56:20 +0000
committerUwe Stieber2013-06-03 11:56:20 +0000
commit5262504e1f1c13083ff8bab89e8f7f7fa112be4d (patch)
treee194a2b567075b9e684c16c39dcbc059db1ff661 /target_explorer
parent470ac849399b5a1d41a198a2ad4b2bdeb292e199 (diff)
downloadorg.eclipse.tcf-5262504e1f1c13083ff8bab89e8f7f7fa112be4d.tar.gz
org.eclipse.tcf-5262504e1f1c13083ff8bab89e8f7f7fa112be4d.tar.xz
org.eclipse.tcf-5262504e1f1c13083ff8bab89e8f7f7fa112be4d.zip
Target Explorer: More process monitor customizations
Diffstat (limited to 'target_explorer')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/ProcessMonitorEditorPage.java41
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java15
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java13
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java4
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/TerminateHandler.java4
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/interfaces/IProcessMonitorUIDelegate.java (renamed from target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/interfaces/IProcessMonitorMessageProviderDelegate.java)16
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/nls/Messages.java6
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/search/ProcessSearchable.java4
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/AbstractTreeControl.java39
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/TreeViewerHeaderMenu.java13
10 files changed, 133 insertions, 22 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/ProcessMonitorEditorPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/ProcessMonitorEditorPage.java
index d004a8e57..e46ea0d46 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/ProcessMonitorEditorPage.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/ProcessMonitorEditorPage.java
@@ -16,13 +16,17 @@ import org.eclipse.jface.viewers.ITreeViewerListener;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.tcf.te.runtime.events.ChangeEvent;
import org.eclipse.tcf.te.runtime.events.EventManager;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
import org.eclipse.tcf.te.tcf.processes.core.model.ModelManager;
import org.eclipse.tcf.te.tcf.processes.ui.navigator.events.TreeViewerListener;
import org.eclipse.tcf.te.tcf.processes.ui.nls.Messages;
+import org.eclipse.tcf.te.ui.trees.AbstractTreeControl;
import org.eclipse.tcf.te.ui.trees.TreeControl;
+import org.eclipse.tcf.te.ui.trees.TreeViewerHeaderMenu;
import org.eclipse.tcf.te.ui.views.editor.pages.TreeViewerExplorerEditorPage;
import org.eclipse.ui.IEditorInput;
@@ -104,7 +108,42 @@ public class ProcessMonitorEditorPage extends TreeViewerExplorerEditorPage {
*/
@Override
protected TreeControl doCreateTreeControl() {
- TreeControl treeControl = super.doCreateTreeControl();
+ TreeControl treeControl = new TreeControl(getViewerId(), this) {
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.trees.AbstractTreeControl#configureTreeColumn(org.eclipse.swt.widgets.TreeColumn)
+ */
+ @Override
+ protected void configureTreeColumn(TreeColumn treeColumn) {
+ super.configureTreeColumn(treeColumn);
+
+ if (treeColumn.getText() != null) {
+ String text = Messages.getStringDelegated(ProcessMonitorEditorPage.this.getEditorInputNode(), "ProcessMonitor_treeColum_" + treeColumn.getText().replace(' ', '_')); //$NON-NLS-1$
+ if (text != null) treeColumn.setText(text);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.trees.AbstractTreeControl#createHeaderMenu(org.eclipse.tcf.te.ui.trees.AbstractTreeControl)
+ */
+ @Override
+ protected TreeViewerHeaderMenu createHeaderMenu(AbstractTreeControl control) {
+ Assert.isNotNull(control);
+ return new TreeViewerHeaderMenu(control) {
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.trees.TreeViewerHeaderMenu#configureMenuItem(org.eclipse.swt.widgets.MenuItem)
+ */
+ @Override
+ protected void configureMenuItem(MenuItem item) {
+ super.configureMenuItem(item);
+
+ if (item.getText() != null) {
+ String text = Messages.getStringDelegated(ProcessMonitorEditorPage.this.getEditorInputNode(), "ProcessMonitor_menuItem_" + item.getText().replace(' ', '_')); //$NON-NLS-1$
+ if (text != null) item.setText(text);
+ }
+ }
+ };
+ }
+ };
Assert.isNotNull(treeControl);
if (listener == null) {
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java
index 73d8b40fd..3aebb8070 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PIDLabelProvider.java
@@ -14,9 +14,13 @@ import java.util.concurrent.atomic.AtomicLong;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.runtime.services.interfaces.IUIService;
+import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IPendingOperationNode;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModel;
+import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate;
/**
* The label provider for the tree column "PID".
@@ -24,7 +28,7 @@ import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeMo
public class PIDLabelProvider extends LabelProvider {
/* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
*/
@Override
public String getText(Object element) {
@@ -48,7 +52,14 @@ public class PIDLabelProvider extends LabelProvider {
Protocol.invokeAndWait(runnable);
String id = pid.get() >= 0 ? Long.toString(pid.get()) : ""; //$NON-NLS-1$
- return id.startsWith("P") ? id.substring(1) : id; //$NON-NLS-1$
+ if (id.startsWith("P")) id = id.substring(1); //$NON-NLS-1$
+
+ IPeerModel peerModel = (IPeerModel)node.getAdapter(IPeerModel.class);
+ IUIService service = peerModel != null ? ServiceManager.getInstance().getService(peerModel, IUIService.class) : null;
+ IProcessMonitorUIDelegate delegate = service != null ? service.getDelegate(peerModel, IProcessMonitorUIDelegate.class) : null;
+
+ String newId = delegate != null ? delegate.getText(element, "PID", id) : null; //$NON-NLS-1$
+ return newId != null ? newId : id;
}
return super.getText(element);
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java
index 000415356..f4a2dc2cf 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/editor/tree/columns/PPIDLabelProvider.java
@@ -14,9 +14,13 @@ import java.util.concurrent.atomic.AtomicLong;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.runtime.services.interfaces.IUIService;
+import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IPendingOperationNode;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModel;
+import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate;
/**
* The label provider for the tree column "PPID".
@@ -47,7 +51,14 @@ public class PPIDLabelProvider extends LabelProvider {
Assert.isTrue(!Protocol.isDispatchThread());
Protocol.invokeAndWait(runnable);
- return ppid.get() >= 0 ? Long.toString(ppid.get()) : ""; //$NON-NLS-1$
+ String id = ppid.get() >= 0 ? Long.toString(ppid.get()) : ""; //$NON-NLS-1$
+
+ IPeerModel peerModel = (IPeerModel)node.getAdapter(IPeerModel.class);
+ IUIService service = peerModel != null ? ServiceManager.getInstance().getService(peerModel, IUIService.class) : null;
+ IProcessMonitorUIDelegate delegate = service != null ? service.getDelegate(peerModel, IProcessMonitorUIDelegate.class) : null;
+
+ String newId = delegate != null ? delegate.getText(element, "PPID", id) : null; //$NON-NLS-1$
+ return newId != null ? newId : id;
}
return super.getText(element);
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java
index cda8238ad..25f7c37ee 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/RefreshProcessListHandler.java
@@ -22,7 +22,7 @@ import org.eclipse.tcf.te.tcf.core.model.interfaces.IModel;
import org.eclipse.tcf.te.tcf.core.model.interfaces.services.IModelRefreshService;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
import org.eclipse.tcf.te.tcf.processes.core.model.ModelManager;
-import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorMessageProviderDelegate;
+import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPart;
@@ -70,7 +70,7 @@ public class RefreshProcessListHandler extends AbstractHandler implements IEleme
IPeerModel node = editorInput != null ? (IPeerModel) editorInput.getAdapter(IPeerModel.class) : null;
IUIService service = ServiceManager.getInstance().getService(node, IUIService.class);
- IProcessMonitorMessageProviderDelegate delegate = service != null ? service.getDelegate(node, IProcessMonitorMessageProviderDelegate.class) : null;
+ IProcessMonitorUIDelegate delegate = service != null ? service.getDelegate(node, IProcessMonitorUIDelegate.class) : null;
if (delegate != null) {
String text = delegate.getMessage("RefreshProcessListHandler_updateElement_text"); //$NON-NLS-1$
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/TerminateHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/TerminateHandler.java
index b2be1aac7..e111f41e5 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/TerminateHandler.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/handler/TerminateHandler.java
@@ -31,7 +31,7 @@ import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode;
import org.eclipse.tcf.te.tcf.processes.core.model.steps.TerminateStep;
import org.eclipse.tcf.te.tcf.processes.ui.help.IContextHelpIds;
-import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorMessageProviderDelegate;
+import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate;
import org.eclipse.tcf.te.tcf.processes.ui.nls.Messages;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
@@ -100,7 +100,7 @@ public class TerminateHandler extends AbstractHandler implements IElementUpdater
IPeerModel node = editorInput != null ? (IPeerModel) editorInput.getAdapter(IPeerModel.class) : null;
IUIService service = ServiceManager.getInstance().getService(node, IUIService.class);
- IProcessMonitorMessageProviderDelegate delegate = service != null ? service.getDelegate(node, IProcessMonitorMessageProviderDelegate.class) : null;
+ IProcessMonitorUIDelegate delegate = service != null ? service.getDelegate(node, IProcessMonitorUIDelegate.class) : null;
if (delegate != null) {
String text = delegate.getMessage("TerminateHandler_updateElement_text"); //$NON-NLS-1$
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/interfaces/IProcessMonitorMessageProviderDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/interfaces/IProcessMonitorUIDelegate.java
index 803e41644..fe0c3dee4 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/interfaces/IProcessMonitorMessageProviderDelegate.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/interfaces/IProcessMonitorUIDelegate.java
@@ -14,9 +14,9 @@ import org.eclipse.tcf.te.ui.interfaces.ISearchable;
/**
- * Process monitor message provider delegate.
+ * Process monitor UI delegate.
*/
-public interface IProcessMonitorMessageProviderDelegate {
+public interface IProcessMonitorUIDelegate {
/**
* Returns the message for the given key.
@@ -27,6 +27,18 @@ public interface IProcessMonitorMessageProviderDelegate {
public String getMessage(String key);
/**
+ * Returns the process monitor table column text for the given column
+ * based on the given original text.
+ *
+ * @param context The context. Must not be <code>null</code>.
+ * @param columnId The column id. Must not be <code>null</code>.
+ * @param text The original text to show in the column fetched from the label provider, or <code>null</code>.
+ *
+ * @return The new text to show in the column or <code>null</code>.
+ */
+ public String getText(Object context, String columnId, String text);
+
+ /**
* Returns the list of searchables to use to find processes in the
* process monitor.
*
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 0bffb5577..c94aae289 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
@@ -12,7 +12,7 @@ package org.eclipse.tcf.te.tcf.processes.ui.nls;
import org.eclipse.osgi.util.NLS;
import org.eclipse.tcf.te.runtime.services.ServiceManager;
import org.eclipse.tcf.te.runtime.services.interfaces.IUIService;
-import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorMessageProviderDelegate;
+import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate;
/**
* Target Explorer TCF processes extensions UI plug-in externalized strings management.
@@ -34,7 +34,7 @@ public class Messages extends NLS {
/**
* Returns the corresponding string for the given externalized strings key via
- * the {@link IProcessMonitorMessageProviderDelegate}.
+ * the {@link IProcessMonitorUIDelegate}.
*
* @param context The context or <code>null</code>.
* @param key The externalized strings key or <code>null</code>.
@@ -44,7 +44,7 @@ public class Messages extends NLS {
public static String getStringDelegated(Object context, String key) {
if (key != null) {
IUIService service = ServiceManager.getInstance().getService(context, IUIService.class);
- IProcessMonitorMessageProviderDelegate delegate = service != null ? service.getDelegate(context, IProcessMonitorMessageProviderDelegate.class) : null;
+ IProcessMonitorUIDelegate delegate = service != null ? service.getDelegate(context, IProcessMonitorUIDelegate.class) : null;
return delegate != null ? delegate.getMessage(key) : null;
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/search/ProcessSearchable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/search/ProcessSearchable.java
index 35f6e185f..f62f79a1c 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/search/ProcessSearchable.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/src/org/eclipse/tcf/te/tcf/processes/ui/search/ProcessSearchable.java
@@ -20,7 +20,7 @@ import org.eclipse.tcf.te.runtime.services.ServiceManager;
import org.eclipse.tcf.te.runtime.services.interfaces.IUIService;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
import org.eclipse.tcf.te.tcf.processes.core.model.interfaces.runtime.IRuntimeModel;
-import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorMessageProviderDelegate;
+import org.eclipse.tcf.te.tcf.processes.ui.interfaces.IProcessMonitorUIDelegate;
import org.eclipse.tcf.te.tcf.processes.ui.navigator.runtime.LabelProviderDelegate;
import org.eclipse.tcf.te.tcf.processes.ui.nls.Messages;
import org.eclipse.tcf.te.ui.interfaces.ISearchable;
@@ -43,7 +43,7 @@ public class ProcessSearchable extends CompositeSearchable {
super();
IUIService service = ServiceManager.getInstance().getService(node, IUIService.class);
- IProcessMonitorMessageProviderDelegate delegate = service != null ? service.getDelegate(node, IProcessMonitorMessageProviderDelegate.class) : null;
+ IProcessMonitorUIDelegate delegate = service != null ? service.getDelegate(node, IProcessMonitorUIDelegate.class) : null;
ISearchable[] searchables = delegate != null ? delegate.getSearchables(node) : null;
if (searchables == null) {
searchables = new ISearchable[] { new GeneralSearchable(), new ProcessUserSearchable(), new ProcessStateSearchable() };
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/AbstractTreeControl.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/AbstractTreeControl.java
index c93fb9f76..607332e43 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/AbstractTreeControl.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/AbstractTreeControl.java
@@ -201,8 +201,8 @@ public abstract class AbstractTreeControl extends WorkbenchPartControl implement
* @param oldInput the old input.
* @param newInput The new input.
*/
- void onInputChanged(Object oldInput, Object newInput) {
- if(newInput != null) {
+ protected void onInputChanged(Object oldInput, Object newInput) {
+ if (newInput != null) {
columns = doCreateViewerColumns(newInput);
filterDescriptors = doCreateFilterDescriptors(newInput);
if (isStatePersistent()) {
@@ -211,12 +211,23 @@ public abstract class AbstractTreeControl extends WorkbenchPartControl implement
doCreateTreeColumns(viewer);
viewer.getTree().setHeaderVisible(true);
updateFilters();
- new TreeViewerHeaderMenu(this).create();
+ createHeaderMenu(this).create();
if (configFilterAction != null) configFilterAction.updateEnablement();
}
}
/**
+ * Create the tree viewer header menu.
+ *
+ * @param control The parent tree control. Must not be <code>null</code>.
+ * @return The tree viewer header menu.
+ */
+ protected TreeViewerHeaderMenu createHeaderMenu(AbstractTreeControl control) {
+ Assert.isNotNull(control);
+ return new TreeViewerHeaderMenu(control);
+ }
+
+ /**
* Update the viewer state using the states from the viewerState which
* is retrieved or created based on the input.
*
@@ -379,10 +390,9 @@ public abstract class AbstractTreeControl extends WorkbenchPartControl implement
* @param append If the new column should be appended.
* @return The tree column created.
*/
- TreeColumn doCreateTreeColumn(final ColumnDescriptor column, boolean append) {
+ protected TreeColumn doCreateTreeColumn(final ColumnDescriptor column, boolean append) {
Tree tree = viewer.getTree();
- final TreeColumn treeColumn = append ? new TreeColumn(tree, column.getStyle()) :
- new TreeColumn(tree, column.getStyle(), getColumnIndex(column));
+ final TreeColumn treeColumn = append ? new TreeColumn(tree, column.getStyle()) : new TreeColumn(tree, column.getStyle(), getColumnIndex(column));
treeColumn.setData(column);
treeColumn.setText(column.getName());
treeColumn.setToolTipText(column.getDescription());
@@ -405,13 +415,28 @@ public abstract class AbstractTreeControl extends WorkbenchPartControl implement
column.setWidth(treeColumn.getWidth());
}});
column.setTreeColumn(treeColumn);
+
+ // Custom tree column configuration
+ configureTreeColumn(treeColumn);
+
return treeColumn;
}
/**
+ * Customize the given tree column.
+ * <p>
+ * Called from {@link #doCreateTreeColumn(ColumnDescriptor, boolean)}.
+ *
+ * @param treeColumn The tree column. Must not be <code>null</code>.
+ */
+ protected void configureTreeColumn(TreeColumn treeColumn) {
+ Assert.isNotNull(treeColumn);
+ }
+
+ /**
* Called when a column is moved. Store the column's order.
*/
- void columnMoved() {
+ protected void columnMoved() {
Tree tree = viewer.getTree();
TreeColumn[] treeColumns = tree.getColumns();
if(treeColumns != null && treeColumns.length > 0) {
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/TreeViewerHeaderMenu.java b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/TreeViewerHeaderMenu.java
index 7e2f9b2fd..643ca5393 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/TreeViewerHeaderMenu.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/trees/TreeViewerHeaderMenu.java
@@ -63,9 +63,22 @@ public class TreeViewerHeaderMenu extends Menu implements SelectionListener, Lis
menuItem.addSelectionListener(this);
menuItem.setData(column);
menuItem.setEnabled(i != 0);
+ // Custom menu item configuration
+ configureMenuItem(menuItem);
}
}
+ /**
+ * Customize the given menu item.
+ * <p>
+ * Called from {@link #create()}.
+ *
+ * @param item The menu item. Must not be <code>null</code>.
+ */
+ protected void configureMenuItem(MenuItem item) {
+ Assert.isNotNull(item);
+ }
+
/*
* (non-Javadoc)
* @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)

Back to the top