diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/.ratings b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/.ratings index ff2e522a03fc37676486e55c65dafe04b28011ce..6b3b5a6ac7188bce74821b6cb9f1bcc4244a8912 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/.ratings +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/.ratings @@ -1,4 +1,4 @@ -ConnectionCompositorBase.java 692689b535d7136acab2ab67a015f70809e64b6b GREEN +ConnectionCompositorBase.java 7b62fa0b5c6ac59ee4b3a76e9fd2ed2d2c0b2243 YELLOW ConnectorCompositorBase.java 0264edd4034da7187d1dbdf35a674c7067adf3cd GREEN ConnectorConnectionCompositorBase.java eed310a4710492b7ce3bc302c3db4e5c40f4d817 GREEN ConnectorHierarchicElementConnectionCompositorBase.java 7a8e4acf235d5eb006c859056cce89fbb0aac05d GREEN diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/ConnectionCompositorBase.java b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/ConnectionCompositorBase.java index 692689b535d7136acab2ab67a015f70809e64b6b..7b62fa0b5c6ac59ee4b3a76e9fd2ed2d2c0b2243 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/ConnectionCompositorBase.java +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/compose/ConnectionCompositorBase.java @@ -70,17 +70,32 @@ public abstract class ConnectionCompositorBase<HE extends IHierarchicElement, S @Override public boolean reconnect(EObject connection, S source, T target, IConnectionCompositionContext context) { - // TODO (FH): https://af3.fortiss.org/issues/390 - // implement reconnect + // This base implementation can only reconnect target connections. See canReconnect(...). + if(connection instanceof IConnection && target instanceof IConnector) { + ((IConnection)connection).setTarget((IConnector)target); + + return true; + } + return false; } /** {@inheritDoc} */ + @SuppressWarnings("unchecked") @Override public boolean canReconnect(EObject connection, S source, T target, IConnectionCompositionContext context) { - // TODO (FH): https://af3.fortiss.org/issues/390 - // implement reconnect + EObject parent = connection.eContainer(); + // This base implementation does only reconnect the connection target, since for a + // reconnection of the connection-source, the usual canConnect(...) implementations will not + // be applicable. (This is due to the fact, that the target port will be connected already + // when reconnecting the source.) + // Overwrite canReconnect() and reconnect() to implement a different behavior. + if(parent instanceof IHierarchicElement && connection instanceof IConnection && + ((IConnection)connection).getSource() == source) { + return canConnect(source, target, (HE)parent, context); + } + return false; }