diff options
author | Tobias Schwarz | 2014-10-23 07:55:27 +0000 |
---|---|---|
committer | Tobias Schwarz | 2014-10-23 08:44:21 +0000 |
commit | 0fccccbe002a3011ea6b7e34c700f32483dae4f3 (patch) | |
tree | 342bd95a16b8845498e9b9c472161bb79353dd9f /target_explorer/plugins | |
parent | 98bffb4478501666b7e068a7312c6b2beae20768 (diff) | |
download | org.eclipse.tcf-0fccccbe002a3011ea6b7e34c700f32483dae4f3.tar.gz org.eclipse.tcf-0fccccbe002a3011ea6b7e34c700f32483dae4f3.tar.xz org.eclipse.tcf-0fccccbe002a3011ea6b7e34c700f32483dae4f3.zip |
Target Explorer: rework simulator service and config panel handling
Diffstat (limited to 'target_explorer/plugins')
12 files changed, 255 insertions, 24 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerNode.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerNode.java index a77d193bd..dec6a1696 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerNode.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerNode.java @@ -350,14 +350,10 @@ public class PeerNode extends ContainerModelNode implements IPeerNode, IPeerNode */ @Override public String getPeerType() { - final AtomicReference<String> type = new AtomicReference<String>(); - Protocol.invokeAndWait(new Runnable() { - @Override - public void run() { - type.set(getPeer().getAttributes().get(IPeerProperties.PROP_TYPE)); - } - }); - return type.get(); + if (getPeer() != null) { + return getPeer().getAttributes().get(IPeerProperties.PROP_TYPE); + } + return null; } @Override diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/utils/CommonUtils.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/utils/CommonUtils.java index 0560b9a20..4e6924f10 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/utils/CommonUtils.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/utils/CommonUtils.java @@ -23,6 +23,24 @@ import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode; */ public final class CommonUtils { + public static String getType(IPeerNode peerNode) { + if (peerNode != null) { + return peerNode.getPeerType(); + } + return null; + } + + public static String getType(IPeer peer) { + if (peer != null) { + return peer.getAttributes().get(IPeerProperties.PROP_TYPE); + } + return null; + } + + public static String getType(IPropertiesContainer props) { + return props != null ? props.getStringProperty(IPeerProperties.PROP_TYPE) : null; + } + public static String getSubType(IPeerNode peerNode) { IPeer peer = peerNode.getPeer(); return getSubType(peer); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/PeerLabelProviderDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/PeerLabelProviderDelegate.java index a4252d97b..ab1bcb5e1 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/PeerLabelProviderDelegate.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/navigator/PeerLabelProviderDelegate.java @@ -33,7 +33,7 @@ import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin; import org.eclipse.tcf.te.tcf.ui.internal.ImageConsts; import org.eclipse.tcf.te.tcf.ui.navigator.images.PeerNodeImageDescriptor; import org.eclipse.tcf.te.tcf.ui.nls.Messages; -import org.eclipse.tcf.te.ui.interfaces.services.ISimulatorServiceUIDelegate; +import org.eclipse.tcf.te.ui.controls.interfaces.ISimulatorServiceUIDelegate; import org.eclipse.tcf.te.ui.jface.images.AbstractImageDescriptor; import org.eclipse.tcf.te.ui.tables.properties.NodePropertiesTableTableNode; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseControl.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseControl.java index 16c8c0789..cc8e69ce1 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseControl.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseControl.java @@ -196,6 +196,16 @@ public class BaseControl extends PlatformObject implements IValidatable { return IMessageProvider.INFORMATION; } + protected String getDialogSettingsSectionName() { + String sectionName = this.getClass().getSimpleName(); + Class<?> enclosing = this.getClass().getEnclosingClass(); + while ((sectionName == null || sectionName.trim().length() == 0) && enclosing != null) { + sectionName = enclosing.getSimpleName(); + enclosing = this.getClass().getEnclosingClass(); + } + return sectionName; + } + /** * Returns the dialog settings to use to save and restore control specific * widget values. @@ -211,12 +221,7 @@ public class BaseControl extends PlatformObject implements IValidatable { Assert.isNotNull(parentSection); // Store the settings of the control within it's own section. - String sectionName = this.getClass().getSimpleName(); - Class<?> enclosing = this.getClass().getEnclosingClass(); - while ((sectionName == null || sectionName.trim().length() == 0) && enclosing != null) { - sectionName = enclosing.getSimpleName(); - enclosing = this.getClass().getEnclosingClass(); - } + String sectionName = getDialogSettingsSectionName(); IDialogSettings section = null; if (sectionName != null && sectionName.trim().length() > 0) { section = parentSection.getSection(sectionName); diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseEditBrowseTextControl.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseEditBrowseTextControl.java index 8cd197ead..4a750bd44 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseEditBrowseTextControl.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseEditBrowseTextControl.java @@ -1392,6 +1392,14 @@ public class BaseEditBrowseTextControl extends AbstractDecoratedDialogPageContro } /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.controls.BaseControl#getDialogSettingsSectionName() + */ + @Override + protected String getDialogSettingsSectionName() { + return null; + } + + /* (non-Javadoc) * @see org.eclipse.tcf.te.ui.controls.BaseControl#doRestoreWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String) */ @Override diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseWizardConfigurationPanelControl.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseWizardConfigurationPanelControl.java index bd0db2fbc..1eafe9b26 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseWizardConfigurationPanelControl.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/BaseWizardConfigurationPanelControl.java @@ -82,6 +82,14 @@ public class BaseWizardConfigurationPanelControl extends BaseDialogPageControl { public boolean dataChanged(IPropertiesContainer data, TypedEvent e) { return false; } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.controls.panels.AbstractWizardConfigurationPanel#isValid() + */ + @Override + public boolean isValid() { + return false; + } } /* (non-Javadoc) @@ -311,8 +319,10 @@ public class BaseWizardConfigurationPanelControl extends BaseDialogPageControl { if (settings != null) { IWizardConfigurationPanel configPanel = getActiveConfigurationPanel(); if (configPanel != null && !isEmptyConfigurationPanel(configPanel)) { - IDialogSettings configPanelSettings = settings.getSection(activeConfigurationPanelKey); - if (configPanelSettings == null) configPanelSettings = settings.addNewSection(activeConfigurationPanelKey); + String key = configPanel.getDialogSettingsSectionName(); + key = key != null ? key : getActiveConfigurationPanelKey(); + IDialogSettings configPanelSettings = settings.getSection(key); + if (configPanelSettings == null) configPanelSettings = settings.addNewSection(key); configPanel.doSaveWidgetValues(configPanelSettings, idPrefix); } } @@ -325,11 +335,13 @@ public class BaseWizardConfigurationPanelControl extends BaseDialogPageControl { public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) { super.doRestoreWidgetValues(settings, idPrefix); if (settings != null) { - for (String key : configurationPanels.keySet()) { - IWizardConfigurationPanel configPanel = getConfigurationPanel(key); - if (!isEmptyConfigurationPanel(configPanel)) { - IDialogSettings configPanelSettings = settings.getSection(key); - if (configPanelSettings == null) configPanelSettings = settings.addNewSection(key); + for (String panelKey : configurationPanels.keySet()) { + IWizardConfigurationPanel configPanel = getConfigurationPanel(panelKey); + if (configPanel != null && !isEmptyConfigurationPanel(configPanel)) { + String settingsKey = configPanel.getDialogSettingsSectionName(); + settingsKey = settingsKey != null ? settingsKey : panelKey; + IDialogSettings configPanelSettings = settings.getSection(settingsKey); + if (configPanelSettings == null) configPanelSettings = settings.addNewSection(settingsKey); configPanel.doRestoreWidgetValues(configPanelSettings, idPrefix); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/common/ComboSelectionControl.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/common/ComboSelectionControl.java new file mode 100644 index 000000000..09ead23ba --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/common/ComboSelectionControl.java @@ -0,0 +1,72 @@ +/******************************************************************************* + * 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.ui.controls.common; + +import org.eclipse.jface.dialogs.IDialogPage; +import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; +import org.eclipse.tcf.te.ui.controls.BaseEditBrowseTextControl; +import org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode; + +/** + * ComboSelectionControl + */ +public class ComboSelectionControl extends BaseEditBrowseTextControl implements IDataExchangeNode { + + /** + * Constructor. + * @param parentPage + */ + public ComboSelectionControl(IDialogPage parentPage) { + super(parentPage); + setHasHistory(true); + setReadOnly(true); + setIsGroup(false); + setHideBrowseButton(true); + } + + protected String getPropertiesKey() { + return "Selection"; //$NON-NLS-1$ + } + + protected void setSelectedText(String text) { + setEditFieldControlText(text); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode#setupData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void setupData(IPropertiesContainer data) { + setSelectedText(data.getStringProperty(getPropertiesKey())); + } + + protected String getSelectedText() { + String selection = getEditFieldControlText().trim(); + return selection.length() > 0 ? selection : null; + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode#extractData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void extractData(IPropertiesContainer data) { + data.setProperty(getPropertiesKey(), getSelectedText()); + } + + public boolean checkDataChanged(IPropertiesContainer data) { + String newValue = getSelectedText(); + if (newValue == null) { + String oldValue = data.getStringProperty(getPropertiesKey()); + return oldValue != null && !"".equals(oldValue.trim()); //$NON-NLS-1$ + } + return !data.isProperty(getPropertiesKey(), newValue); + } +} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/common/TextControl.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/common/TextControl.java new file mode 100644 index 000000000..ae3001044 --- /dev/null +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/common/TextControl.java @@ -0,0 +1,72 @@ +/******************************************************************************* + * 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.ui.controls.common; + +import org.eclipse.jface.dialogs.IDialogPage; +import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; +import org.eclipse.tcf.te.ui.controls.BaseEditBrowseTextControl; +import org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode; + +/** + * TextControl + */ +public class TextControl extends BaseEditBrowseTextControl implements IDataExchangeNode { + + /** + * Constructor. + * @param parentPage + */ + public TextControl(IDialogPage parentPage) { + super(parentPage); + setHasHistory(true); + setIsGroup(false); + setHideBrowseButton(true); + } + + + protected String getPropertiesKey() { + return "Text"; //$NON-NLS-1$ + } + + protected void setText(String text) { + setEditFieldControlText(text); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode#setupData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void setupData(IPropertiesContainer data) { + setText(data.getStringProperty(getPropertiesKey())); + } + + protected String getText() { + String selection = getEditFieldControlText().trim(); + return selection.length() > 0 ? selection : null; + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode#extractData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void extractData(IPropertiesContainer data) { + data.setProperty(getPropertiesKey(), getText()); + } + + public boolean checkDataChanged(IPropertiesContainer data) { + String newValue = getText(); + if (newValue == null) { + String oldValue = data.getStringProperty(getPropertiesKey()); + return oldValue != null && !"".equals(oldValue.trim()); //$NON-NLS-1$ + } + return !data.isProperty(getPropertiesKey(), newValue); + } +} diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/file/FileSelectionControl.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/file/FileSelectionControl.java index 5f454f4fa..36546fbaa 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/file/FileSelectionControl.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/file/FileSelectionControl.java @@ -20,10 +20,12 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; import org.eclipse.tcf.te.ui.controls.BaseDialogSelectionControl; import org.eclipse.tcf.te.ui.controls.nls.Messages; import org.eclipse.tcf.te.ui.controls.validator.FileNameValidator; import org.eclipse.tcf.te.ui.controls.validator.Validator; +import org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode; import org.osgi.framework.Bundle; @@ -33,7 +35,7 @@ import org.osgi.framework.Bundle; * The control supports direct editing by the user or browsing for the file. By * default, the control has a history of recently selected files. */ -public class FileSelectionControl extends BaseDialogSelectionControl { +public class FileSelectionControl extends BaseDialogSelectionControl implements IDataExchangeNode { private String[] filterExtensions; private String[] filterNames; @@ -220,4 +222,34 @@ public class FileSelectionControl extends BaseDialogSelectionControl { return null; } + + protected String getPropertiesKey() { + return "File"; //$NON-NLS-1$ + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode#setupData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void setupData(IPropertiesContainer data) { + doApplyElementFromDialogControl(data.getStringProperty(getPropertiesKey())); + } + + /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.interfaces.data.IDataExchangeNode#extractData(org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer) + */ + @Override + public void extractData(IPropertiesContainer data) { + data.setProperty(getPropertiesKey(), new Path(doGetSelectedFile().trim()).toPortableString()); + } + + public boolean checkDataChanged(IPropertiesContainer data) { + IPath path = new Path(doGetSelectedFile()); + String newValue = path.toPortableString(); + if ("".equals(newValue)) { //$NON-NLS-1$ + String oldValue = data.getStringProperty(getPropertiesKey()); + return oldValue != null && !"".equals(oldValue.trim()); //$NON-NLS-1$ + } + return !data.isProperty(getPropertiesKey(), new Path(newValue).toPortableString()); + } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/interfaces/services/ISimulatorServiceUIDelegate.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/interfaces/ISimulatorServiceUIDelegate.java index 720b353c1..317933cbd 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui/src/org/eclipse/tcf/te/ui/interfaces/services/ISimulatorServiceUIDelegate.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/interfaces/ISimulatorServiceUIDelegate.java @@ -7,10 +7,12 @@ * Contributors: * Wind River Systems - initial API and implementation *******************************************************************************/ -package org.eclipse.tcf.te.ui.interfaces.services; +package org.eclipse.tcf.te.ui.controls.interfaces; +import org.eclipse.swt.graphics.Image; import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; import org.eclipse.tcf.te.runtime.services.interfaces.ISimulatorService; +import org.eclipse.tcf.te.ui.controls.BaseWizardConfigurationPanelControl; /** * Simulator service UI delegate. @@ -36,6 +38,8 @@ public interface ISimulatorServiceUIDelegate { */ public String getName(); + public Image getImage(); + /** * Get a description fo rthe given config. * This description is shown i.e. as tooltip of the configure button. @@ -52,4 +56,6 @@ public interface ISimulatorServiceUIDelegate { * @return The properties for ui configuartion */ public IPropertiesContainer getProperties(Object context, String config); + + public IWizardConfigurationPanel getConfigPanel(Object context, BaseWizardConfigurationPanelControl parentControl, String mode); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/interfaces/IWizardConfigurationPanel.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/interfaces/IWizardConfigurationPanel.java index d2b8ece30..305112255 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/interfaces/IWizardConfigurationPanel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/interfaces/IWizardConfigurationPanel.java @@ -68,6 +68,8 @@ public interface IWizardConfigurationPanel extends IMessageProvider { */ public boolean dataChanged(IPropertiesContainer data, TypedEvent e); + public String getDialogSettingsSectionName(); + /** * Restore the widget values plain from the given dialog settings. This method should * not fragment the given dialog settings any further. diff --git a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/panels/AbstractWizardConfigurationPanel.java b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/panels/AbstractWizardConfigurationPanel.java index 50a80b79d..8d1ef7f89 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/panels/AbstractWizardConfigurationPanel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.ui.controls/src/org/eclipse/tcf/te/ui/controls/panels/AbstractWizardConfigurationPanel.java @@ -101,6 +101,14 @@ public abstract class AbstractWizardConfigurationPanel implements IWizardConfigu } /* (non-Javadoc) + * @see org.eclipse.tcf.te.ui.controls.interfaces.IWizardConfigurationPanel#getDialogSettingsSectionName() + */ + @Override + public String getDialogSettingsSectionName() { + return null; + } + + /* (non-Javadoc) * @see org.eclipse.tcf.te.ui.controls.interfaces.IWizardConfigurationPanel#doRestoreWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String) */ @Override |