Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Schwarz2012-11-06 12:21:12 +0000
committerTobias Schwarz2012-11-06 12:21:12 +0000
commit0521f21fd2bc5c2edbdad96208a54e75f5ca65d0 (patch)
treee8df890e04fd9d37ac80f6d9b350bffe9c61c763 /target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui
parent9a54b160c879a8b69d8d2b16d7596102019956bd (diff)
downloadorg.eclipse.tcf-0521f21fd2bc5c2edbdad96208a54e75f5ca65d0.tar.gz
org.eclipse.tcf-0521f21fd2bc5c2edbdad96208a54e75f5ca65d0.tar.xz
org.eclipse.tcf-0521f21fd2bc5c2edbdad96208a54e75f5ca65d0.zip
[Target Explorer] change launch config persistence für launch config
editor pages
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/AbstractTcfLaunchTabContainerEditorPage.java159
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/MemoryMapEditorPage.java11
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/SourceLookupEditorPage.java5
3 files changed, 74 insertions, 101 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/AbstractTcfLaunchTabContainerEditorPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/AbstractTcfLaunchTabContainerEditorPage.java
index c96ddd178..efcc16e9a 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/AbstractTcfLaunchTabContainerEditorPage.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/AbstractTcfLaunchTabContainerEditorPage.java
@@ -9,49 +9,31 @@
*******************************************************************************/
package org.eclipse.tcf.te.tcf.launch.ui.editor;
-import java.util.EventObject;
-import java.util.HashMap;
-import java.util.Map;
-
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationListener;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.tcf.core.TransientPeer;
-import org.eclipse.tcf.protocol.IPeer;
-import org.eclipse.tcf.protocol.Protocol;
-import org.eclipse.tcf.te.launch.core.lm.LaunchManager;
-import org.eclipse.tcf.te.launch.core.lm.LaunchSpecification;
-import org.eclipse.tcf.te.launch.core.lm.interfaces.ILaunchSpecification;
-import org.eclipse.tcf.te.launch.core.persistence.launchcontext.LaunchContextsPersistenceDelegate;
import org.eclipse.tcf.te.launch.ui.editor.AbstractLaunchTabContainerEditorPage;
import org.eclipse.tcf.te.runtime.concurrent.util.ExecutorsUtil;
-import org.eclipse.tcf.te.runtime.events.ChangeEvent;
-import org.eclipse.tcf.te.runtime.events.EventManager;
-import org.eclipse.tcf.te.runtime.interfaces.events.IEventListener;
-import org.eclipse.tcf.te.runtime.model.interfaces.IModelNode;
import org.eclipse.tcf.te.runtime.persistence.PersistenceManager;
import org.eclipse.tcf.te.runtime.persistence.interfaces.IPersistenceDelegate;
import org.eclipse.tcf.te.runtime.services.ServiceManager;
import org.eclipse.tcf.te.runtime.services.interfaces.IPropertiesAccessService;
-import org.eclipse.tcf.te.tcf.core.peers.Peer;
-import org.eclipse.tcf.te.tcf.launch.core.interfaces.ILaunchTypes;
-import org.eclipse.tcf.te.tcf.launch.core.interfaces.IPeerModelProperties;
import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel;
-import org.eclipse.tcf.te.tcf.locator.interfaces.services.ILocatorModelUpdateService;
-import org.eclipse.tcf.te.tcf.locator.model.Model;
-import org.eclipse.tcf.te.tcf.locator.nodes.PeerRedirector;
/**
* TCF launch configuration tab container page implementation.
*/
-public abstract class AbstractTcfLaunchTabContainerEditorPage extends AbstractLaunchTabContainerEditorPage {
+public abstract class AbstractTcfLaunchTabContainerEditorPage extends AbstractLaunchTabContainerEditorPage implements ILaunchConfigurationListener {
+
+ protected ILaunchConfigurationListener launchConfigListener = null;
protected static final String PROP_LAUNCH_CONFIG_WC = "launchConfigWorkingCopy.transient.silent"; //$NON-NLS-1$
protected static final String PROP_ORIGINAL_LAUNCH_CONFIG_ATTRIBUTES = "launchConfigAttributes.transient.silent"; //$NON-NLS-1$
- private IEventListener eventListener = null;
-
/**
* Get the peer model from the editor input.
* @param input The editor input.
@@ -75,22 +57,19 @@ public abstract class AbstractTcfLaunchTabContainerEditorPage extends AbstractLa
wc = (ILaunchConfigurationWorkingCopy)service.getProperty(peerModel, PROP_LAUNCH_CONFIG_WC);
}
else {
- String launchConfigAttributes = peerModel.getPeer().getAttributes().get(IPeerModelProperties.PROP_LAUNCH_CONFIG_ATTRIBUTES);
- ILaunchSpecification spec = new LaunchSpecification(ILaunchTypes.ATTACH, ILaunchManager.DEBUG_MODE);
- LaunchContextsPersistenceDelegate.setLaunchContexts(spec, new IModelNode[]{peerModel});
+ wc = (ILaunchConfigurationWorkingCopy)Platform.getAdapterManager().getAdapter(peerModel, ILaunchConfigurationWorkingCopy.class);
+ if (wc == null) {
+ wc = (ILaunchConfigurationWorkingCopy)Platform.getAdapterManager().loadAdapter(peerModel, "org.eclipse.debug.core.ILaunchConfigurationWorkingCopy"); //$NON-NLS-1$
+ }
+ service.setProperty(peerModel, PROP_LAUNCH_CONFIG_WC, wc);
+ IPersistenceDelegate delegate = PersistenceManager.getInstance().getDelegate(wc, String.class, false);
+ String launchConfigAttributes = null;
try {
- wc = LaunchManager.getInstance().getLaunchConfiguration(spec, true).getWorkingCopy();
- LaunchContextsPersistenceDelegate.setLaunchContexts(wc, null);
- IPersistenceDelegate delegate = PersistenceManager.getInstance().getDelegate(wc, String.class, false);
- if (launchConfigAttributes != null && launchConfigAttributes.trim().length() > 0) {
- delegate.read(wc, launchConfigAttributes, null);
- }
launchConfigAttributes = (String)delegate.write(wc, String.class, null);
- service.setProperty(peerModel, PROP_ORIGINAL_LAUNCH_CONFIG_ATTRIBUTES, launchConfigAttributes);
- service.setProperty(peerModel, PROP_LAUNCH_CONFIG_WC, wc);
}
catch (Exception e) {
}
+ service.setProperty(peerModel, PROP_ORIGINAL_LAUNCH_CONFIG_ATTRIBUTES, launchConfigAttributes);
}
}
return wc;
@@ -118,30 +97,14 @@ public abstract class AbstractTcfLaunchTabContainerEditorPage extends AbstractLa
ILaunchConfigurationWorkingCopy wc = getLaunchConfig(getPeerModel(getEditorInput()));
if (wc != null && checkLaunchConfigDirty()) {
getLaunchConfigurationTab().performApply(wc);
- IPersistenceDelegate delegate = PersistenceManager.getInstance().getDelegate(wc, String.class, false);
try {
- final String launchConfigAttributes = (String)delegate.write(wc, String.class, null);
- final IPeerModel peerModel = getPeerModel(getEditorInput());
+ wc.doSave();
+ IPeerModel peerModel = getPeerModel(getEditorInput());
IPropertiesAccessService service = ServiceManager.getInstance().getService(peerModel, IPropertiesAccessService.class);
- service.setProperty(peerModel, PROP_ORIGINAL_LAUNCH_CONFIG_ATTRIBUTES, launchConfigAttributes);
- if (peerModel != null) {
- Protocol.invokeAndWait(new Runnable() {
- @Override
- public void run() {
- IPeer oldPeer = peerModel.getPeer();
- Map<String, String> attributes = new HashMap<String, String>(peerModel.getPeer().getAttributes());
- attributes.put(IPeerModelProperties.PROP_LAUNCH_CONFIG_ATTRIBUTES, launchConfigAttributes);
- IPeer newPeer = new Peer(attributes);
- if (oldPeer instanceof TransientPeer && !(oldPeer instanceof PeerRedirector || oldPeer instanceof Peer)) {
- peerModel.setProperty(org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModelProperties.PROP_INSTANCE, newPeer);
- } else {
- Model.getModel().getService(ILocatorModelUpdateService.class).mergeUserDefinedAttributes(peerModel, newPeer, false);
- }
- checkLaunchConfigDirty();
- }
- });
- return true;
- }
+ Assert.isNotNull(service);
+ service.setProperty(peerModel, PROP_LAUNCH_CONFIG_WC, null);
+ checkLaunchConfigDirty();
+ return true;
}
catch (Exception e) {
}
@@ -167,15 +130,22 @@ public abstract class AbstractTcfLaunchTabContainerEditorPage extends AbstractLa
}
catch (Exception e) {
}
-
setDirty(dirty);
+ return dirty;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.tcf.te.launch.ui.editor.AbstractLaunchTabContainerEditorPage#setDirty(boolean)
+ */
+ @Override
+ public void setDirty(boolean dirty) {
+ super.setDirty(dirty);
ExecutorsUtil.executeInUI(new Runnable() {
@Override
public void run() {
getManagedForm().dirtyStateChanged();
}
});
- return dirty;
}
/* (non-Javadoc)
@@ -184,33 +154,9 @@ public abstract class AbstractTcfLaunchTabContainerEditorPage extends AbstractLa
@Override
public void setActive(boolean active) {
super.setActive(active);
-
- if (eventListener == null) {
- eventListener = new IEventListener() {
- @Override
- public void eventFired(EventObject event) {
- if (event instanceof ChangeEvent && IPeerModelProperties.PROP_LAUNCH_CONFIG_ATTRIBUTES.equals(((ChangeEvent)event).getEventId())) {
- if (event.getSource() instanceof IPeerModel && getPeerModel(getEditorInput()).getUUID().equals(((IPeerModel)event.getSource()).getUUID())) {
- Protocol.invokeAndWait(new Runnable() {
- @Override
- public void run() {
- IPropertiesAccessService service = ServiceManager.getInstance().getService(getPeerModel(getEditorInput()), IPropertiesAccessService.class);
- Assert.isNotNull(service);
- service.setProperty(getPeerModel(getEditorInput()), PROP_LAUNCH_CONFIG_WC, null);
- service.setProperty(getPeerModel(getEditorInput()), PROP_ORIGINAL_LAUNCH_CONFIG_ATTRIBUTES, null);
- }
- });
- ExecutorsUtil.executeInUI(new Runnable() {
- @Override
- public void run() {
- setActive(isActive());
- }
- });
- }
- }
- }
- };
- EventManager.getInstance().addEventListener(eventListener, ChangeEvent.class);
+ if (active && launchConfigListener == null) {
+ launchConfigListener = this;
+ DebugPlugin.getDefault().getLaunchManager().addLaunchConfigurationListener(this);
}
}
@@ -220,10 +166,47 @@ public abstract class AbstractTcfLaunchTabContainerEditorPage extends AbstractLa
@Override
public void dispose() {
super.dispose();
- EventManager.getInstance().removeEventListener(eventListener);
IPeerModel peerModel = getPeerModel(getEditorInput());
IPropertiesAccessService service = ServiceManager.getInstance().getService(peerModel, IPropertiesAccessService.class);
service.setProperty(peerModel, PROP_ORIGINAL_LAUNCH_CONFIG_ATTRIBUTES, null);
service.setProperty(peerModel, PROP_LAUNCH_CONFIG_WC, null);
+ DebugPlugin.getDefault().getLaunchManager().removeLaunchConfigurationListener(this);
+ launchConfigListener = null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationAdded(org.eclipse.debug.core.ILaunchConfiguration)
+ */
+ @Override
+ public void launchConfigurationAdded(ILaunchConfiguration configuration) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationRemoved(org.eclipse.debug.core.ILaunchConfiguration)
+ */
+ @Override
+ public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationChanged(org.eclipse.debug.core.ILaunchConfiguration)
+ */
+ @Override
+ public void launchConfigurationChanged(ILaunchConfiguration configuration) {
+ if (!(configuration instanceof ILaunchConfigurationWorkingCopy)) {
+ IPeerModel peerModel = getPeerModel(getEditorInput());
+ IPropertiesAccessService service = ServiceManager.getInstance().getService(peerModel, IPropertiesAccessService.class);
+ ILaunchConfigurationWorkingCopy wc = (ILaunchConfigurationWorkingCopy)service.getProperty(peerModel, PROP_LAUNCH_CONFIG_WC);
+ if (wc != null && configuration.getName().equals(wc.getName())) {
+ service.setProperty(peerModel, PROP_ORIGINAL_LAUNCH_CONFIG_ATTRIBUTES, null);
+ service.setProperty(peerModel, PROP_LAUNCH_CONFIG_WC, null);
+ ExecutorsUtil.executeInUI(new Runnable() {
+ @Override
+ public void run() {
+ setActive(isActive());
+ }
+ });
+ }
+ }
}
}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/MemoryMapEditorPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/MemoryMapEditorPage.java
index 5c063930a..1785a5957 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/MemoryMapEditorPage.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/MemoryMapEditorPage.java
@@ -63,17 +63,6 @@ public class MemoryMapEditorPage extends AbstractTcfLaunchTabContainerEditorPage
}
/* (non-Javadoc)
- * @see org.eclipse.tcf.te.launch.ui.editor.AbstractLaunchTabContainerEditorPage#setActive(boolean)
- */
- @Override
- public void setActive(boolean active) {
- super.setActive(active);
- if (isActive() && ((TCFMemoryMapTab)getLaunchConfigurationTab()).updateContext()) {
- ((TCFMemoryMapTab)getLaunchConfigurationTab()).initializeFrom(getLaunchConfig(getPeerModel(getEditorInput())));
- }
- }
-
- /* (non-Javadoc)
* @see org.eclipse.tcf.te.tcf.launch.ui.editor.AbstractTcfLaunchTabContainerEditorPage#dispose()
*/
@Override
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/SourceLookupEditorPage.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/SourceLookupEditorPage.java
index d16a12c8e..b9e75bde2 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/SourceLookupEditorPage.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.launch.ui/src/org/eclipse/tcf/te/tcf/launch/ui/editor/SourceLookupEditorPage.java
@@ -9,8 +9,8 @@
*******************************************************************************/
package org.eclipse.tcf.te.tcf.launch.ui.editor;
+import org.eclipse.debug.internal.ui.sourcelookup.SourceLookupPanel;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
-import org.eclipse.debug.ui.sourcelookup.SourceLookupTab;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
@@ -18,6 +18,7 @@ import org.eclipse.swt.widgets.Composite;
/**
* Source lookup launch configuration tab container page implementation.
*/
+@SuppressWarnings("restriction")
public class SourceLookupEditorPage extends AbstractTcfLaunchTabContainerEditorPage {
/* (non-Javadoc)
@@ -25,7 +26,7 @@ public class SourceLookupEditorPage extends AbstractTcfLaunchTabContainerEditorP
*/
@Override
protected AbstractLaunchConfigurationTab createLaunchConfigurationTab() {
- return new SourceLookupTab() {
+ return new SourceLookupPanel() {
@Override
public void createControl(Composite parent) {
super.createControl(parent);

Back to the top