diff options
author | Uwe Stieber | 2012-08-14 09:48:26 +0000 |
---|---|---|
committer | Uwe Stieber | 2012-08-14 09:49:23 +0000 |
commit | 9a80781d4c0211572076f3d8e1c0053f4071bc3f (patch) | |
tree | 6800889d16f5dce01794a62a26932718ef4ff9a1 /target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui | |
parent | 92bf484c46ac1a8a2f08f07e9d080d8e99d3b767 (diff) | |
download | org.eclipse.tcf-9a80781d4c0211572076f3d8e1c0053f4071bc3f.tar.gz org.eclipse.tcf-9a80781d4c0211572076f3d8e1c0053f4071bc3f.tar.xz org.eclipse.tcf-9a80781d4c0211572076f3d8e1c0053f4071bc3f.zip |
Target Explorer: Bug 379394 - [Terminal] Add a UI Control for setting the Terminal's encoding
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui')
-rw-r--r-- | target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/META-INF/MANIFEST.MF | 1 | ||||
-rw-r--r-- | target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/plugin.xml | 80 | ||||
-rw-r--r-- | target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/controls/TerminalsWizardConfigurationPanel.java | 151 | ||||
-rw-r--r-- | target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/launcher/TerminalsLauncherDelegate.java (renamed from target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/launcher/LauncherDelegate.java) | 165 |
4 files changed, 275 insertions, 122 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/META-INF/MANIFEST.MF index 143304e40..fd228119d 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/META-INF/MANIFEST.MF @@ -23,5 +23,6 @@ Bundle-ActivationPolicy: lazy Bundle-Localization: plugin Export-Package: org.eclipse.tcf.te.tcf.terminals.ui.activator;x-internal:=true, org.eclipse.tcf.te.tcf.terminals.ui.connector, + org.eclipse.tcf.te.tcf.terminals.ui.controls, org.eclipse.tcf.te.tcf.terminals.ui.launcher, org.eclipse.tcf.te.tcf.terminals.ui.nls;x-internal:=true diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/plugin.xml index 3f33082f5..03a38ec60 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/plugin.xml @@ -1,40 +1,40 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
-
-<!-- Terminal connector contributions -->
- <extension point="org.eclipse.tm.terminal.terminalConnectors">
- <connector
- name="%TerminalConnector.terminals"
- id="org.eclipse.tcf.te.tcf.terminals.ui.TerminalsConnector"
- hidden="true"
- class="org.eclipse.tcf.te.tcf.terminals.ui.connector.TerminalsConnector"/>
- </extension>
-
-<!-- Terminal connector type contributions -->
- <extension point="org.eclipse.tcf.te.ui.terminals.connectorTypes">
- <connectorType
- class="org.eclipse.tcf.te.tcf.terminals.ui.connector.TerminalsConnectorType"
- id="org.eclipse.tcf.te.ui.terminals.type.terminals"
- label="%TerminalsConnectorType.label">
- </connectorType>
- </extension>
-
-<!-- Terminals launcher delegate contributions -->
- <extension point="org.eclipse.tcf.te.ui.terminals.launcherDelegates">
- <delegate
- class="org.eclipse.tcf.te.tcf.terminals.ui.launcher.LauncherDelegate"
- id="org.eclipse.tcf.te.ui.terminals.launcher.tcf"
- label="%launcherDelegate.label">
- <enablement>
- <with variable="selection">
- <count value="1"/>
- <iterate operator="and" ifEmpty="false">
- <instanceof value="org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel"/>
- </iterate>
- </with>
- </enablement>
- </delegate>
- </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + +<!-- Terminal connector contributions --> + <extension point="org.eclipse.tm.terminal.terminalConnectors"> + <connector + name="%TerminalConnector.terminals" + id="org.eclipse.tcf.te.tcf.terminals.ui.TerminalsConnector" + hidden="true" + class="org.eclipse.tcf.te.tcf.terminals.ui.connector.TerminalsConnector"/> + </extension> + +<!-- Terminal connector type contributions --> + <extension point="org.eclipse.tcf.te.ui.terminals.connectorTypes"> + <connectorType + class="org.eclipse.tcf.te.tcf.terminals.ui.connector.TerminalsConnectorType" + id="org.eclipse.tcf.te.ui.terminals.type.terminals" + label="%TerminalsConnectorType.label"> + </connectorType> + </extension> + +<!-- Terminals launcher delegate contributions --> + <extension point="org.eclipse.tcf.te.ui.terminals.launcherDelegates"> + <delegate + class="org.eclipse.tcf.te.tcf.terminals.ui.launcher.TerminalsLauncherDelegate" + id="org.eclipse.tcf.te.ui.terminals.launcher.tcf" + label="%launcherDelegate.label"> + <enablement> + <with variable="selection"> + <count value="1"/> + <iterate operator="and" ifEmpty="false"> + <instanceof value="org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel"/> + </iterate> + </with> + </enablement> + </delegate> + </extension> + +</plugin> diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/controls/TerminalsWizardConfigurationPanel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/controls/TerminalsWizardConfigurationPanel.java new file mode 100644 index 000000000..fab2e09f2 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/controls/TerminalsWizardConfigurationPanel.java @@ -0,0 +1,151 @@ +/******************************************************************************* + * Copyright (c) 2012 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.terminals.ui.controls; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.TypedEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; +import org.eclipse.tcf.te.runtime.services.interfaces.constants.ITerminalsConnectorConstants; +import org.eclipse.tcf.te.ui.controls.BaseDialogPageControl; +import org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode; +import org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel; +import org.eclipse.ui.forms.widgets.FormToolkit; + +/** + * Terminals (TCF) wizard configuration panel implementation. + */ +public class TerminalsWizardConfigurationPanel extends AbstractConfigurationPanel implements IDataExchangeNode { + + /** + * Constructor. + * + * @param parentControl The parent control. Must not be <code>null</code>! + */ + public TerminalsWizardConfigurationPanel(BaseDialogPageControl parentControl) { + super(parentControl); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.controls.interfaces.IWizardConfigurationPanel#setupPanel(org.eclipse.swt.widgets.Composite, org.eclipse.ui.forms.widgets.FormToolkit) + */ + @Override + public void setupPanel(Composite parent, FormToolkit toolkit) { + Composite panel = new Composite(parent, SWT.NONE); + panel.setLayout(new GridLayout()); + GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); + panel.setLayoutData(data); + + // Create the host selection combo + if (isWithoutSelection()) createHostsUI(panel, true); + + // Create the encoding selection combo + createEncodingUI(panel, false); + + setControl(panel); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.controls.interfaces.IWizardConfigurationPanel#dataChanged(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.swt.events.TypedEvent) + */ + @Override + public boolean dataChanged(IPropertiesContainer data, TypedEvent e) { + return false; + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.wizards.interfaces.ISharedDataWizardPage#setupData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void setupData(IPropertiesContainer data) { + } + + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.wizards.interfaces.ISharedDataWizardPage#extractData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void extractData(IPropertiesContainer data) { + // set the terminal connector id for terminals (TCF) + data.setProperty(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, "org.eclipse.tcf.te.tcf.terminals.ui.TerminalsConnector"); + + // set the connector type for terminals (TCF) + data.setProperty(ITerminalsConnectorConstants.PROP_CONNECTOR_TYPE_ID, "org.eclipse.tcf.te.ui.terminals.type.terminals"); + + // Extract the encoding + data.setProperty(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding()); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#fillSettingsForHost(java.lang.String) + */ + @Override + protected void fillSettingsForHost(String host){ + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#saveSettingsForHost(boolean) + */ + @Override + protected void saveSettingsForHost(boolean add){ + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.controls.panels.AbstractWizardConfigurationPanel#isValid() + */ + @Override + public boolean isValid(){ + return isEncodingValid(); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#doSaveWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String) + */ + @Override + public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) { + Assert.isNotNull(settings); + String encoding = getEncoding(); + if (encoding != null) { + settings.put(getParentControl().prefixDialogSettingsSlotId(ITerminalsConnectorConstants.PROP_ENCODING, idPrefix), encoding); + } + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#doRestoreWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String) + */ + @Override + public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) { + Assert.isNotNull(settings); + String encoding = settings.get(getParentControl().prefixDialogSettingsSlotId(ITerminalsConnectorConstants.PROP_ENCODING, idPrefix)); + if (encoding != null && encoding.trim().length() > 0) { + setEncoding(encoding); + } + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#getHostFromSettings() + */ + @Override + protected String getHostFromSettings() { + return null; + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.panels.AbstractConfigurationPanel#isWithHostList() + */ + @Override + public boolean isWithHostList() { + return false; + } +} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/launcher/LauncherDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/launcher/TerminalsLauncherDelegate.java index 118b24bbc..b69d13f59 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/launcher/LauncherDelegate.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.terminals.ui/src/org/eclipse/tcf/te/tcf/terminals/ui/launcher/TerminalsLauncherDelegate.java @@ -1,82 +1,83 @@ -/*******************************************************************************
- * 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:
- * Wind River Systems - initial API and implementation
- *******************************************************************************/
-package org.eclipse.tcf.te.tcf.terminals.ui.launcher;
-
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.tcf.protocol.IPeer;
-import org.eclipse.tcf.protocol.Protocol;
-import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback;
-import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer;
-import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
-import org.eclipse.tcf.te.tcf.terminals.core.interfaces.launcher.ITerminalsLauncher;
-import org.eclipse.tcf.te.tcf.terminals.core.launcher.TerminalsLauncher;
-import org.eclipse.tcf.te.ui.controls.BaseDialogPageControl;
-import org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanel;
-import org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate;
-
-/**
- * Terminals launcher delegate implementation.
- */
-public class LauncherDelegate extends AbstractLauncherDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#getPanel(org.eclipse.tcf.te.ui.controls.BaseDialogPageControl)
- */
- @Override
- public IConfigurationPanel getPanel(BaseDialogPageControl parentControl) {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#needsUserConfiguration()
- */
- @Override
- public boolean needsUserConfiguration() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#execute(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback)
- */
- @Override
- public void execute(IPropertiesContainer properties, ICallback callback) {
- Assert.isNotNull(properties);
-
- // Get the selection from the properties
- ISelection selection = (ISelection)properties.getProperty("selection"); //$NON-NLS-1$
- if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
- Object element = ((IStructuredSelection)selection).getFirstElement();
- if (element instanceof IPeerModel) {
- final IPeerModel peerModel = (IPeerModel)element;
- final AtomicReference<IPeer> peer = new AtomicReference<IPeer>();
- if (Protocol.isDispatchThread()) {
- peer.set(peerModel.getPeer());
- } else {
- Protocol.invokeAndWait(new Runnable() {
- @Override
- public void run() {
- peer.set(peerModel.getPeer());
- }
- });
- }
-
- if (peer.get() != null) {
- ITerminalsLauncher launcher = new TerminalsLauncher();
- launcher.launch(peer.get(), properties, callback);
- }
- }
-
- }
- }
-}
+/******************************************************************************* + * 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: + * Wind River Systems - initial API and implementation + *******************************************************************************/ +package org.eclipse.tcf.te.tcf.terminals.ui.launcher; + +import java.util.concurrent.atomic.AtomicReference; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.tcf.protocol.IPeer; +import org.eclipse.tcf.protocol.Protocol; +import org.eclipse.tcf.te.runtime.interfaces.callback.ICallback; +import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; +import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel; +import org.eclipse.tcf.te.tcf.terminals.core.interfaces.launcher.ITerminalsLauncher; +import org.eclipse.tcf.te.tcf.terminals.core.launcher.TerminalsLauncher; +import org.eclipse.tcf.te.tcf.terminals.ui.controls.TerminalsWizardConfigurationPanel; +import org.eclipse.tcf.te.ui.controls.BaseDialogPageControl; +import org.eclipse.tcf.te.ui.terminals.interfaces.IConfigurationPanel; +import org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate; + +/** + * Terminals (TCF) launcher delegate implementation. + */ +public class TerminalsLauncherDelegate extends AbstractLauncherDelegate { + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#getPanel(org.eclipse.tcf.te.ui.controls.BaseDialogPageControl) + */ + @Override + public IConfigurationPanel getPanel(BaseDialogPageControl parentControl) { + return new TerminalsWizardConfigurationPanel(parentControl); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#needsUserConfiguration() + */ + @Override + public boolean needsUserConfiguration() { + return true; + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate#execute(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer, org.eclipse.tcf.te.runtime.interfaces.callback.ICallback) + */ + @Override + public void execute(IPropertiesContainer properties, ICallback callback) { + Assert.isNotNull(properties); + + // Get the selection from the properties + ISelection selection = (ISelection)properties.getProperty("selection"); //$NON-NLS-1$ + if (selection instanceof IStructuredSelection && !selection.isEmpty()) { + Object element = ((IStructuredSelection)selection).getFirstElement(); + if (element instanceof IPeerModel) { + final IPeerModel peerModel = (IPeerModel)element; + final AtomicReference<IPeer> peer = new AtomicReference<IPeer>(); + if (Protocol.isDispatchThread()) { + peer.set(peerModel.getPeer()); + } else { + Protocol.invokeAndWait(new Runnable() { + @Override + public void run() { + peer.set(peerModel.getPeer()); + } + }); + } + + if (peer.get() != null) { + ITerminalsLauncher launcher = new TerminalsLauncher(); + launcher.launch(peer.get(), properties, callback); + } + } + + } + } +} |