diff options
author | ustieber | 2011-05-12 11:02:19 +0000 |
---|---|---|
committer | ustieber | 2011-05-12 11:02:19 +0000 |
commit | 1872071ffb080b222581a39ca6ddf5d714e86889 (patch) | |
tree | f54755891a2053033825879bb2b5fd4a5e1efa78 /target_explorer | |
parent | fa85be44ccd955603e514bc2ed7a107e1f56f8f1 (diff) | |
download | org.eclipse.tcf-1872071ffb080b222581a39ca6ddf5d714e86889.tar.gz org.eclipse.tcf-1872071ffb080b222581a39ca6ddf5d714e86889.tar.xz org.eclipse.tcf-1872071ffb080b222581a39ca6ddf5d714e86889.zip |
Target Explorer: Rework "Add Peer..." dialog action to become a regular common navigator new wizard
Diffstat (limited to 'target_explorer')
22 files changed, 751 insertions, 443 deletions
diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/dtool16/newRemoteTarget_wiz.gif b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/dtool16/newRemoteTarget_wiz.gif Binary files differnew file mode 100644 index 000000000..fd7af8403 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/dtool16/newRemoteTarget_wiz.gif diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/dtool16/newconnection_wiz.gif b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/dtool16/newconnection_wiz.gif Binary files differdeleted file mode 100644 index 5d9eae9e5..000000000 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/dtool16/newconnection_wiz.gif +++ /dev/null diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/etool16/newRemoteTarget_wiz.gif b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/etool16/newRemoteTarget_wiz.gif Binary files differnew file mode 100644 index 000000000..5b0b25fbe --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/etool16/newRemoteTarget_wiz.gif diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/etool16/newconnection_wiz.gif b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/etool16/newconnection_wiz.gif Binary files differdeleted file mode 100644 index 9f2b4acc7..000000000 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/icons/etool16/newconnection_wiz.gif +++ /dev/null diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.properties b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.properties index 910ffda8c..3d656b10a 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.properties +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.properties @@ -11,17 +11,17 @@ pluginName = Target Explorer, TCF UI Plug-in providerName = Eclipse.org +# ***** Wizards ***** + +NewPeerWizard.name=TCF Remote Target + # ***** Editor Pages ***** NodePropertiesEditorPage.name=General # ***** Command Contributions ***** -TcfDataSource.command.category.name=Target Explorer Commands (TCF) - -TcfDataSource.command.refresh.name=Refresh Command -TcfDataSource.command.refresh.label=Re&fresh -TcfDataSource.command.refresh.tooltip=Refresh +command.category.name=Target Explorer Commands (TCF) -TcfDataSource.command.addPeer.name=Add New Peer Command -TcfDataSource.command.addPeer.label=&New Peer... -TcfDataSource.command.addPeer.tooltip=Adds a new peer to the discovery view. +command.refresh.name=Refresh Command +command.refresh.label=Re&fresh +command.refresh.tooltip=Refresh diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.xml index d78082a31..849edcefb 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/plugin.xml @@ -29,8 +29,27 @@ <commonSorter class="org.eclipse.tm.te.tcf.ui.internal.navigator.Sorter" id="org.eclipse.tm.te.tcf.ui.navigator.sorter"/> + <commonWizard + type="new" + wizardId="org.eclipse.tm.te.tcf.ui.wizards.NewPeerWizard"> + <enablement> + <instanceof value="org.eclipse.tm.te.tcf.locator.interfaces.nodes.IPeerModel"/> + </enablement> + </commonWizard> </navigatorContent> </extension> + +<!-- New wizard contributions --> + + <extension point="org.eclipse.ui.newWizards"> + <wizard + category="org.eclipse.tm.te.ui.newWizards.category" + class="org.eclipse.tm.te.tcf.ui.internal.wizards.NewRemoteTargetWizard" + icon="icons/etool16/newRemoteTarget_wiz.gif" + id="org.eclipse.tm.te.tcf.ui.wizards.NewPeerWizard" + name="%NewPeerWizard.name"> + </wizard> + </extension> <!-- Target Explorer Details Editor page contributions --> <extension point="org.eclipse.tm.te.ui.views.editorPages"> @@ -57,27 +76,6 @@ <!-- Target Explorer menu contributions --> <extension point="org.eclipse.ui.menus"> - <menuContribution locationURI="popup:org.eclipse.tm.te.ui.views.TargetExplorer#Popup?after=group.new"> - <command - commandId="org.eclipse.tm.te.tcf.ui.command.addPeer" - disabledIcon="icons/dtool16/newconnection_wiz.gif" - helpContextId="org.eclipse.tm.te.tcf.ui.command_AddPeer" - icon="icons/etool16/newconnection_wiz.gif" - id="org.eclipse.tm.te.tcf.ui.commands.addPeer" - label="%TcfDataSource.command.addPeer.label" - style="push" - tooltip="%TcfDataSource.command.addPeer.tooltip"> - <visibleWhen checkEnabled="false"> - <with variable="selection"> - <count value="1"/> - <iterate operator="and" ifEmpty="false"> - <instanceof value="org.eclipse.tm.te.tcf.locator.interfaces.nodes.IPeerModel"/> - </iterate> - </with> - </visibleWhen> - </command> - </menuContribution> - <menuContribution locationURI="popup:org.eclipse.tm.te.ui.views.TargetExplorer#Popup?after=group.refresh"> <command commandId="org.eclipse.tm.te.tcf.ui.command.refresh" @@ -85,9 +83,9 @@ helpContextId="org.eclipse.tm.te.tcf.ui.command_Refresh" icon="platform:/plugin/org.eclipse.ui.ide/icons/full/elcl16/refresh_nav.gif" id="org.eclipse.tm.te.tcf.ui.commands.refresh" - label="%TcfDataSource.command.refresh.label" + label="%command.refresh.label" style="push" - tooltip="%TcfDataSource.command.refresh.tooltip"> + tooltip="%command.refresh.tooltip"> <visibleWhen checkEnabled="false"> <with variable="selection"> <count value="1"/> @@ -105,19 +103,13 @@ <extension point="org.eclipse.ui.commands"> <category id="org.eclipse.tm.te.tcf.ui.commands.category" - name="%TcfDataSource.command.category.name"> + name="%command.category.name"> </category> <command categoryId="org.eclipse.tm.te.tcf.ui.commands.category" helpContextId="org.eclipse.tm.te.tcf.ui.command_Refresh" id="org.eclipse.tm.te.tcf.ui.command.refresh" - name="%TcfDataSource.command.refresh.name"> - </command> - <command - categoryId="org.eclipse.tm.te.tcf.ui.commands.category" - helpContextId="org.eclipse.tm.te.tcf.ui.command_AddPeer" - id="org.eclipse.tm.te.tcf.ui.command.addPeer" - name="%TcfDataSource.command.addPeer.name"> + name="%command.refresh.name"> </command> </extension> @@ -127,10 +119,5 @@ class="org.eclipse.tm.te.tcf.ui.internal.handler.RefreshCommandHandler" commandId="org.eclipse.tm.te.tcf.ui.command.refresh"> </handler> - - <handler - class="org.eclipse.tm.te.tcf.ui.internal.handler.AddPeerCommandHandler" - commandId="org.eclipse.tm.te.tcf.ui.command.addPeer"> - </handler> </extension> </plugin> diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/handler/AddPeerCommandHandler.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/handler/AddPeerCommandHandler.java deleted file mode 100644 index de0f820d9..000000000 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/handler/AddPeerCommandHandler.java +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 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: - * Uwe Stieber (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.te.tcf.ui.internal.handler; - -import java.util.Map; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tm.tcf.protocol.IChannel; -import org.eclipse.tm.tcf.protocol.IPeer; -import org.eclipse.tm.tcf.protocol.Protocol; -import org.eclipse.tm.te.tcf.core.Tcf; -import org.eclipse.tm.te.tcf.core.interfaces.IChannelManager; -import org.eclipse.tm.te.tcf.locator.interfaces.nodes.ILocatorModel; -import org.eclipse.tm.te.tcf.locator.interfaces.nodes.IPeerModel; -import org.eclipse.tm.te.tcf.locator.interfaces.services.ILocatorModelLookupService; -import org.eclipse.tm.te.tcf.ui.internal.dialogs.AddPeerDialog; -import org.eclipse.tm.te.tcf.ui.internal.model.Model; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.handlers.HandlerUtil; - - -/** - * Target Explorer: Adds a new peer to the TCF locator model. - */ -public class AddPeerCommandHandler extends AbstractHandler { - - /* (non-Javadoc) - * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) - */ - public Object execute(ExecutionEvent event) throws ExecutionException { - // Get the shell - Shell shell = HandlerUtil.getActiveShell(event); - // Open the dialog - AddPeerDialog dialog = new AddPeerDialog(shell); - if (dialog.open() == Window.OK) { - // Get the new peer attributes - final Map<String, String> peerAttributes = dialog.getPeerAttributes(); - if (peerAttributes != null) { - // Try to connect to the peer - IChannel channel = null; - try { - IWorkbenchPart activePart = HandlerUtil.getActivePart(event); - IEditorPart editorPart = activePart != null ? (IEditorPart)activePart.getAdapter(IEditorPart.class) : null; - final ISelectionProvider selectionProvider = editorPart != null ? editorPart.getEditorSite().getSelectionProvider() : null; - - Tcf.getChannelManager().openChannel(peerAttributes, new IChannelManager.DoneOpenChannel() { - public void doneOpenChannel(Throwable error, IChannel channel) { - if (error == null) { - IPeer peer = channel.getRemotePeer(); - if (selectionProvider != null && peer != null) { - // OK, we have the peer instance now, for the rest, - // we need the locator model - ILocatorModel model = Model.getModel(); - if (model != null) { - final IPeerModel peerNode = model.getService(ILocatorModelLookupService.class).lkupPeerModelById(peer.getID()); - if (peerNode != null) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - selectionProvider.setSelection(new StructuredSelection(peerNode)); - } - }); - } - } - } - } - - channel.close(); - } - }); - } catch (Exception e) { - } finally { - // Close the channel again - if (channel != null) { - final IChannel finChannel = channel; - if (Protocol.isDispatchThread()) { - finChannel.close(); - } else { - Protocol.invokeAndWait(new Runnable() { - public void run() { - finChannel.close(); - } - }); - } - } - } - } - } - - return null; - } - -} diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/help/IContextHelpIds.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/help/IContextHelpIds.java index 6497cb459..cdd7b9a48 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/help/IContextHelpIds.java +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/help/IContextHelpIds.java @@ -22,9 +22,9 @@ public interface IContextHelpIds { public final static String PREFIX = UIPlugin.getUniqueIdentifier() + "."; //$NON-NLS-1$ /** - * Add new peer dialog. + * New TCF remote target wizard main page. */ - public final static String ADD_PEER_DIALOG = PREFIX + "AddPeerDialog"; //$NON-NLS-1$ + public final static String NEW_REMOTE_TARGET_WIZARD_PAGE = PREFIX + "NewRemoteTargetWizardPage"; //$NON-NLS-1$ /** * Target Explorer details editor page: Node properties diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.java index e7267fb35..f0dadb93f 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.java +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.java @@ -83,15 +83,13 @@ public class Messages extends NLS { public static String NodePropertiesLabelProvider_services_local; public static String NodePropertiesLabelProvider_services_remote; - public static String AddPeerDialog_title; - - public static String TransportTypeControl_label; - - public static String AgentHostControl_label; - - public static String AgentPortControl_label; - - public static String PeerIdControl_label; - - public static String PeerNameControl_label; + public static String NewRemoteTargetWizard_windowTitle; + + public static String NewRemoteTargetWizardPage_title; + public static String NewRemoteTargetWizardPage_description; + public static String NewRemoteTargetWizardPage_TransportTypeControl_label; + public static String NewRemoteTargetWizardPage_AgentHostControl_label; + public static String NewRemoteTargetWizardPage_AgentPortControl_label; + public static String NewRemoteTargetWizardPage_PeerIdControl_label; + public static String NewRemoteTargetWizardPage_PeerNameControl_label; } diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.properties index 94fdbfa19..d656ee622 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.properties +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/nls/Messages.properties @@ -19,12 +19,12 @@ NodePropertiesLabelProvider_services_remote=Remote Services AddPeerDialog_title=Add New Peer -TransportTypeControl_label=Type: - -AgentHostControl_label=Host: - -AgentPortControl_label=Port: - -PeerIdControl_label=ID: - -PeerNameControl_label=Name: +NewRemoteTargetWizard_windowTitle=New Remote Target + +NewRemoteTargetWizardPage_title=New Remote Target +NewRemoteTargetWizardPage_description=Specify the attributes to connect to the remote target. +NewRemoteTargetWizardPage_TransportTypeControl_label=Type: +NewRemoteTargetWizardPage_AgentHostControl_label=Host: +NewRemoteTargetWizardPage_AgentPortControl_label=Port: +NewRemoteTargetWizardPage_PeerIdControl_label=ID: +NewRemoteTargetWizardPage_PeerNameControl_label=Name: diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/wizards/NewRemoteTargetWizard.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/wizards/NewRemoteTargetWizard.java new file mode 100644 index 000000000..15a306277 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/wizards/NewRemoteTargetWizard.java @@ -0,0 +1,115 @@ +/*******************************************************************************
+ * Copyright (c) 2011 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:
+ * Uwe Stieber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.te.tcf.ui.internal.wizards;
+
+import java.util.Map;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.tm.tcf.protocol.IChannel;
+import org.eclipse.tm.tcf.protocol.IPeer;
+import org.eclipse.tm.tcf.protocol.Protocol;
+import org.eclipse.tm.te.tcf.core.Tcf;
+import org.eclipse.tm.te.tcf.core.interfaces.IChannelManager;
+import org.eclipse.tm.te.tcf.locator.interfaces.nodes.ILocatorModel;
+import org.eclipse.tm.te.tcf.locator.interfaces.nodes.IPeerModel;
+import org.eclipse.tm.te.tcf.locator.interfaces.services.ILocatorModelLookupService;
+import org.eclipse.tm.te.tcf.ui.internal.model.Model;
+import org.eclipse.tm.te.tcf.ui.internal.nls.Messages;
+import org.eclipse.tm.te.tcf.ui.internal.wizards.pages.NewRemoteTargetWizardPage;
+import org.eclipse.tm.te.ui.views.interfaces.IUIConstants;
+import org.eclipse.tm.te.ui.wizards.AbstractWizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IViewReference;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * New TCF remote target wizard implementation.
+ */
+public class NewRemoteTargetWizard extends AbstractWizard implements INewWizard {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+ */
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ // Set the window title
+ setWindowTitle(Messages.NewRemoteTargetWizard_windowTitle);
+ // Create and add the wizard pages
+ addPage(new NewRemoteTargetWizardPage());
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ IWizardPage page = getPage(NewRemoteTargetWizardPage.class.getName());
+ if (page instanceof NewRemoteTargetWizardPage) {
+ // Trigger the saving of the widget history
+ ((NewRemoteTargetWizardPage)page).saveWidgetValues();
+ // Get the peer attributes map from the page
+ Map<String, String> peerAttributes = ((NewRemoteTargetWizardPage)page).getPeerAttributes();
+ if (peerAttributes != null) {
+ // Try to connect to the peer
+ IChannel channel = null;
+ try {
+ Tcf.getChannelManager().openChannel(peerAttributes, new IChannelManager.DoneOpenChannel() {
+ public void doneOpenChannel(Throwable error, IChannel channel) {
+ // We ignore the error here, because we don't present it to the user
+ if (channel != null && channel.getRemotePeer() != null) {
+ IPeer peer = channel.getRemotePeer();
+ ILocatorModel model = Model.getModel();
+ if (model != null) {
+ final IPeerModel peerNode = model.getService(ILocatorModelLookupService.class).lkupPeerModelById(peer.getID());
+ if (peerNode != null && PlatformUI.isWorkbenchRunning()) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null && PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
+ IViewReference reference = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findViewReference(IUIConstants.ID_EXPLORER);
+ IWorkbenchPart part = reference != null ? reference.getPart(false) : null;
+ ISelectionProvider selectionProvider = part != null && part.getSite() != null ? part.getSite().getSelectionProvider() : null;
+ if (selectionProvider != null) selectionProvider.setSelection(new StructuredSelection(peerNode));
+ }
+ }
+ });
+ }
+ }
+ }
+
+ if (channel != null) channel.close();
+ }
+ });
+ } catch (Exception e) {
+ } finally {
+ // Close the channel again
+ if (channel != null) {
+ final IChannel finChannel = channel;
+ if (Protocol.isDispatchThread()) {
+ finChannel.close();
+ } else {
+ Protocol.invokeAndWait(new Runnable() {
+ public void run() {
+ finChannel.close();
+ }
+ });
+ }
+ }
+ }
+ }
+ }
+
+ return true;
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/dialogs/AddPeerDialog.java b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/wizards/pages/NewRemoteTargetWizardPage.java index ab8446780..39f67d2b1 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/dialogs/AddPeerDialog.java +++ b/target_explorer/plugins/org.eclipse.tm.te.tcf.ui/src/org/eclipse/tm/te/tcf/ui/internal/wizards/pages/NewRemoteTargetWizardPage.java @@ -1,267 +1,249 @@ -/******************************************************************************* - * Copyright (c) 2011 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: - * Uwe Stieber (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.te.tcf.ui.internal.dialogs; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Combo; -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.tm.tcf.protocol.IPeer; -import org.eclipse.tm.te.tcf.ui.internal.help.IContextHelpIds; -import org.eclipse.tm.te.tcf.ui.internal.nls.Messages; -import org.eclipse.tm.te.ui.dialogs.CustomTrayDialog; - - -/** - * Target Explorer: Add peer dialog implementation. - */ -public class AddPeerDialog extends CustomTrayDialog { - private Combo fTransportTypeControl; - private Text fAddressControl; - private Text fPortControl; - private Text fPeerIdControl; - private Text fPeerNameControl; - - private Map<String, String> fPeerAttributes = null; - - /** - * Constructor. - * - * @param parent The parent shell used to view the dialog. - */ - public AddPeerDialog(Shell parent) { - this(parent, IContextHelpIds.ADD_PEER_DIALOG); - } - - /** - * Constructor. - * - * @param parent The parent shell used to view the dialog. - * @param contextHelpId The dialog context help id or <code>null</code>. - */ - public AddPeerDialog(Shell parent, String contextHelpId) { - super(parent, contextHelpId); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.te.tcf.ide.target.ui.dialogs.WRUnifiedTitleAreaDialog#createDialogArea(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createDialogArea(Composite parent) { - Composite composite = (Composite)super.createDialogArea(parent); - - configureTitles(); - - Composite panel = new Composite(composite, SWT.NONE); - panel.setLayout(new GridLayout(2, false)); - panel.setLayoutData(new GridData(GridData.FILL_BOTH)); - - // Add the controls - Label label = new Label(panel, SWT.NONE); - label.setText(Messages.TransportTypeControl_label); - - fTransportTypeControl = new Combo(panel, SWT.READ_ONLY); - fTransportTypeControl.setItems(new String[] { "TCP" }); //$NON-NLS-1$ - fTransportTypeControl.select(0); - fTransportTypeControl.setEnabled(false); - fTransportTypeControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - label = new Label(panel, SWT.NONE); - label.setText(Messages.AgentHostControl_label); - - fAddressControl = new Text(panel, SWT.SINGLE | SWT.BORDER); - fAddressControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - fAddressControl.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - updatePeerId(); - } - }); - - label = new Label(panel, SWT.NONE); - label.setText(Messages.AgentPortControl_label); - - fPortControl = new Text(panel, SWT.SINGLE | SWT.BORDER); - fPortControl.setText("1534"); //$NON-NLS-1$ - fPortControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - fPortControl.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - updatePeerId(); - } - }); - - label = new Label(panel, SWT.NONE); - label.setText(Messages.PeerIdControl_label); - - fPeerIdControl = new Text(panel, SWT.SINGLE | SWT.BORDER); - fPeerIdControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - label = new Label(panel, SWT.NONE); - label.setText(Messages.PeerNameControl_label); - - fPeerNameControl = new Text(panel, SWT.SINGLE | SWT.BORDER); - fPeerNameControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - // Setup the control content - setupContent(); - - // Adjust the font - applyDialogFont(composite); - - return composite; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.TrayDialog#createButtonBar(org.eclipse.swt.widgets.Composite) - */ - @Override - protected Control createButtonBar(Composite parent) { - Control control = super.createButtonBar(parent); - validateDialog(); - return control; - } - - /** - * Configure the dialog title and the title area content. The method - * is called from {@link #createDialogArea(Composite)}. - */ - protected void configureTitles() { - setDialogTitle(Messages.AddPeerDialog_title); - } - - /** - * Setup the control content. - */ - protected void setupContent() { - restoreWidgetValues(); - updatePeerId(); - } - - /** - * Update peer id control. - */ - protected void updatePeerId() { - String address = fAddressControl.getText(); - String port = fPortControl.getText(); - String type = fTransportTypeControl.getText(); - - if (!"".equals(address) && !"".equals(port)) { //$NON-NLS-1$ //$NON-NLS-2$ - fPeerIdControl.setText(type + ":" //$NON-NLS-1$ - + address + ":" //$NON-NLS-1$ - + port); - } else { - fPeerIdControl.setText(""); //$NON-NLS-1$ - } - - validateDialog(); - } - - /** - * Validates the dialog. - */ - protected void validateDialog() { - boolean valid = true; - - if ("".equals(fAddressControl.getText()) || "".equals(fPortControl)) { //$NON-NLS-1$ //$NON-NLS-2$ - valid = false; - } - - if (getButton(IDialogConstants.OK_ID) != null) - getButton(IDialogConstants.OK_ID).setEnabled(valid); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#cancelPressed() - */ - @Override - protected void cancelPressed() { - // Dispose the peer attributes - fPeerAttributes = null; - - super.cancelPressed(); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.te.tcf.ide.target.ui.dialogs.WRUnifiedTitleAreaDialog#okPressed() - */ - @Override - protected void okPressed() { - saveWidgetValues(); - - // Create a new peer attributes map - fPeerAttributes = new HashMap<String, String>(); - // Update with the current control content - updatePeerAttributes(fPeerAttributes); - - super.okPressed(); - } - - /** - * Updates the given attributes map with the current control content. - */ - protected void updatePeerAttributes(Map<String, String> peerAttributes) { - assert peerAttributes != null; - - peerAttributes.put(IPeer.ATTR_IP_HOST, fAddressControl.getText()); - peerAttributes.put(IPeer.ATTR_IP_PORT, fPortControl.getText()); - peerAttributes.put(IPeer.ATTR_ID, fPeerIdControl.getText()); - peerAttributes.put(IPeer.ATTR_NAME, fPeerNameControl.getText()); - peerAttributes.put(IPeer.ATTR_TRANSPORT_NAME, fTransportTypeControl.getText()); - } - - /** - * Returns the peer attributes. - * - * @return The peer attributes or <code>null</code> if canceled. - */ - public final Map<String, String> getPeerAttributes() { - return fPeerAttributes; - } - - - /* (non-Javadoc) - * @see org.eclipse.tm.te.tcf.ide.target.ui.dialogs.WRUnifiedTitleAreaDialog#saveWidgetValues() - */ - protected void saveWidgetValues() { - IDialogSettings settings = getDialogSettings(); - if (settings != null) { - // The transport type control is not saved - settings.put(IPeer.ATTR_IP_HOST, fAddressControl.getText()); - settings.put(IPeer.ATTR_IP_PORT, fPortControl.getText()); - settings.put(IPeer.ATTR_ID, fPeerIdControl.getText()); - settings.put(IPeer.ATTR_NAME, fPeerNameControl.getText()); - } - } - - /* (non-Javadoc) - * @see org.eclipse.tm.te.tcf.ide.target.ui.dialogs.WRUnifiedTitleAreaDialog#restoreWidgetValues() - */ - protected void restoreWidgetValues() { - IDialogSettings settings = getDialogSettings(); - if (settings != null) { - // The transport type control is not restored - if (settings.get(IPeer.ATTR_IP_HOST) != null) fAddressControl.setText(settings.get(IPeer.ATTR_IP_HOST)); - if (settings.get(IPeer.ATTR_IP_PORT) != null) fPortControl.setText(settings.get(IPeer.ATTR_IP_PORT)); - if (settings.get(IPeer.ATTR_ID) != null) fPeerIdControl.setText(settings.get(IPeer.ATTR_ID)); - if (settings.get(IPeer.ATTR_NAME) != null) fPeerNameControl.setText(settings.get(IPeer.ATTR_NAME)); - } - } -} +/*******************************************************************************
+ * Copyright (c) 2011 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:
+ * Uwe Stieber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.te.tcf.ui.internal.wizards.pages;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.tm.tcf.protocol.IPeer;
+import org.eclipse.tm.te.tcf.ui.internal.help.IContextHelpIds;
+import org.eclipse.tm.te.tcf.ui.internal.nls.Messages;
+import org.eclipse.tm.te.ui.wizards.pages.AbstractWizardPage;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * Wizard page implementation querying all information needed
+ * to create the different TCF peer types.
+ */
+public class NewRemoteTargetWizardPage extends AbstractWizardPage {
+ private Combo fTransportTypeControl;
+ private Text fAddressControl;
+ private Text fPortControl;
+ private Text fPeerIdControl;
+ private Text fPeerNameControl;
+
+ /**
+ * Constructor.
+ */
+ public NewRemoteTargetWizardPage() {
+ this(NewRemoteTargetWizardPage.class.getName());
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param pageName The page name. Must not be <code>null</code>.
+ */
+ public NewRemoteTargetWizardPage(String pageName) {
+ super(pageName);
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+ */
+ public void createControl(Composite parent) {
+ // Setup title and description
+ setTitle(Messages.NewRemoteTargetWizardPage_title);
+ setDescription(Messages.NewRemoteTargetWizardPage_description);
+
+ // Create the main panel
+ Composite mainPanel = new Composite(parent, SWT.NONE);
+ mainPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+ mainPanel.setLayout(new GridLayout());
+
+ setControl(mainPanel);
+
+ // Setup the help
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(mainPanel, IContextHelpIds.NEW_REMOTE_TARGET_WIZARD_PAGE);
+
+ // Create the main panel sub controls
+ createMainPanelControls(mainPanel);
+
+ // Adjust the font
+ Dialog.applyDialogFont(mainPanel);
+ }
+
+ /**
+ * Creates the main panel sub controls.
+ *
+ * @param parent The parent main panel composite. Must not be <code>null</code>.
+ */
+ protected void createMainPanelControls(Composite parent) {
+ Assert.isNotNull(parent);
+
+ Composite panel = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginHeight = 0; layout.marginWidth = 0;
+ panel.setLayout(layout);
+ panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ // Add the controls
+ Label label = new Label(panel, SWT.NONE);
+ label.setText(Messages.NewRemoteTargetWizardPage_TransportTypeControl_label);
+
+ fTransportTypeControl = new Combo(panel, SWT.READ_ONLY);
+ fTransportTypeControl.setItems(new String[] { "TCP" }); //$NON-NLS-1$
+ fTransportTypeControl.select(0);
+ fTransportTypeControl.setEnabled(false);
+ fTransportTypeControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ label = new Label(panel, SWT.NONE);
+ label.setText(Messages.NewRemoteTargetWizardPage_AgentHostControl_label);
+
+ fAddressControl = new Text(panel, SWT.SINGLE | SWT.BORDER);
+ fAddressControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ fAddressControl.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ updatePeerId();
+ }
+ });
+
+ label = new Label(panel, SWT.NONE);
+ label.setText(Messages.NewRemoteTargetWizardPage_AgentPortControl_label);
+
+ fPortControl = new Text(panel, SWT.SINGLE | SWT.BORDER);
+ fPortControl.setText("1534"); //$NON-NLS-1$
+ fPortControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ fPortControl.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ updatePeerId();
+ }
+ });
+
+ label = new Label(panel, SWT.NONE);
+ label.setText(Messages.NewRemoteTargetWizardPage_PeerIdControl_label);
+
+ fPeerIdControl = new Text(panel, SWT.SINGLE | SWT.BORDER);
+ fPeerIdControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ label = new Label(panel, SWT.NONE);
+ label.setText(Messages.NewRemoteTargetWizardPage_PeerNameControl_label);
+
+ fPeerNameControl = new Text(panel, SWT.SINGLE | SWT.BORDER);
+ fPeerNameControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Restore the page history and trigger
+ // an update of the peer id
+ setupContent();
+ }
+
+ /**
+ * Setup the control content.
+ */
+ protected void setupContent() {
+ restoreWidgetValues();
+ updatePeerId();
+ }
+
+ /**
+ * Update peer id control.
+ */
+ protected void updatePeerId() {
+ String address = fAddressControl.getText();
+ String port = fPortControl.getText();
+ String type = fTransportTypeControl.getText();
+
+ if (!"".equals(address) && !"".equals(port)) { //$NON-NLS-1$ //$NON-NLS-2$
+ fPeerIdControl.setText(type + ":" //$NON-NLS-1$
+ + address + ":" //$NON-NLS-1$
+ + port);
+ } else {
+ fPeerIdControl.setText(""); //$NON-NLS-1$
+ }
+
+ validatePage();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.te.ui.wizards.pages.AbstractWizardPage#validatePage()
+ */
+ @Override
+ public void validatePage() {
+ boolean valid = true;
+
+ if ("".equals(fAddressControl.getText()) || "".equals(fPortControl)) { //$NON-NLS-1$ //$NON-NLS-2$
+ valid = false;
+ }
+
+ setPageComplete(valid);
+ }
+
+ /**
+ * Updates the given attributes map with the current control content.
+ *
+ * @param peerAttributes The peer attributes map to update. Must not be <code>null</code>.
+ */
+ protected void updatePeerAttributes(Map<String, String> peerAttributes) {
+ Assert.isNotNull(peerAttributes);
+
+ peerAttributes.put(IPeer.ATTR_IP_HOST, fAddressControl.getText());
+ peerAttributes.put(IPeer.ATTR_IP_PORT, fPortControl.getText());
+ peerAttributes.put(IPeer.ATTR_ID, fPeerIdControl.getText());
+ peerAttributes.put(IPeer.ATTR_NAME, fPeerNameControl.getText());
+ peerAttributes.put(IPeer.ATTR_TRANSPORT_NAME, fTransportTypeControl.getText());
+ }
+
+ /**
+ * Returns the peer attributes.
+ *
+ * @return The peer attributes or <code>null</code> if canceled.
+ */
+ public final Map<String, String> getPeerAttributes() {
+ // Create a new peer attributes map
+ Map<String, String> peerAttributes = new HashMap<String, String>();
+ // Update with the current control content
+ updatePeerAttributes(peerAttributes);
+
+ return peerAttributes;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.te.ui.wizards.pages.AbstractWizardPage#saveWidgetValues()
+ */
+ @Override
+ public void saveWidgetValues() {
+ IDialogSettings settings = getDialogSettings();
+ if (settings != null) {
+ // The transport type control is not saved
+ settings.put(IPeer.ATTR_IP_HOST, fAddressControl.getText());
+ settings.put(IPeer.ATTR_IP_PORT, fPortControl.getText());
+ settings.put(IPeer.ATTR_ID, fPeerIdControl.getText());
+ settings.put(IPeer.ATTR_NAME, fPeerNameControl.getText());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tm.te.ui.wizards.pages.AbstractWizardPage#restoreWidgetValues()
+ */
+ @Override
+ public void restoreWidgetValues() {
+ IDialogSettings settings = getDialogSettings();
+ if (settings != null) {
+ // The transport type control is not restored
+ if (settings.get(IPeer.ATTR_IP_HOST) != null) fAddressControl.setText(settings.get(IPeer.ATTR_IP_HOST));
+ if (settings.get(IPeer.ATTR_IP_PORT) != null) fPortControl.setText(settings.get(IPeer.ATTR_IP_PORT));
+ if (settings.get(IPeer.ATTR_ID) != null) fPeerIdControl.setText(settings.get(IPeer.ATTR_ID));
+ if (settings.get(IPeer.ATTR_NAME) != null) fPeerNameControl.setText(settings.get(IPeer.ATTR_NAME));
+ }
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml b/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml index e6a5192c6..296c2584f 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml @@ -50,8 +50,26 @@ </property> </options> </viewer> + + <viewerActionBinding + viewerId="org.eclipse.tm.te.ui.views.TargetExplorer"> + <includes> + <actionExtension + pattern="org.eclipse.tm.te.ui.views.actions.*"> + </actionExtension> + </includes> + </viewerActionBinding> </extension> + <extension point="org.eclipse.ui.navigator.navigatorContent"> + <actionProvider + class="org.eclipse.tm.te.ui.views.internal.actions.NewActionProvider" + id="org.eclipse.tm.te.ui.views.actions.NewActionProvider"> + <enablement> + </enablement> + </actionProvider> + </extension> + <!-- View contributions --> <extension point="org.eclipse.ui.views"> <category diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/actions/NewActionProvider.java b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/actions/NewActionProvider.java new file mode 100644 index 000000000..82fdf64e0 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/actions/NewActionProvider.java @@ -0,0 +1,103 @@ +/*******************************************************************************
+ * Copyright (c) 2011 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:
+ * Uwe Stieber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.te.ui.views.internal.actions;
+
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.tm.te.ui.views.interfaces.IUIConstants;
+import org.eclipse.tm.te.ui.views.internal.nls.Messages;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
+import org.eclipse.ui.navigator.CommonActionProvider;
+import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+import org.eclipse.ui.navigator.ICommonMenuConstants;
+import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
+import org.eclipse.ui.navigator.WizardActionGroup;
+
+/**
+ * Action provider implementation providing the "New >" content menu
+ * content.
+ */
+public class NewActionProvider extends CommonActionProvider {
+ // Reference to the action showing the "Other..." dialog
+ private IWorkbenchAction fOtherDialogAction = null;
+ // Reference to the action group managing the context sensitive new wizards
+ private WizardActionGroup fNewWizardActionGroup = null;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
+ */
+ @Override
+ public void init(ICommonActionExtensionSite site) {
+ super.init(site);
+
+ if (site.getViewSite() instanceof ICommonViewerWorkbenchSite) {
+ // To initialize the actions, the workbench window instance is required
+ IWorkbenchWindow window = ((ICommonViewerWorkbenchSite)site.getViewSite()).getWorkbenchWindow();
+ // Initialize the actions
+ fOtherDialogAction = ActionFactory.NEW.create(window);
+ fNewWizardActionGroup = new WizardActionGroup(window,
+ PlatformUI.getWorkbench().getNewWizardRegistry(),
+ WizardActionGroup.TYPE_NEW,
+ site.getContentService());
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.actions.ActionGroup#dispose()
+ */
+ @Override
+ public void dispose() {
+ if (fOtherDialogAction != null) {
+ fOtherDialogAction.dispose();
+ fOtherDialogAction = null;
+ }
+ if (fNewWizardActionGroup != null) {
+ fNewWizardActionGroup.dispose();
+ fNewWizardActionGroup = null;
+ }
+ super.dispose();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.action.IMenuManager)
+ */
+ @Override
+ public void fillContextMenu(IMenuManager menu) {
+ // If none of the actions got created, there is nothing to do here
+ if (fOtherDialogAction == null && fNewWizardActionGroup == null) {
+ return;
+ }
+
+ // Create the new sub menu
+ IMenuManager newMenu = new MenuManager(Messages.NewActionProvider_NewMenu_label, IUIConstants.ID_EXPLORER + ".menu.new"); //$NON-NLS-1$
+
+ // Add the context sensitive wizards (commonWizard element)
+ if (fNewWizardActionGroup != null) {
+ fNewWizardActionGroup.setContext(getContext());
+ fNewWizardActionGroup.fillContextMenu(newMenu);
+ }
+
+ // Add the standard additions marker
+ newMenu.add(new Separator(ICommonMenuConstants.GROUP_ADDITIONS));
+
+ // Add the "Other..." dialog action
+ if (fOtherDialogAction != null) {
+ newMenu.add(new Separator());
+ newMenu.add(fOtherDialogAction);
+ }
+
+ // The menu will be appended after the GROUP_NEW group.
+ menu.insertAfter(ICommonMenuConstants.GROUP_NEW, newMenu);
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.java b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.java index 5a0520bb9..c82162003 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.java +++ b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.java @@ -30,4 +30,6 @@ public class Messages extends NLS { // **** Declare externalized string id's down here ***** public static String PropertiesCommandHandler_error_initPartFailed; + + public static String NewActionProvider_NewMenu_label; } diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.properties index c88578ab4..d437b577f 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.properties +++ b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/internal/nls/Messages.properties @@ -4,3 +4,7 @@ # PropertiesCommandHandler_error_initPartFailed=Failed to initialize the Target Explorer details editor. + +# ***** Action Provider ***** + +NewActionProvider_NewMenu_label=&New diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tm.te.ui/META-INF/MANIFEST.MF index e1ff19a51..0f776b4e0 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tm.te.ui/META-INF/MANIFEST.MF @@ -8,7 +8,8 @@ Bundle-Vendor: %providerName Require-Bundle: org.eclipse.core.runtime;bundle-version="3.6.0", org.eclipse.core.expressions;bundle-version="3.4.200", org.eclipse.ui;bundle-version="3.6.2", - org.eclipse.ui.forms;bundle-version="3.5.2" + org.eclipse.ui.forms;bundle-version="3.5.2", + org.eclipse.help;bundle-version="3.5.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin @@ -20,4 +21,6 @@ Export-Package: org.eclipse.tm.te.ui;version="1.0.0", org.eclipse.tm.te.ui.nls;version="1.0.0", org.eclipse.tm.te.ui.tables;version="1.0.0", org.eclipse.tm.te.ui.tables.properties;version="1.0.0", - org.eclipse.tm.te.ui.trees;version="1.0.0" + org.eclipse.tm.te.ui.trees;version="1.0.0", + org.eclipse.tm.te.ui.wizards;version="1.0.0", + org.eclipse.tm.te.ui.wizards.pages;version="1.0.0" diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui/build.properties b/target_explorer/plugins/org.eclipse.tm.te.ui/build.properties index aa1a00826..30b2fc40b 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui/build.properties +++ b/target_explorer/plugins/org.eclipse.tm.te.ui/build.properties @@ -2,4 +2,5 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ - plugin.properties + plugin.properties,\ + plugin.xml diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui/plugin.properties b/target_explorer/plugins/org.eclipse.tm.te.ui/plugin.properties index 9007e2197..73ddc751a 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui/plugin.properties +++ b/target_explorer/plugins/org.eclipse.tm.te.ui/plugin.properties @@ -10,3 +10,7 @@ pluginName = Target Explorer, Common UI Controls and Helper providerName = Eclipse.org + +# ***** Wizards ***** + +NewWizards.category.name=Target Explorer diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tm.te.ui/plugin.xml new file mode 100644 index 000000000..28b9fa9eb --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tm.te.ui/plugin.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+<!-- New wizard contributions -->
+
+ <extension point="org.eclipse.ui.newWizards">
+ <category
+ id="org.eclipse.tm.te.ui.newWizards.category"
+ name="%NewWizards.category.name">
+ </category>
+ </extension>
+
+</plugin>
diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui/src/org/eclipse/tm/te/ui/wizards/AbstractWizard.java b/target_explorer/plugins/org.eclipse.tm.te.ui/src/org/eclipse/tm/te/ui/wizards/AbstractWizard.java new file mode 100644 index 000000000..8d40041ed --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tm.te.ui/src/org/eclipse/tm/te/ui/wizards/AbstractWizard.java @@ -0,0 +1,81 @@ +/*******************************************************************************
+ * Copyright (c) 2011 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:
+ * Uwe Stieber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.te.ui.wizards;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.tm.te.ui.activator.UIPlugin;
+
+/**
+ * An abstract wizard implementation.
+ * <p>
+ * This wizard implementation is adding dialog settings management.
+ */
+public abstract class AbstractWizard extends Wizard {
+ // A marker to remember if the dialog settings got
+ // initialized for this wizard
+ private boolean fDialogSettingsInitialized = false;
+
+ /**
+ * Initialize the dialog settings and associate them with the wizard.
+ */
+ private final void initializeDialogSettings() {
+ // Get the root dialog settings
+ IDialogSettings rootSettings = getRootDialogSettings();
+ // Get the wizards dialog settings section
+ IDialogSettings section = rootSettings.getSection(getWizardSectionName());
+ if (section == null) {
+ // The section does not exist -> create it
+ section = rootSettings.addNewSection(getWizardSectionName());
+ }
+ // Push the section to the wizard
+ setDialogSettings(section);
+ // Mark the dialog settings initialized
+ fDialogSettingsInitialized = true;
+ }
+
+ /**
+ * Returns the root dialog settings.
+ * <p>
+ * Typically, this are the dialog settings of the parent bundle. The
+ * default implementation returns the dialog settings of the bundle
+ * "<code>org.eclipse.tm.te.ui</code>". Overwrite to return
+ * different root dialog settings.
+ *
+ * @return The root dialog settings.
+ */
+ protected IDialogSettings getRootDialogSettings() {
+ return UIPlugin.getDefault().getDialogSettings();
+ }
+
+ /**
+ * Returns the name of the wizards associated dialog settings
+ * section.
+ * <p>
+ * The default implementation returns the simple name of the
+ * implementation class.
+ *
+ * @return The name of the wizards dialog settings section.
+ */
+ protected String getWizardSectionName() {
+ return getClass().getSimpleName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.wizard.Wizard#getDialogSettings()
+ */
+ @Override
+ public IDialogSettings getDialogSettings() {
+ if (!fDialogSettingsInitialized) {
+ initializeDialogSettings();
+ }
+ return super.getDialogSettings();
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui/src/org/eclipse/tm/te/ui/wizards/pages/AbstractWizardPage.java b/target_explorer/plugins/org.eclipse.tm.te.ui/src/org/eclipse/tm/te/ui/wizards/pages/AbstractWizardPage.java new file mode 100644 index 000000000..69b295540 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tm.te.ui/src/org/eclipse/tm/te/ui/wizards/pages/AbstractWizardPage.java @@ -0,0 +1,103 @@ +/*******************************************************************************
+ * Copyright (c) 2011 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:
+ * Uwe Stieber (Wind River) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tm.te.ui.wizards.pages;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * An abstract common wizard page implementation.
+ * <p>
+ * This wizard page implementation is adding control history management
+ * and link the page with the context help system.
+ */
+public abstract class AbstractWizardPage extends WizardPage {
+ // The context help id of the wizard page
+ private String fContextHelpId = null;
+
+ /**
+ * Constructor.
+ *
+ * @param pageName The page name. Must not be <code>null</code>.
+ */
+ public AbstractWizardPage(String pageName) {
+ super(pageName);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param pageName The page name. Must not be <code>null</code>.
+ * @param title The wizard page title or <code>null</code>.
+ * @param titleImage The wizard page title image or <code>null</code>.
+ */
+ public AbstractWizardPage(String pageName, String title, ImageDescriptor titleImage) {
+ super(pageName, title, titleImage);
+ }
+
+ /**
+ * Set the wizard page context help id.
+ * <p>
+ * If set to non <code>null</code>, than the help id is associated
+ * with the pages control once subclasses calls {@link #setControl(org.eclipse.swt.widgets.Control)}.
+ *
+ * @param contextHelpId The context help id or <code>null</code> if none.
+ */
+ protected final void setContextHelpId(String contextHelpId) {
+ fContextHelpId = contextHelpId;
+ }
+
+ /**
+ * Returns the wizard page context help id.
+ *
+ * @return The context help id or <code>null</code> if none.
+ */
+ protected final String getContextHelpId() {
+ return fContextHelpId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.DialogPage#performHelp()
+ */
+ @Override
+ public void performHelp() {
+ String contextHelpId = getContextHelpId();
+ if (contextHelpId != null) {
+ PlatformUI.getWorkbench().getHelpSystem().displayHelp(contextHelpId);
+ }
+ }
+
+ /**
+ * Saves the widget history of all UI elements of the page.
+ */
+ public void saveWidgetValues() {
+ }
+
+ /**
+ * Restores the widget history of all UI elements of the page.
+ */
+ public void restoreWidgetValues() {
+ }
+
+ /**
+ * Validates the page status.
+ * <p>
+ * If necessary, set corresponding messages and message types to signal if some
+ * control on the page needs attention.
+ * <p>
+ * Depending on the outcome of the page data validation, call {@link WizardPage#setPageComplete(boolean)}
+ * with either <code>true</code> or <code>false</code> to signal if the wizard
+ * can finish given the current page data or not.
+ */
+ public void validatePage() {
+ }
+
+}
|