diff options
author | Uwe Stieber | 2012-02-12 08:56:10 +0000 |
---|---|---|
committer | Uwe Stieber | 2012-02-12 08:56:10 +0000 |
commit | fa2c1e67395a966938100d3f3d55274629a14e83 (patch) | |
tree | d259960f424ce2b1c40eadb359f5f5d90b0b8a17 | |
parent | 0d51474334c863a0731c54715ee73bfaaf8cf5cd (diff) | |
download | org.eclipse.tcf-fa2c1e67395a966938100d3f3d55274629a14e83.tar.gz org.eclipse.tcf-fa2c1e67395a966938100d3f3d55274629a14e83.tar.xz org.eclipse.tcf-fa2c1e67395a966938100d3f3d55274629a14e83.zip |
Target Explorer: Peer model node to inherit from ContainerModelNode
15 files changed, 28 insertions, 50 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java b/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java index 35ea1dfbd..deb6ca238 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.runtime.model/src/org/eclipse/tcf/te/runtime/model/ModelNode.java @@ -40,6 +40,10 @@ public class ModelNode extends PropertiesContainer implements IModelNode, IModel // Flag to control if property change events are suppressed // until the model node is added to a parent container model node. protected boolean suppressEventsOnNullParent = true; + // Flag to control if the node parent can change after set + // to a non-null value. Default is that the node parent cannot + // change after set to a non-null value. + protected boolean allowSetParentOnNonNullParent = false; /** * Constructor. @@ -79,7 +83,7 @@ public class ModelNode extends PropertiesContainer implements IModelNode, IModel @Override public final void setParent(IContainerModelNode parent) { Assert.isTrue(checkThreadAccess(), "Illegal Thread Access"); //$NON-NLS-1$ - if (this.parent != null) { + if (this.parent != null && !allowSetParentOnNonNullParent) { throw new IllegalStateException("Model node already associated with a parent container model node!"); //$NON-NLS-1$ } this.parent = parent; diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem/META-INF/MANIFEST.MF index 7781e46d8..9ca0037d8 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem/META-INF/MANIFEST.MF @@ -9,6 +9,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0", org.eclipse.ui.navigator;bundle-version="3.5.100", org.eclipse.tcf.core;bundle-version="1.0.0", org.eclipse.tcf.te.runtime;bundle-version="1.0.0", + org.eclipse.tcf.te.runtime.model;bundle-version="1.0.0", org.eclipse.tcf.te.tcf.core;bundle-version="1.0.0", org.eclipse.tcf.te.ui;bundle-version="1.0.0", org.eclipse.tcf.te.ui.forms;bundle-version="1.0.0", diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/META-INF/MANIFEST.MF index 660f4af03..6f411df29 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/META-INF/MANIFEST.MF @@ -10,6 +10,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0", org.eclipse.tcf.core;bundle-version="1.0.0", org.eclipse.tcf.te.tcf.core;bundle-version="1.0.0", org.eclipse.tcf.te.runtime;bundle-version="1.0.0", + org.eclipse.tcf.te.runtime.model;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.persistence;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.services;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/ScannerRunnable.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/ScannerRunnable.java index c289d8ddc..97fe58346 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/ScannerRunnable.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/ScannerRunnable.java @@ -175,7 +175,7 @@ public class ScannerRunnable implements Runnable, IChannel.IChannelListener { if (peerNode == null) { // Not yet known -> add it peerNode = new PeerModel(model, peer); - peerNode.setParentNode(ScannerRunnable.this.peerNode); + peerNode.setParent(ScannerRunnable.this.peerNode); // Validate the peer node before adding peerNode = model.validateChildPeerNodeForAdd(peerNode); if (peerNode != null) { @@ -187,7 +187,7 @@ public class ScannerRunnable implements Runnable, IChannel.IChannelListener { } } else { // The parent node should be set and match - Assert.isTrue(peerNode.getParentNode() != null && peerNode.getParentNode().equals(ScannerRunnable.this.peerNode)); + Assert.isTrue(peerNode.getParent(IPeerModel.class) != null && peerNode.getParent(IPeerModel.class).equals(ScannerRunnable.this.peerNode)); // Peer node found, update the peer instance peerNode.setProperty(IPeerModelProperties.PROP_INSTANCE, peer); // And remove it from the old child list diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/interfaces/nodes/IPeerModel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/interfaces/nodes/IPeerModel.java index 713ad32f6..1b324ad9d 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/interfaces/nodes/IPeerModel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/interfaces/nodes/IPeerModel.java @@ -10,7 +10,7 @@ package org.eclipse.tcf.te.tcf.locator.interfaces.nodes; import org.eclipse.tcf.protocol.IPeer; -import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; +import org.eclipse.tcf.te.runtime.model.interfaces.IContainerModelNode; /** * The peer model is an extension to the TCF peer representation, implementing the {@link IPeer} @@ -19,7 +19,7 @@ import org.eclipse.tcf.te.runtime.interfaces.properties.IPropertiesContainer; * <p> * <b>Note:</b> Read and write access to the peer model must happen within the TCF dispatch thread. */ -public interface IPeerModel extends IPropertiesContainer { +public interface IPeerModel extends IContainerModelNode { /** * Returns the parent locator model instance. @@ -54,18 +54,4 @@ public interface IPeerModel extends IPropertiesContainer { * @return <code>True</code> if the peer attributes are complete, <code>false</code> otherwise. */ public boolean isComplete(); - - /** - * Sets the parent peer model node. - * - * @param node The parent peer model node or <code>null</code>. - */ - public void setParentNode(IPeerModel node); - - /** - * Returns the parent peer model node. - * - * @return The parent peer model node or <code>null</code>. - */ - public IPeerModel getParentNode(); } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/LocatorModel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/LocatorModel.java index 36fc9fb2a..44ff1c2ef 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/LocatorModel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/LocatorModel.java @@ -472,7 +472,7 @@ public class LocatorModel extends PlatformObject implements ILocatorModel { // Determine the parent node. If null, the child node is invalid // and cannot be added - final IPeerModel parent = node.getParentNode(); + final IPeerModel parent = node.getParent(IPeerModel.class); if (parent == null) return null; return validateChildPeerNodeForAdd(parent, node); @@ -505,8 +505,8 @@ public class LocatorModel extends PlatformObject implements ILocatorModel { // If the parent node is child node by itself, validate the // child node against the parent parent node. - if (parent.getParentNode() != null) { - IPeerModel parentParentNode = parent.getParentNode(); + if (parent.getParent(IPeerModel.class) != null) { + IPeerModel parentParentNode = parent.getParent(IPeerModel.class); if (doValidateChildPeerNodeForAdd(parentParentNode, node) == null) { return null; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerModel.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerModel.java index 8129e5a6d..75c6d362a 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerModel.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/nodes/PeerModel.java @@ -16,7 +16,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.tcf.protocol.IPeer; import org.eclipse.tcf.protocol.Protocol; import org.eclipse.tcf.te.runtime.interfaces.workingsets.IWorkingSetElement; -import org.eclipse.tcf.te.runtime.properties.PropertiesContainer; +import org.eclipse.tcf.te.runtime.model.ContainerModelNode; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.ILocatorModel; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel; import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModelProperties; @@ -25,11 +25,9 @@ import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModelProperties; /** * Default peer model implementation. */ -public class PeerModel extends PropertiesContainer implements IPeerModel, IWorkingSetElement { +public class PeerModel extends ContainerModelNode implements IPeerModel, IWorkingSetElement { // Reference to the parent locator model private final ILocatorModel model; - // Reference to the parent peer model node - private IPeerModel node; // Reference to the peer id (cached for performance optimization) private String peerId; @@ -54,6 +52,9 @@ public class PeerModel extends PropertiesContainer implements IPeerModel, IWorki peerId = peer.getID(); Assert.isNotNull(peerId); + // Peer model nodes can change the node parent at any time + allowSetParentOnNonNullParent = true; + // Enable change events setChangeEventsEnabled(true); } @@ -99,24 +100,6 @@ public class PeerModel extends PropertiesContainer implements IPeerModel, IWorki } /* (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel#setParentNode(org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel) - */ - @Override - public void setParentNode(IPeerModel node) { - Assert.isTrue(checkThreadAccess(), "Illegal Thread Access"); //$NON-NLS-1$ - this.node = node; - } - - /* (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel#getParentNode() - */ - @Override - public IPeerModel getParentNode() { - Assert.isTrue(checkThreadAccess(), "Illegal Thread Access"); //$NON-NLS-1$ - return node; - } - - /* (non-Javadoc) * @see org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerModel#isComplete() */ @Override diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelRefreshService.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelRefreshService.java index cd66e8680..a3e271f19 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelRefreshService.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelRefreshService.java @@ -293,7 +293,7 @@ public class LocatorModelRefreshService extends AbstractLocatorModelService impl IPeerModel proxy = model.getService(ILocatorModelLookupService.class).lkupPeerModelById(proxyPeerId); Assert.isNotNull(proxy); - peerModel.setParentNode(proxy); + peerModel.setParent(proxy); model.getService(ILocatorModelUpdateService.class).addChild(peerModel); } } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelUpdateService.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelUpdateService.java index 400aa8b7e..07509879f 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelUpdateService.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.locator/src/org/eclipse/tcf/te/tcf/locator/services/LocatorModelUpdateService.java @@ -125,7 +125,7 @@ public class LocatorModelUpdateService extends AbstractLocatorModelService imple Assert.isTrue(Protocol.isDispatchThread(), "Illegal Thread Access"); //$NON-NLS-1$ // Determine the parent node - final IPeerModel parent = child.getParentNode(); + final IPeerModel parent = child.getParent(IPeerModel.class); if (parent == null) return; // Determine the peer id of the parent @@ -152,7 +152,7 @@ public class LocatorModelUpdateService extends AbstractLocatorModelService imple Assert.isTrue(Protocol.isDispatchThread(), "Illegal Thread Access"); //$NON-NLS-1$ // Determine the parent node - final IPeerModel parent = child.getParentNode(); + final IPeerModel parent = child.getParent(IPeerModel.class); if (parent == null) return; // Determine the peer id of the parent diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/META-INF/MANIFEST.MF index 6290bb6bf..3905729de 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/META-INF/MANIFEST.MF @@ -8,6 +8,7 @@ Bundle-Vendor: %providerName Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0", org.eclipse.tcf.core;bundle-version="1.0.0", org.eclipse.tcf.te.runtime;bundle-version="1.0.0", + org.eclipse.tcf.te.runtime.model;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.services;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.statushandler;bundle-version="1.0.0", org.eclipse.tcf.te.core;bundle-version="1.0.0", diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui.views/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui.views/META-INF/MANIFEST.MF index 13645f47c..2e2d33281 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui.views/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui.views/META-INF/MANIFEST.MF @@ -11,6 +11,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0", org.eclipse.tcf.core;bundle-version="1.0.0", org.eclipse.tcf.te.tcf.locator;bundle-version="1.0.0", org.eclipse.tcf.te.runtime;bundle-version="1.0.0", + org.eclipse.tcf.te.runtime.model;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.statushandler;bundle-version="1.0.0", org.eclipse.tcf.te.ui;bundle-version="1.0.0", org.eclipse.tcf.te.ui.swt;bundle-version="1.0.0", diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF index 437bdd039..b55b8247a 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/META-INF/MANIFEST.MF @@ -16,6 +16,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0", org.eclipse.tcf.te.ui.swt;bundle-version="1.0.0", org.eclipse.tcf.te.ui.views;bundle-version="1.0.0", org.eclipse.tcf.te.runtime;bundle-version="1.0.0", + org.eclipse.tcf.te.runtime.model;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.persistence;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.services;bundle-version="1.0.0", org.eclipse.tcf.te.runtime.statushandler;bundle-version="1.0.0", diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/filter/RedirectPeersFilter.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/filter/RedirectPeersFilter.java index 61d162a97..ddd75148e 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/filter/RedirectPeersFilter.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/filter/RedirectPeersFilter.java @@ -33,7 +33,7 @@ public class RedirectPeersFilter extends ViewerFilter { Runnable runnable = new Runnable() {
@Override
public void run() {
- parent.set(((IPeerModel)element).getParentNode());
+ parent.set(((IPeerModel)element).getParent(IPeerModel.class));
}
};
Assert.isTrue(!Protocol.isDispatchThread());
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/RedirectHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/RedirectHandler.java index 0bc7c1514..fc7e9b197 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/RedirectHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/RedirectHandler.java @@ -159,7 +159,7 @@ public class RedirectHandler extends AbstractHandler { peerModel.setProperty(IPeerModelProperties.PROP_INSTANCE, redirector);
// Associate proxy (parent) and peer model (child)
- peerModel.setParentNode(proxy);
+ peerModel.setParent(proxy);
Model.getModel().getService(ILocatorModelUpdateService.class).addChild(peerModel);
// Trigger a refresh of the locator model in a later dispatch cycle
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ResetRedirectHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ResetRedirectHandler.java index f81ef4ef6..86638a190 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ResetRedirectHandler.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/ResetRedirectHandler.java @@ -103,7 +103,7 @@ public class ResetRedirectHandler extends AbstractHandler { // Reset proxy (parent) and peer model (child) association
Model.getModel().getService(ILocatorModelUpdateService.class).removeChild(peerModel);
- peerModel.setParentNode(null);
+ peerModel.setParent(null);
// Trigger a refresh of the locator model in a later dispatch cycle
Protocol.invokeLater(new Runnable() {
|