Skip to content
Snippets Groups Projects
Commit 63986b6b authored by Simon Barner's avatar Simon Barner
Browse files

- Code style (no functional change)

refs 2898
parent 1bc5e88f
No related branches found
No related tags found
No related merge requests found
...@@ -82,7 +82,7 @@ import de.cau.cs.kieler.klay.layered.properties.Properties; ...@@ -82,7 +82,7 @@ import de.cau.cs.kieler.klay.layered.properties.Properties;
* @author offtermatt, barner * @author offtermatt, barner
* @author $Author$ * @author $Author$
* @version $Rev$ * @version $Rev$
* @ConQAT.Rating YELLOW Hash: 8BE55A0C36B936EF103CD3350B857042 * @ConQAT.Rating YELLOW Hash: 36F683174E3AD8ADC2DDDC27D7C75183
*/ */
public class KielerAutoLayouter implements IAutoLayouter { public class KielerAutoLayouter implements IAutoLayouter {
...@@ -113,38 +113,40 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -113,38 +113,40 @@ public class KielerAutoLayouter implements IAutoLayouter {
boolean avUpdateEnabled = AnnotationViewPartBase.isUpdateEnabled(); boolean avUpdateEnabled = AnnotationViewPartBase.isUpdateEnabled();
AnnotationViewPartBase.setUpdateEnabled(false); AnnotationViewPartBase.setUpdateEnabled(false);
KNode parentNode = createKIELERGraph(hierarchicElement); KNode rootNode = createKIELERGraph(hierarchicElement);
KShapeLayout par = parentNode.getData(KShapeLayout.class); KShapeLayout rootNodeLayout = rootNode.getData(KShapeLayout.class);
par.setProperty(LayoutOptions.DIRECTION, Direction.RIGHT); rootNodeLayout.setProperty(LayoutOptions.DIRECTION, Direction.RIGHT);
par.setProperty(LayoutOptions.INTERACTIVE, true); rootNodeLayout.setProperty(LayoutOptions.INTERACTIVE, true);
par.setProperty(Properties.FEEDBACK_EDGES, true); rootNodeLayout.setProperty(Properties.FEEDBACK_EDGES, true);
par.setProperty(Properties.INTERACTIVE_REFERENCE_POINT, InteractiveReferencePoint.TOP_LEFT); rootNodeLayout.setProperty(Properties.INTERACTIVE_REFERENCE_POINT,
InteractiveReferencePoint.TOP_LEFT);
AbstractLayoutProvider layoutProvider = new LayeredLayoutProvider(); AbstractLayoutProvider layoutProvider = new LayeredLayoutProvider();
IKielerProgressMonitor progressMonitor = new BasicProgressMonitor(); IKielerProgressMonitor progressMonitor = new BasicProgressMonitor();
layoutProvider.doLayout(parentNode, progressMonitor); layoutProvider.doLayout(rootNode, progressMonitor);
applyLayout(parentNode, hierarchicElement); applyLayout(rootNode, hierarchicElement);
AnnotationViewPartBase.setUpdateEnabled(avUpdateEnabled); AnnotationViewPartBase.setUpdateEnabled(avUpdateEnabled);
} }
/** /**
* Rounds a given {@code float} value and decreases the value until it is a multiple of the grid * Truncates a given {@code float} value and decreases the value until it is a multiple of the
* grid
* size. * size.
* *
* @param f * @param f
* {@code float} to process * {@code float} to process
* *
* @return Given float value, rounded and aligned to the underlying grid. * @return Given float value, truncated and aligned to the underlying grid.
*/ */
private int roundSnap2Grid(float f) { private int truncateSnap2Grid(float f) {
return roundSnap2Grid(f, false); return truncateSnap2Grid(f, false);
} }
/** /**
* Rounds a given {@code float} value and aligns it the grid size. * Truncates a given {@code float} value and aligns it the grid size.
* *
* @param f * @param f
* {@code float} to process * {@code float} to process
...@@ -152,9 +154,9 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -152,9 +154,9 @@ public class KielerAutoLayouter implements IAutoLayouter {
* @param enlarge * @param enlarge
* Whether to enlarge the given value while aligning to the grid. * Whether to enlarge the given value while aligning to the grid.
* *
* @return Given float value, rounded and aligned to the underlying grid. * @return Given float value, truncated and aligned to the underlying grid.
*/ */
private int roundSnap2Grid(float f, boolean enlarge) { private int truncateSnap2Grid(float f, boolean enlarge) {
int rval = (int)f; int rval = (int)f;
final int deviationFromGrid = rval % DEFAULT_GRID_SIZE; final int deviationFromGrid = rval % DEFAULT_GRID_SIZE;
...@@ -181,30 +183,30 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -181,30 +183,30 @@ public class KielerAutoLayouter implements IAutoLayouter {
topLevelElement.runAsCommand(() -> { topLevelElement.runAsCommand(() -> {
filterBendPoints(hierarchicElement); filterBendPoints(hierarchicElement);
for(IHierarchicElement curElement : hierarchicElement.getContainedElements()) { for(IHierarchicElement element : hierarchicElement.getContainedElements()) {
KNode curNode = modelElementsToKNodes.get(curElement); KNode kNode = modelElementsToKNodes.get(element);
KShapeLayout curLayout = curNode.getData(KShapeLayout.class); KShapeLayout kNodeLayout = kNode.getData(KShapeLayout.class);
LayoutDataUtils.setNodeLayoutData((ILayoutedModelElement)curElement, LayoutDataUtils.setNodeLayoutData((ILayoutedModelElement)element,
roundSnap2Grid(curLayout.getXpos()), roundSnap2Grid(curLayout.getYpos()), truncateSnap2Grid(kNodeLayout.getXpos()),
roundSnap2Grid(curLayout.getWidth(), true), truncateSnap2Grid(kNodeLayout.getYpos()),
roundSnap2Grid(curLayout.getHeight(), true)); truncateSnap2Grid(kNodeLayout.getWidth(), true),
truncateSnap2Grid(kNodeLayout.getHeight(), true));
} }
for(Entry<IConnection, KEdge> curEntry : connectionsToKEdges) { for(Entry<IConnection, KEdge> entry : connectionsToKEdges) {
KEdge curEdge = curEntry.getValue(); KEdge kEdge = entry.getValue();
IConnection curConnection = curEntry.getKey(); IConnection connection = entry.getKey();
KEdgeLayout curLayout = curEdge.getData(KEdgeLayout.class); KEdgeLayout kEdgeLayout = kEdge.getData(KEdgeLayout.class);
for(KPoint k : curLayout.getBendPoints()) { for(KPoint kPoint : kEdgeLayout.getBendPoints()) {
LayoutDataUIUtils.addBendPointToConnection( LayoutDataUIUtils.addBendPointToConnection((ILayoutedModelElement)connection,
(ILayoutedModelElement)curConnection, roundSnap2Grid(k.getX()), truncateSnap2Grid(kPoint.getX()), truncateSnap2Grid(kPoint.getY()));
roundSnap2Grid(k.getY()));
} }
} }
setPositionsForPorts(outboundConnectorsToKPorts); setPositionsForConnectors(outboundConnectorsToKPorts);
setPositionsForPorts(inboundConnectorsToKPorts); setPositionsForConnectors(inboundConnectorsToKPorts);
setPositionsForGlobalPorts(globalInboundConnectorsToKPorts); setPositionsForGlobalConnectors(globalInboundConnectorsToKPorts);
setPositionsForGlobalPorts(globalOutboundConnectorsToKPorts); setPositionsForGlobalConnectors(globalOutboundConnectorsToKPorts);
}); });
} }
...@@ -213,17 +215,17 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -213,17 +215,17 @@ public class KielerAutoLayouter implements IAutoLayouter {
* {@link IConnector}s. Global means in this case that the {@link IConnector}s do not have a * {@link IConnector}s. Global means in this case that the {@link IConnector}s do not have a
* corresponding node, i.e. because they contain connections to a higher-level model. * corresponding node, i.e. because they contain connections to a higher-level model.
* *
* @param globalPorts * @param globalConnectors
* A bijection from {@link IConnector}s to {@link KPort}s * A bijection from {@link IConnector}s to {@link KPort}s
*/ */
private void setPositionsForGlobalPorts(EMap<IConnector, KPort> globalPorts) { private void setPositionsForGlobalConnectors(EMap<IConnector, KPort> globalConnectors) {
for(Entry<IConnector, KPort> i : globalPorts) { for(Entry<IConnector, KPort> entry : globalConnectors) {
IConnector port = i.getKey(); IConnector connector = entry.getKey();
KPort p = i.getValue(); KPort kPort = entry.getValue();
KNode temp = p.getNode(); KNode tempNode = kPort.getNode();
KShapeLayout lay = temp.getData(KShapeLayout.class); KShapeLayout kLayout = tempNode.getData(KShapeLayout.class);
setNodePosition((ILayoutedModelElement)port, roundSnap2Grid(lay.getXpos()), setNodePosition((ILayoutedModelElement)connector, truncateSnap2Grid(kLayout.getXpos()),
roundSnap2Grid(lay.getYpos())); truncateSnap2Grid(kLayout.getYpos()));
} }
} }
...@@ -232,15 +234,15 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -232,15 +234,15 @@ public class KielerAutoLayouter implements IAutoLayouter {
* {@link IConnector}s must have corresponding nodes, i.e. they can not contain an * {@link IConnector}s must have corresponding nodes, i.e. they can not contain an
* {@link IConnection} to a higher-level model. * {@link IConnection} to a higher-level model.
* *
* @param ports * @param connectors
* A bijection from {@link IConnector}s to {@link KPort}s. * A bijection from {@link IConnector}s to {@link KPort}s.
*/ */
private void setPositionsForPorts(EMap<IConnector, KPort> ports) { private void setPositionsForConnectors(EMap<IConnector, KPort> connectors) {
for(Entry<IConnector, KPort> ic : ports) { for(Entry<IConnector, KPort> entry : connectors) {
KPort kp = ic.getValue(); KPort kPort = entry.getValue();
IConnector port = ic.getKey(); IConnector connector = entry.getKey();
KShapeLayout portLayout = kp.getData(KShapeLayout.class); KShapeLayout kLayout = kPort.getData(KShapeLayout.class);
PortSide side = portLayout.getProperty(LayoutOptions.PORT_SIDE); PortSide side = kLayout.getProperty(LayoutOptions.PORT_SIDE);
EOrientation orientation = null; EOrientation orientation = null;
switch(side) { switch(side) {
case NORTH: case NORTH:
...@@ -257,8 +259,8 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -257,8 +259,8 @@ public class KielerAutoLayouter implements IAutoLayouter {
break; break;
} }
setStickyConnectorLayoutData((ILayoutedModelElement)port, orientation, setStickyConnectorLayoutData((ILayoutedModelElement)connector, orientation,
roundSnap2Grid((portLayout.getYpos()))); truncateSnap2Grid((kLayout.getYpos())));
} }
} }
...@@ -268,12 +270,10 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -268,12 +270,10 @@ public class KielerAutoLayouter implements IAutoLayouter {
* @param hierarchicElement * @param hierarchicElement
*/ */
private void filterBendPoints(IHierarchicElement hierarchicElement) { private void filterBendPoints(IHierarchicElement hierarchicElement) {
EList<IConnection> clears = hierarchicElement.getConnections(); for(IConnection connection : hierarchicElement.getConnections()) {
for(IConnection c : clears) { for(ILayoutData layoutData : ((ILayoutedModelElement)connection).getLayoutData()) {
EList<ILayoutData> l = ((ILayoutedModelElement)c).getLayoutData(); if(layoutData instanceof Points || layoutData instanceof PointsImpl) {
for(ILayoutData i : l) { ((Points)layoutData).getPoints().clear();
if(i instanceof Points || i instanceof PointsImpl) {
((Points)i).getPoints().clear();
} }
} }
} }
...@@ -291,7 +291,7 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -291,7 +291,7 @@ public class KielerAutoLayouter implements IAutoLayouter {
*/ */
private KNode createKIELERGraph(IHierarchicElement hierarchicElement) { private KNode createKIELERGraph(IHierarchicElement hierarchicElement) {
KNode parentNode = KimlUtil.createInitializedNode(); KNode rootNode = KimlUtil.createInitializedNode();
modelElementsToKNodes = new BasicEMap<IHierarchicElement, KNode>(); modelElementsToKNodes = new BasicEMap<IHierarchicElement, KNode>();
outboundConnectorsToKPorts = new BasicEMap<IConnector, KPort>(); outboundConnectorsToKPorts = new BasicEMap<IConnector, KPort>();
...@@ -299,98 +299,97 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -299,98 +299,97 @@ public class KielerAutoLayouter implements IAutoLayouter {
connectionsToKEdges = new BasicEMap<IConnection, KEdge>(); connectionsToKEdges = new BasicEMap<IConnection, KEdge>();
undirectedConnectorsToKPorts = new BasicEMap<IConnector, KPort>(); undirectedConnectorsToKPorts = new BasicEMap<IConnector, KPort>();
// create nodes // Create nodes
for(IHierarchicElement curElement : hierarchicElement.getContainedElements()) { for(IHierarchicElement currentChild : hierarchicElement.getContainedElements()) {
if(!(curElement instanceof ILayoutedModelElement)) { if(!(currentChild instanceof ILayoutedModelElement)) {
continue; continue;
} }
KNode curKNode = KimlUtil.createInitializedNode(); KNode kNode = KimlUtil.createInitializedNode();
KShapeLayout curLayout = curKNode.getData(KShapeLayout.class); KShapeLayout kNodeLayout = kNode.getData(KShapeLayout.class);
EList<IConnector> inputPorts = new BasicEList<IConnector>(); EList<IConnector> inputConnectors = new BasicEList<IConnector>();
EList<IConnector> outputPorts = new BasicEList<IConnector>(); EList<IConnector> outputConnectors = new BasicEList<IConnector>();
EList<IConnector> genericPorts = new BasicEList<IConnector>(); EList<IConnector> undirectedConnectors = new BasicEList<IConnector>();
EList<IConnector> ports = curElement.getConnectors(); for(IConnector connector : currentChild.getConnectors()) {
for(IConnector curConnector : ports) { if(connector instanceof EntryConnectorBase) {
if(curConnector instanceof EntryConnectorBase) { inputConnectors.add(connector);
inputPorts.add(curConnector); } else if(connector instanceof ExitConnectorBase) {
} else if(curConnector instanceof ExitConnectorBase) { outputConnectors.add(connector);
outputPorts.add(curConnector);
} else { } else {
outputPorts.add(curConnector); outputConnectors.add(connector);
genericPorts.add(curConnector); undirectedConnectors.add(connector);
} }
} }
Dimension dimension = getNodeSize((ILayoutedModelElement)curElement); // Adjust size of node to number of connectors
Dimension dimension = getNodeSize((ILayoutedModelElement)currentChild);
int portNmbr = Math.max(inputPorts.size(), outputPorts.size()); int numConnectors = Math.max(inputConnectors.size(), outputConnectors.size());
curLayout.setHeight(Math.max((1 + 2 * portNmbr) * DEFAULT_CONNECTOR_SIZE, kNodeLayout.setHeight(Math.max((1 + 2 * numConnectors) * DEFAULT_CONNECTOR_SIZE,
roundSnap2Grid(dimension.getHeight(), true))); truncateSnap2Grid(dimension.getHeight(), true)));
curLayout.setWidth(Math.max(DEFAULT_SHAPE_MINIMUM_HEIGHT, kNodeLayout.setWidth(Math.max(DEFAULT_SHAPE_MINIMUM_HEIGHT,
roundSnap2Grid(dimension.getWidth(), true))); truncateSnap2Grid(dimension.getWidth(), true)));
curKNode.setParent(parentNode); kNode.setParent(rootNode);
modelElementsToKNodes.put(curElement, curKNode); modelElementsToKNodes.put(currentChild, kNode);
for(IConnector curPort : outputPorts) { for(IConnector connector : outputConnectors) {
KPort k = createKPortFromIConnector(curPort, curKNode, outboundConnectorsToKPorts); KPort k = createKPortFromIConnector(connector, kNode, outboundConnectorsToKPorts);
if(genericPorts.contains(curPort)) { if(undirectedConnectors.contains(connector)) {
undirectedConnectorsToKPorts.put(curPort, k); undirectedConnectorsToKPorts.put(connector, k);
} }
} }
for(IConnector curPort : inputPorts) { for(IConnector connector : inputConnectors) {
createKPortFromIConnector(curPort, curKNode, inboundConnectorsToKPorts); createKPortFromIConnector(connector, kNode, inboundConnectorsToKPorts);
} }
} }
// create virtual nodes for global ports // Create virtual nodes for global ports
globalInboundConnectorsToKPorts = new BasicEMap<IConnector, KPort>(); globalInboundConnectorsToKPorts = new BasicEMap<IConnector, KPort>();
globalOutboundConnectorsToKPorts = new BasicEMap<IConnector, KPort>(); globalOutboundConnectorsToKPorts = new BasicEMap<IConnector, KPort>();
for(IConnector curPort : hierarchicElement.getConnectors()) { for(IConnector connector : hierarchicElement.getConnectors()) {
KNode virtual = KimlUtil.createInitializedNode(); KNode kNodeVirtual = KimlUtil.createInitializedNode();
KShapeLayout virtualLayout = virtual.getData(KShapeLayout.class); KShapeLayout kNodeVirtualLayout = kNodeVirtual.getData(KShapeLayout.class);
virtualLayout.setHeight(DEFAULT_CONNECTOR_SIZE); kNodeVirtualLayout.setHeight(DEFAULT_CONNECTOR_SIZE);
virtualLayout.setWidth(2 * DEFAULT_CONNECTOR_SIZE); kNodeVirtualLayout.setWidth(2 * DEFAULT_CONNECTOR_SIZE);
virtual.setParent(parentNode); kNodeVirtual.setParent(rootNode);
KPort k = KimlUtil.createInitializedPort(); KPort kPort = KimlUtil.createInitializedPort();
k.setNode(virtual); kPort.setNode(kNodeVirtual);
if(curPort instanceof ExitConnectorBase) { if(connector instanceof ExitConnectorBase) {
globalOutboundConnectorsToKPorts.put(curPort, k); globalOutboundConnectorsToKPorts.put(connector, kPort);
} else { } else {
globalInboundConnectorsToKPorts.put(curPort, k); globalInboundConnectorsToKPorts.put(connector, kPort);
outboundConnectorsToKPorts.put(curPort, k); outboundConnectorsToKPorts.put(connector, kPort);
} }
} }
// create edges // Create edges
for(Entry<IConnector, KPort> out : outboundConnectorsToKPorts) { for(Entry<IConnector, KPort> entry : outboundConnectorsToKPorts) {
for(IConnection ic : out.getKey().getOutgoing()) { for(IConnection connection : entry.getKey().getOutgoing()) {
KEdge curEdge = KimlUtil.createInitializedEdge(); KEdge kEdge = KimlUtil.createInitializedEdge();
KPort sourceport = out.getValue(); KPort kSourcePort = entry.getValue();
curEdge.setSource(sourceport.getNode()); kEdge.setSource(kSourcePort.getNode());
curEdge.setSourcePort(sourceport); kEdge.setSourcePort(kSourcePort);
sourceport.getEdges().add(curEdge); kSourcePort.getEdges().add(kEdge);
KPort targetport = inboundConnectorsToKPorts.get(ic.getTarget()); KPort kTargetPort = inboundConnectorsToKPorts.get(connection.getTarget());
if(targetport == null) { if(kTargetPort == null) {
targetport = globalOutboundConnectorsToKPorts.get(ic.getTarget()); kTargetPort = globalOutboundConnectorsToKPorts.get(connection.getTarget());
} }
if(targetport == null) { if(kTargetPort == null) {
targetport = undirectedConnectorsToKPorts.get(ic.getTarget()); kTargetPort = undirectedConnectorsToKPorts.get(connection.getTarget());
} }
curEdge.setTargetPort(targetport); kEdge.setTargetPort(kTargetPort);
curEdge.setTarget(targetport.getNode()); kEdge.setTarget(kTargetPort.getNode());
targetport.getEdges().add(curEdge); kTargetPort.getEdges().add(kEdge);
connectionsToKEdges.put(ic, curEdge); connectionsToKEdges.put(connection, kEdge);
} }
} }
return parentNode; return rootNode;
} }
/** /**
...@@ -400,21 +399,21 @@ public class KielerAutoLayouter implements IAutoLayouter { ...@@ -400,21 +399,21 @@ public class KielerAutoLayouter implements IAutoLayouter {
* *
* @param connector * @param connector
* {@link IConnector} to be converted to {@link KPort} * {@link IConnector} to be converted to {@link KPort}
* @param knode * @param kNode
* {@link KNode} that will contain the newly created {@link KPort} * {@link KNode} that will contain the newly created {@link KPort}
* @param connectorsToKPorts * @param connectorsToKPorts
* Map between {@link IConnector}s and {@link KPort}s. * Map between {@link IConnector}s and {@link KPort}s.
* *
* @return {@link KNode} represeting the given {@link IConnector}. * @return {@link KNode} representing the given {@link IConnector}.
*/ */
private KPort createKPortFromIConnector(IConnector connector, KNode knode, private KPort createKPortFromIConnector(IConnector connector, KNode kNode,
EMap<IConnector, KPort> connectorsToKPorts) { EMap<IConnector, KPort> connectorsToKPorts) {
KPort k = KimlUtil.createInitializedPort(); KPort kPort = KimlUtil.createInitializedPort();
k.setNode(knode); kPort.setNode(kNode);
KShapeLayout portLayout = k.getData(KShapeLayout.class); KShapeLayout kPortLayout = kPort.getData(KShapeLayout.class);
portLayout.setHeight(DEFAULT_CONNECTOR_SIZE); kPortLayout.setHeight(DEFAULT_CONNECTOR_SIZE);
connectorsToKPorts.put(connector, k); connectorsToKPorts.put(connector, kPort);
return k; return kPort;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment