Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Schwarz2014-04-15 06:10:01 +0000
committerTobias Schwarz2014-04-15 06:10:01 +0000
commita94360980e202068af5fd3c0853da81ce1da04c0 (patch)
treee3c141668424c99afc7628e10192686c79405993 /target_explorer/plugins
parent996921d220bde0395f48b898d1756366a9a86612 (diff)
downloadorg.eclipse.tcf-a94360980e202068af5fd3c0853da81ce1da04c0.tar.gz
org.eclipse.tcf-a94360980e202068af5fd3c0853da81ce1da04c0.tar.xz
org.eclipse.tcf-a94360980e202068af5fd3c0853da81ce1da04c0.zip
Target Explorer: rework action history
Diffstat (limited to 'target_explorer/plugins')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF1
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties2
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml42
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/delegates/AbstractDefaultContextToolbarDelegate.java22
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/AbstractArraySelectionDialog.java19
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/ActionHistorySelectionDialog.java241
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryHandler.java33
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryToolbarContribution.java19
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/NewToolbarWizardHandler.java8
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/images/ActionHistoryImageDescriptor.java97
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/interfaces/IDefaultContextToolbarDelegate.java25
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/PropertyTester.java8
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java6
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties6
14 files changed, 504 insertions, 25 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF
index eb727ce4f..1d623a84c 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF
@@ -42,6 +42,7 @@ Export-Package: org.eclipse.tcf.te.tcf.ui.activator,
org.eclipse.tcf.te.tcf.ui.editor.sections,
org.eclipse.tcf.te.tcf.ui.filter,
org.eclipse.tcf.te.tcf.ui.handler,
+ org.eclipse.tcf.te.tcf.ui.handler.images,
org.eclipse.tcf.te.tcf.ui.help,
org.eclipse.tcf.te.tcf.ui.interfaces,
org.eclipse.tcf.te.tcf.ui.internal;x-internal:=true,
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties
index c962dcc26..2fdfa0c2b 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties
@@ -31,7 +31,7 @@ ImportWizards.Peer=Connections
ImportWizards.PeerDescription=Import connection into the System Management view.
ExportWizards.Category.TCF=System Management
-ExportWizards.Peer=Configurations
+ExportWizards.Peer=Connections
ExportWizards.PeerDescription=Export connection from the System Management view.
# ***** Decorators *****
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 4b9453eed..6dccc54ae 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
@@ -350,6 +350,7 @@
<separator name="group.connect" visible="false"/>
<separator name="group.launch" visible="true"/>
<separator name="group.launch.rundebug" visible="true"/>
+ <separator name="group.history" visible="true"/>
<separator name="group.open" visible="true"/>
<separator name="group.delete" visible="false"/>
<separator name="group.new" visible="false"/>
@@ -611,7 +612,8 @@
</menuContribution>
<menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution?after=group.history">
- <menu
+ <command commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.history"/>
+ <!--menu
label="%command.history.label"
tooltip="%command.history.tooltip">
<dynamic
@@ -622,7 +624,7 @@
<test property="org.eclipse.tcf.te.tcf.ui.hasHistory"/>
</with>
</visibleWhen>
- </menu>
+ </menu-->
</menuContribution>
<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">
@@ -658,6 +660,10 @@
<command commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.delete"/>
</menuContribution>
+ <menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.main.menu.system?after=group.history">
+ <command commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.history"/>
+ </menuContribution>
+
<menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.main.menu.system?after=group.new">
<separator name="group.connections" visible="true"/>
<command commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.select"/>
@@ -717,6 +723,13 @@
name="%command.debug.label"
description="%command.debug.tooltip">
</command>
+ <command
+ id="org.eclipse.tcf.te.tcf.ui.toolbar.command.history"
+ categoryId="org.eclipse.tcf.te.ui.commands.category"
+ helpContextId="org.eclipse.tcf.te.tcf.ui.command_History"
+ name="%command.history.label"
+ description="%command.history.tooltip">
+ </command>
</extension>
<!-- Command shortcuts -->
@@ -725,6 +738,10 @@
contextId="org.eclipse.ui.contexts.window"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+M2+C"/>
+ <key commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.history"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M2+F11"/>
</extension>
<!-- Command image contributions -->
@@ -966,6 +983,27 @@
</with>
</enabledWhen>
</handler>
+
+ <handler commandId="org.eclipse.tcf.te.tcf.ui.toolbar.command.history">
+ <class class="org.eclipse.tcf.te.tcf.ui.handler.ActionHistoryHandler"/>
+ <activeWhen>
+ <with variable="defaultContextSelection">
+ <instanceof value="org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode"/>
+ </with>
+ </activeWhen>
+ <enabledWhen>
+ <with variable="defaultContextSelection">
+ <and>
+ <test property="org.eclipse.tcf.te.tcf.ui.hasHistory"/>
+ <adapt type="org.eclipse.tcf.te.core.interfaces.IConnectable">
+ <test forcePluginActivation="true"
+ property="org.eclipse.tcf.te.core.isConnectState"
+ value="connect"/>
+ </adapt>
+ </and>
+ </with>
+ </enabledWhen>
+ </handler>
</extension>
<!-- Tabbed properties view contributions -->
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/delegates/AbstractDefaultContextToolbarDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/delegates/AbstractDefaultContextToolbarDelegate.java
index b6d416f6e..a6d40c6b3 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/delegates/AbstractDefaultContextToolbarDelegate.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/delegates/AbstractDefaultContextToolbarDelegate.java
@@ -10,7 +10,7 @@
package org.eclipse.tcf.te.tcf.ui.delegates;
-import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
import org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate;
@@ -44,10 +44,18 @@ public abstract class AbstractDefaultContextToolbarDelegate implements IDefaultC
}
/* (non-Javadoc)
- * @see org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate#getImageDescriptor(org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode, java.lang.String, java.lang.String)
+ * @see org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate#getDescription(org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode, java.lang.String, java.lang.String)
*/
@Override
- public ImageDescriptor getImageDescriptor(IPeerNode peerNode, String historyId, String entry) {
+ public String getDescription(IPeerNode peerNode, String historyId, String entry) {
+ return getLabel(peerNode, historyId, entry);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate#getImage(IPeerNode, String, String)
+ */
+ @Override
+ public Image getImage(IPeerNode peerNode, String historyId, String entry) {
return null;
}
@@ -57,4 +65,12 @@ public abstract class AbstractDefaultContextToolbarDelegate implements IDefaultC
@Override
public void execute(IPeerNode peerNode, String historyId, String entry, boolean showDialog) {
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate#validate(org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode, java.lang.String, java.lang.String)
+ */
+ @Override
+ public boolean validate(IPeerNode peerNode, String historyId, String entry) {
+ return true;
+ }
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/AbstractArraySelectionDialog.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/AbstractArraySelectionDialog.java
index 961463c13..b23b0582d 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/AbstractArraySelectionDialog.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/AbstractArraySelectionDialog.java
@@ -13,9 +13,12 @@ import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -104,6 +107,8 @@ public abstract class AbstractArraySelectionDialog extends CustomTitleAreaDialog
@SuppressWarnings("unused")
TableColumn column = new TableColumn(table, SWT.LEFT);
+ ColumnViewerToolTipSupport.enableFor(viewer);
+
TableLayout tableLayout = new TableLayout();
tableLayout.addColumnData(new ColumnWeightData(100));
table.setLayout(tableLayout);
@@ -111,9 +116,8 @@ public abstract class AbstractArraySelectionDialog extends CustomTitleAreaDialog
GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
table.setLayoutData(layoutData);
- viewer.setContentProvider(new ArrayContentProvider());
- DelegatingLabelProvider labelProvider = new DelegatingLabelProvider();
- viewer.setLabelProvider(new DecoratingLabelProvider(labelProvider, labelProvider));
+ viewer.setContentProvider(getContentProvider());
+ viewer.setLabelProvider(getLabelProvider());
// Subclasses may customize the viewer before setting the input
configureTableViewer(viewer);
@@ -138,6 +142,15 @@ public abstract class AbstractArraySelectionDialog extends CustomTitleAreaDialog
updateEnablement(viewer);
}
+ protected IContentProvider getContentProvider() {
+ return new ArrayContentProvider();
+ }
+
+ protected IBaseLabelProvider getLabelProvider() {
+ DelegatingLabelProvider labelProvider = new DelegatingLabelProvider();
+ return new DecoratingLabelProvider(labelProvider, labelProvider);
+ }
+
protected void refresh() {
ExecutorsUtil.executeInUI(new Runnable() {
@Override
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/ActionHistorySelectionDialog.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/ActionHistorySelectionDialog.java
new file mode 100644
index 000000000..fc02598c6
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/dialogs/ActionHistorySelectionDialog.java
@@ -0,0 +1,241 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Wind River Systems, Inc. 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.tcf.te.tcf.ui.dialogs;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.CellLabelProvider;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.tcf.te.runtime.persistence.history.HistoryManager;
+import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.runtime.services.interfaces.IDelegateService;
+import org.eclipse.tcf.te.runtime.services.interfaces.IService;
+import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
+import org.eclipse.tcf.te.tcf.locator.interfaces.services.IDefaultContextService;
+import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin;
+import org.eclipse.tcf.te.tcf.ui.handler.images.ActionHistoryImageDescriptor;
+import org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate;
+import org.eclipse.tcf.te.tcf.ui.nls.Messages;
+import org.eclipse.tcf.te.ui.jface.images.AbstractImageDescriptor;
+import org.eclipse.tcf.te.ui.swt.SWTControlUtil;
+
+/**
+ * ActionHistorySelectionDialog
+ */
+public class ActionHistorySelectionDialog extends AbstractArraySelectionDialog {
+
+ protected static class Entry {
+ String historyId;
+ IPeerNode peerNode;
+ IDefaultContextToolbarDelegate delegate;
+ String data;
+ }
+
+ /**
+ * Constructor.
+ * @param shell
+ * @param contextHelpId
+ */
+ public ActionHistorySelectionDialog(Shell shell, String contextHelpId) {
+ super(shell, contextHelpId);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ createButton(parent, IDialogConstants.CLIENT_ID, Messages.ActionHistorySelectionDialog_button_edit, true);
+ createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+ createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
+ */
+ @Override
+ protected void buttonPressed(int buttonId) {
+ if (IDialogConstants.CLIENT_ID == buttonId) {
+ editPressed();
+ }
+ else {
+ super.buttonPressed(buttonId);
+ }
+ }
+
+ protected void editPressed() {
+ Entry entry = getSelectedEntry();
+ if (entry != null) {
+ entry.delegate.execute(entry.peerNode, entry.historyId, entry.data, true);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.dialogs.AbstractArraySelectionDialog#okPressed()
+ */
+ @Override
+ protected void okPressed() {
+ Entry entry = getSelectedEntry();
+ super.okPressed();
+ if (entry != null) {
+ entry.delegate.execute(entry.peerNode, entry.historyId, entry.data, true);
+ }
+ }
+
+ protected Entry getSelectedEntry() {
+ ISelection sel = viewer.getSelection();
+ if (sel instanceof IStructuredSelection && !((IStructuredSelection)sel).isEmpty()) {
+ Object first = ((IStructuredSelection)sel).getFirstElement();
+ if (first instanceof Entry) {
+ return (Entry)first;
+ }
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.dialogs.AbstractArraySelectionDialog#updateEnablement(org.eclipse.jface.viewers.TableViewer)
+ */
+ @Override
+ protected void updateEnablement(TableViewer viewer) {
+ Entry entry = getSelectedEntry();
+
+ // Adjust the OK button enablement
+ Button okButton = getButton(IDialogConstants.OK_ID);
+ SWTControlUtil.setEnabled(okButton, entry != null && entry.delegate.validate(entry.peerNode, entry.historyId, entry.data));
+
+ // Adjust the edit button enablement
+ Button editButton = getButton(IDialogConstants.CLIENT_ID);
+ SWTControlUtil.setEnabled(editButton, entry != null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.dialogs.AbstractArraySelectionDialog#getInput()
+ */
+ @Override
+ protected Object[] getInput() {
+ final IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null);
+
+ IService[] services = ServiceManager.getInstance().getServices(peerNode, IDelegateService.class, false);
+ Map<String, IDefaultContextToolbarDelegate> historyIds = new LinkedHashMap<String, IDefaultContextToolbarDelegate>();
+ String[] ids = new String[0];
+ for (IService service : services) {
+ if (service instanceof IDelegateService) {
+ IDefaultContextToolbarDelegate delegate = ((IDelegateService)service).getDelegate(peerNode, IDefaultContextToolbarDelegate.class);
+ if (delegate != null) {
+ ids = delegate.getToolbarHistoryIds(peerNode, ids);
+ for (String newId : ids) {
+ if (!historyIds.containsKey(newId)) {
+ historyIds.put(newId, delegate);
+ }
+ }
+ }
+ }
+ }
+
+ List<Entry> actions = new ArrayList<Entry>();
+ for (final String historyId : ids) {
+ String[] entries = HistoryManager.getInstance().getHistory(historyId);
+ final IDefaultContextToolbarDelegate delegate = historyIds.get(historyId);
+ if (entries != null && entries.length > 0) {
+ for (final String entry : entries) {
+ Entry action = new Entry();
+ action.peerNode = peerNode;
+ action.historyId = historyId;
+ action.delegate = delegate;
+ action.data = entry;
+
+ actions.add(action);
+ }
+ }
+ }
+ return actions.toArray();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.dialogs.AbstractArraySelectionDialog#getLabelProvider()
+ */
+ @Override
+ protected IBaseLabelProvider getLabelProvider() {
+ return new CellLabelProvider() {
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.CellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell)
+ */
+ @Override
+ public void update(ViewerCell cell) {
+ cell.setText(getText(cell.getElement()));
+ cell.setImage(getImage(cell.getElement()));
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipText(java.lang.Object)
+ */
+ @Override
+ public String getToolTipText(Object element) {
+ Entry entry = (Entry)element;
+ return entry.delegate.getDescription(entry.peerNode, entry.historyId, entry.data);
+ }
+
+ public String getText(Object element) {
+ Entry entry = (Entry)element;
+ return entry.delegate.getLabel(entry.peerNode, entry.historyId, entry.data);
+ }
+
+ public Image getImage(Object element) {
+ Entry entry = (Entry)element;
+ AbstractImageDescriptor descriptor = new ActionHistoryImageDescriptor(
+ UIPlugin.getDefault().getImageRegistry(),
+ entry.delegate.getImage(entry.peerNode, entry.historyId, entry.data),
+ entry.delegate.validate(entry.peerNode, entry.historyId, entry.data));
+ return UIPlugin.getSharedImage(descriptor);
+ }
+ };
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.dialogs.AbstractArraySelectionDialog#getDialogTitle()
+ */
+ @Override
+ protected String getDialogTitle() {
+ return Messages.ActionHistorySelectionDialog_dialogTitle;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.dialogs.AbstractArraySelectionDialog#getTitle()
+ */
+ @Override
+ protected String getTitle() {
+ IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null);
+ return NLS.bind(Messages.ActionHistorySelectionDialog_title, peerNode.getName());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ui.dialogs.AbstractArraySelectionDialog#getDefaultMessage()
+ */
+ @Override
+ protected String getDefaultMessage() {
+ return Messages.ActionHistorySelectionDialog_message;
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryHandler.java
new file mode 100644
index 000000000..b08d16e60
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryHandler.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Wind River Systems, Inc. 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.tcf.te.tcf.ui.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.tcf.te.tcf.ui.dialogs.ActionHistorySelectionDialog;
+import org.eclipse.tcf.te.ui.views.handler.OpenEditorHandler;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * OpenEditorToolbarCommandHandler
+ */
+public class ActionHistoryHandler extends OpenEditorHandler {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.ui.views.handler.OpenEditorHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ActionHistorySelectionDialog dialog = new ActionHistorySelectionDialog(HandlerUtil.getActiveShell(event), null);
+ dialog.open();
+ return null;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryToolbarContribution.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryToolbarContribution.java
index 58f7572eb..f689e7834 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryToolbarContribution.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ActionHistoryToolbarContribution.java
@@ -15,11 +15,14 @@ import org.eclipse.swt.widgets.Event;
import org.eclipse.tcf.te.core.interfaces.IConnectable;
import org.eclipse.tcf.te.runtime.persistence.history.HistoryManager;
import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.runtime.services.interfaces.IDelegateService;
import org.eclipse.tcf.te.runtime.services.interfaces.IService;
-import org.eclipse.tcf.te.runtime.services.interfaces.IUIService;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
import org.eclipse.tcf.te.tcf.locator.interfaces.services.IDefaultContextService;
+import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin;
+import org.eclipse.tcf.te.tcf.ui.handler.images.ActionHistoryImageDescriptor;
import org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate;
+import org.eclipse.tcf.te.ui.jface.images.AbstractImageDescriptor;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.menus.IWorkbenchContribution;
import org.eclipse.ui.services.IServiceLocator;
@@ -49,12 +52,12 @@ public class ActionHistoryToolbarContribution extends CompoundContributionItem i
final IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null);
boolean enabled = (peerNode != null && peerNode.getConnectState() == IConnectable.STATE_CONNECTED);
- IService[] services = ServiceManager.getInstance().getServices(peerNode, IUIService.class, false);
+ IService[] services = ServiceManager.getInstance().getServices(peerNode, IDelegateService.class, false);
Map<String, IDefaultContextToolbarDelegate> historyIds = new LinkedHashMap<String, IDefaultContextToolbarDelegate>();
String[] ids = new String[0];
for (IService service : services) {
- if (service instanceof IUIService) {
- IDefaultContextToolbarDelegate delegate = ((IUIService)service).getDelegate(peerNode, IDefaultContextToolbarDelegate.class);
+ if (service instanceof IDelegateService) {
+ IDefaultContextToolbarDelegate delegate = ((IDelegateService)service).getDelegate(peerNode, IDefaultContextToolbarDelegate.class);
if (delegate != null) {
ids = delegate.getToolbarHistoryIds(peerNode, ids);
for (String newId : ids) {
@@ -89,7 +92,13 @@ public class ActionHistoryToolbarContribution extends CompoundContributionItem i
}
};
action.setEnabled(enabled);
- action.setImageDescriptor(delegate.getImageDescriptor(peerNode, historyId, entry));
+ AbstractImageDescriptor descriptor = new ActionHistoryImageDescriptor(
+ UIPlugin.getDefault().getImageRegistry(),
+ delegate.getImage(peerNode, historyId, entry),
+ delegate.validate(peerNode, historyId, entry));
+ UIPlugin.getSharedImage(descriptor);
+
+ action.setImageDescriptor(UIPlugin.getImageDescriptor(descriptor.getDecriptorKey()));
IContributionItem item = new ActionContributionItem(action);
items.add(item);
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/NewToolbarWizardHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/NewToolbarWizardHandler.java
index eb968df11..3f1f691b6 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/NewToolbarWizardHandler.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/NewToolbarWizardHandler.java
@@ -16,8 +16,8 @@ import java.util.List;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.runtime.services.interfaces.IDelegateService;
import org.eclipse.tcf.te.runtime.services.interfaces.IService;
-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.locator.model.ModelManager;
import org.eclipse.tcf.te.tcf.ui.interfaces.IDefaultContextToolbarDelegate;
@@ -51,11 +51,11 @@ public class NewToolbarWizardHandler extends AbstractNewSingleWizardHandler {
@Override
protected String getWizardId(ExecutionEvent event) {
IPeerModel peerModel = ModelManager.getPeerModel();
- IService[] services = ServiceManager.getInstance().getServices(peerModel, IUIService.class, false);
+ IService[] services = ServiceManager.getInstance().getServices(peerModel, IDelegateService.class, false);
List<String> ids = new ArrayList<String>();
for (IService service : services) {
- if (service instanceof IUIService) {
- IDefaultContextToolbarDelegate delegate = ((IUIService)service).getDelegate(peerModel, IDefaultContextToolbarDelegate.class);
+ if (service instanceof IDelegateService) {
+ IDefaultContextToolbarDelegate delegate = ((IDelegateService)service).getDelegate(peerModel, IDefaultContextToolbarDelegate.class);
if (delegate != null) {
String[] newIds = delegate.getToolbarNewConfigWizardIds(peerModel);
if (newIds != null) {
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/images/ActionHistoryImageDescriptor.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/images/ActionHistoryImageDescriptor.java
new file mode 100644
index 000000000..cbe5b6ce7
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/images/ActionHistoryImageDescriptor.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Wind River Systems, Inc. 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.tcf.te.tcf.ui.handler.images;
+
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.tcf.te.tcf.ui.internal.ImageConsts;
+import org.eclipse.tcf.te.ui.jface.images.AbstractImageDescriptor;
+
+
+/**
+ * Action history toolbar action image descriptor implementation.
+ */
+public class ActionHistoryImageDescriptor extends AbstractImageDescriptor {
+ // the base image to decorate with overlays
+ private Image baseImage;
+ // the image size
+ private Point imageSize;
+
+ // Flags representing the valid state to decorate
+ private boolean valid;
+
+
+ /**
+ * Constructor.
+ */
+ public ActionHistoryImageDescriptor(final ImageRegistry registry, final Image baseImage, boolean valid) {
+ super(registry);
+
+ this.baseImage = baseImage;
+ imageSize = new Point(baseImage.getImageData().width, baseImage.getImageData().height);
+
+ // Determine the current object state to decorate
+ initialize(valid);
+
+ // build up the key for the image registry
+ defineKey(baseImage.hashCode());
+ }
+
+ /**
+ * Initialize the image descriptor from the peer model.
+ *
+ * @param node The peer model. Must not be <code>null</code>.
+ */
+ protected void initialize(boolean valid) {
+ this.valid = valid;
+ }
+
+ /**
+ * Define the peer image descriptor key.
+ *
+ * @param hashCode The hash code of the base image.
+ */
+ protected void defineKey(int hashCode) {
+ String key = "AHID:" + //$NON-NLS-1$
+ hashCode + ":" + //$NON-NLS-1$
+ valid;
+
+ setDecriptorKey(key);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int)
+ */
+ @Override
+ protected void drawCompositeImage(int width, int height) {
+ drawCentered(baseImage, width, height);
+
+ if (!valid) {
+ drawTopLeft(ImageConsts.RED_X_OVR);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize()
+ */
+ @Override
+ protected Point getSize() {
+ return imageSize;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.tcf.ide.util.ui.AbstractImageDescriptor#getBaseImage()
+ */
+ @Override
+ protected Image getBaseImage() {
+ return baseImage;
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/interfaces/IDefaultContextToolbarDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/interfaces/IDefaultContextToolbarDelegate.java
index 157c068b4..aec284435 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/interfaces/IDefaultContextToolbarDelegate.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/interfaces/IDefaultContextToolbarDelegate.java
@@ -10,7 +10,7 @@
package org.eclipse.tcf.te.tcf.ui.interfaces;
-import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
import org.eclipse.tcf.te.tcf.ui.handler.DefaultContextSelectorToolbarContribution;
@@ -45,13 +45,22 @@ public interface IDefaultContextToolbarDelegate {
public String getLabel(IPeerNode peerNode, String historyId, String entry);
/**
- * Get the image descriptor for a history action.
+ * Get the description for a history action.
* @param peerNode
* @param historyId
* @param entry
* @return
*/
- public ImageDescriptor getImageDescriptor(IPeerNode peerNode, String historyId, String entry);
+ public String getDescription(IPeerNode peerNode, String historyId, String entry);
+
+ /**
+ * Get the image for a history action.
+ * @param peerNode
+ * @param historyId
+ * @param entry
+ * @return
+ */
+ public Image getImage(IPeerNode peerNode, String historyId, String entry);
/**
* Execute a history action.
@@ -62,4 +71,14 @@ public interface IDefaultContextToolbarDelegate {
* @param showDialog
*/
public void execute(IPeerNode peerNode, String historyId, String entry, boolean showDialog);
+
+ /**
+ * Validate the entry.
+ * @param peerNode
+ * @param historyId
+ * @param entry
+ * @return
+ */
+ public boolean validate(IPeerNode peerNode, String historyId, String entry);
+
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/PropertyTester.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/PropertyTester.java
index e420ae047..4f9ab8171 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/PropertyTester.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/internal/PropertyTester.java
@@ -17,8 +17,8 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.tcf.te.runtime.persistence.history.HistoryManager;
import org.eclipse.tcf.te.runtime.services.ServiceManager;
+import org.eclipse.tcf.te.runtime.services.interfaces.IDelegateService;
import org.eclipse.tcf.te.runtime.services.interfaces.IService;
-import org.eclipse.tcf.te.runtime.services.interfaces.IUIService;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
import org.eclipse.tcf.te.tcf.locator.interfaces.services.IDefaultContextService;
import org.eclipse.tcf.te.tcf.locator.model.ModelManager;
@@ -52,10 +52,10 @@ public class PropertyTester extends org.eclipse.core.expressions.PropertyTester
if ("hasHistory".equals(property) && receiver instanceof IPeerNode) { //$NON-NLS-1$
IPeerNode peerNode = (IPeerNode)receiver;
- IService[] services = ServiceManager.getInstance().getServices(peerNode, IUIService.class, false);
+ IService[] services = ServiceManager.getInstance().getServices(peerNode, IDelegateService.class, false);
for (IService service : services) {
- if (service instanceof IUIService) {
- IDefaultContextToolbarDelegate delegate = ((IUIService)service).getDelegate(peerNode, IDefaultContextToolbarDelegate.class);
+ if (service instanceof IDelegateService) {
+ IDefaultContextToolbarDelegate delegate = ((IDelegateService)service).getDelegate(peerNode, IDefaultContextToolbarDelegate.class);
if (delegate != null) {
String[] newIds = delegate.getToolbarHistoryIds(peerNode, new String[0]);
if (newIds != null) {
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java
index 12550367a..b8a0bd6a2 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java
@@ -151,6 +151,12 @@ public class Messages extends NLS {
public static String PeerNodeSelectionDialog_title;
public static String PeerNodeSelectionDialog_message;
+ public static String ActionHistorySelectionDialog_dialogTitle;
+ public static String ActionHistorySelectionDialog_title;
+ public static String ActionHistorySelectionDialog_message;
+ public static String ActionHistorySelectionDialog_button_edit;
+ public static String ActionHistorySelectionDialog_button_execute;
+
public static String RedirectHandler_error_title;
public static String RedirectHandler_error_redirectFailed;
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties
index db8da4f2f..893be6f61 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties
@@ -107,6 +107,12 @@ PeerNodeSelectionDialog_dialogTitle=Select
PeerNodeSelectionDialog_title=Select Connection
PeerNodeSelectionDialog_message=Select the connection for the operation to perform.
+ActionHistorySelectionDialog_dialogTitle=Action History
+ActionHistorySelectionDialog_title=Select an Action for ''{0}''
+ActionHistorySelectionDialog_message=Select an action from the history to execute or edit.
+ActionHistorySelectionDialog_button_edit=Edit
+ActionHistorySelectionDialog_button_execute=Ok
+
RedirectHandler_error_title=Error
RedirectHandler_error_redirectFailed=Failed to redirect target communication.

Back to the top