();
+ LNode n = null;
+ do {
+ n = stack.pop();
+ n.setProperty(InternalProperties.TARJAN_ON_STACK, false);
+ sCC.add(n);
+ } while (v != n);
+ if (sCC.size() >1) {
+ int index = stronglyConnectedComponents.size();
+ stronglyConnectedComponents.add(sCC);
+ for (LNode node : sCC) {
+ nodeToSCCID.put(node, index);
+ }
+ }
+ }
+ }
+}
+
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/DFSNodeOrderCycleBreaker.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/DFSNodeOrderCycleBreaker.java
new file mode 100644
index 0000000000..1669d2b4a6
--- /dev/null
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/DFSNodeOrderCycleBreaker.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2020 Kiel University and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.elk.alg.layered.p1cycles;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.stream.StreamSupport;
+
+import org.eclipse.elk.alg.layered.LayeredPhases;
+import org.eclipse.elk.alg.layered.graph.LEdge;
+import org.eclipse.elk.alg.layered.graph.LGraph;
+import org.eclipse.elk.alg.layered.graph.LNode;
+import org.eclipse.elk.alg.layered.intermediate.IntermediateProcessorStrategy;
+import org.eclipse.elk.alg.layered.options.InternalProperties;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
+import org.eclipse.elk.core.alg.ILayoutPhase;
+import org.eclipse.elk.core.alg.LayoutProcessorConfiguration;
+import org.eclipse.elk.core.util.IElkProgressMonitor;
+
+import com.google.common.collect.Iterables;
+
+/**
+ * Cycle breaker implementation that uses a depth-first traversal of the graph. Described in
+ *
+ * - Emden R. Gansner, Eleftherios Koutsofios, Stephen C. North, Kiem-Phong Vo, A technique for drawing directed
+ * graphs. Software Engineering 19(3), pp. 214-230, 1993.
+ *
+ *
+ *
+ * This cycle breaker does not support the {@link LayeredOptions#PRIORITY_DIRECTION} option that can be set on edges.
+ * Neither does it support layer constraints out of the box. If layer constraints should be observed,
+ * {@link org.eclipse.elk.alg.layered.intermediate.EdgeAndLayerConstraintEdgeReverser} and
+ * {@link org.eclipse.elk.alg.layered.intermediate.LayerConstraintProcessor} should be used.
+ *
+ *
+ *
+ * - Precondition:
+ * - an unlayered graph
+ * - Postcondition:
+ * - the graph has no cycles
+ *
+ *
+ * @see org.eclipse.elk.alg.layered.intermediate.EdgeAndLayerConstraintEdgeReverser
+ * @see org.eclipse.elk.alg.layered.intermediate.LayerConstraintProcessor
+ */
+public class DFSNodeOrderCycleBreaker implements ILayoutPhase {
+
+ /** Intermediate processing configuration. */
+ private static final LayoutProcessorConfiguration INTERMEDIATE_PROCESSING_CONFIGURATION =
+ LayoutProcessorConfiguration. create().addAfter(LayeredPhases.P5_EDGE_ROUTING,
+ IntermediateProcessorStrategy.REVERSED_EDGE_RESTORER);
+
+ /** List of source nodes. */
+ private List sources;
+ /** Indicates whether a given node was already visited during DFS. */
+ private boolean[] visited;
+ /**
+ * A node is active during DFS if it is on our current DFS path. Any edge that leads back to an active node induces
+ * a cycle and needs to be reversed.
+ */
+ private boolean[] active;
+ /** The list of edges to be reversed at the end of our little algorithmic adventure. */
+ private List edgesToBeReversed;
+ private int debug_info_SameConnectons = 0;
+
+ @Override
+ public LayoutProcessorConfiguration getLayoutProcessorConfiguration(final LGraph graph) {
+ return INTERMEDIATE_PROCESSING_CONFIGURATION;
+ }
+
+ @Override
+ public void process(final LGraph graph, final IElkProgressMonitor monitor) {
+ monitor.begin("Depth-first cycle removal", 1);
+ List nodes = graph.getLayerlessNodes();
+
+ // initialize values for the algorithm
+ int nodeCount = nodes.size();
+
+ sources = new ArrayList<>();
+ visited = new boolean[nodeCount];
+ active = new boolean[nodeCount];
+ edgesToBeReversed = new ArrayList<>();
+
+ int index = 0;
+ for (LNode node : nodes) {
+ // The node id is used as index into our arrays
+ node.id = index;
+ if (Iterables.isEmpty(node.getIncomingEdges())) {
+ sources.add(node);
+ }
+ index++;
+ }
+
+ // From every source node start a DFS
+ for (LNode source : sources) {
+ dfs(source);
+ }
+
+ // Start more DFS runs for all nodes that have not been visited yet. These must be part of a cycle since they
+ // are not source nodes
+ for (int i = 0; i < nodeCount; i++) {
+ if (!visited[i]) {
+ LNode n = nodes.get(i);
+ assert n.id == i;
+ dfs(n);
+ }
+ }
+
+ // Reverse "back edges"
+ for (LEdge edge : edgesToBeReversed) {
+ edge.reverse(graph, true);
+ graph.setProperty(InternalProperties.CYCLIC, true);
+ }
+
+ // Cleanup
+ this.sources = null;
+ this.visited = null;
+ this.active = null;
+ this.edgesToBeReversed = null;
+
+
+ monitor.done();
+ }
+
+ private void dfs(final LNode n) {
+ if (visited[n.id]) {
+ return;
+ }
+
+ // We're now visiting the node, and it's active
+ this.visited[n.id] = true;
+ this.active[n.id] = true;
+
+ HashMap> modelOrderMap = new HashMap>();
+
+ n.getOutgoingEdges().forEach(e -> {
+ if (e.getTarget().getNode().getProperty(InternalProperties.MODEL_ORDER) == null) {
+ modelOrderMap.put(Integer.MAX_VALUE - modelOrderMap.size(), new HashSet() {
+ {
+ add(e);
+ }
+ });
+ } else {
+ int targetModelOrder = e.getTarget().getNode().getProperty(InternalProperties.MODEL_ORDER);
+ if (modelOrderMap.containsKey(targetModelOrder)) {
+ modelOrderMap.get(targetModelOrder).add(e);
+ } else {
+ modelOrderMap.put(targetModelOrder, new HashSet() {
+ {
+ add(e);
+ }
+ });
+ }
+ }
+ });
+ SortedSet modelOrderSet = new TreeSet<>(modelOrderMap.keySet());
+ // for (LEdge out : n.getOutgoingEdges()) {
+ for (int key : modelOrderSet) {
+ LEdge out = modelOrderMap.get(key).iterator().next();
+ // Ignore self loops
+ if (out.isSelfLoop()) {
+ continue;
+ }
+
+ LNode target = out.getTarget().getNode();
+
+ // If the edge connects to an active node, we have found a path from said active node back to itself since
+ // active nodes are on our current path. That's a backward edge and needs to be reversed
+ if (this.active[target.id]) {
+ edgesToBeReversed.addAll(modelOrderMap.get(key));
+ } else {
+ dfs(target);
+ }
+ }
+
+ // We're leaving this node
+ this.active[n.id] = false;
+ }
+
+}
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/GreedyModelOrderCycleBreaker.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/GreedyModelOrderCycleBreaker.java
index 0aac2532ae..6f6a08dfa3 100644
--- a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/GreedyModelOrderCycleBreaker.java
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/GreedyModelOrderCycleBreaker.java
@@ -9,17 +9,28 @@
*******************************************************************************/
package org.eclipse.elk.alg.layered.p1cycles;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.List;
import org.eclipse.elk.alg.layered.graph.LNode;
import org.eclipse.elk.alg.layered.options.InternalProperties;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
/**
* Greedy Cycle Breaker that behaves the same as {@link GreedyCycleBreaker} but does not randomly choose an edge to
- * reverse if multiple candidates exist but does so by model order.
+ * reverse if multiple candidates exist but does so by model order. Now with Group Model Order.
*/
public final class GreedyModelOrderCycleBreaker extends GreedyCycleBreaker {
+ public static final int START_UP_GROUP_ID = 0;
+ public static final int REACTOR_GROUP_ID = 1;
+ public static final int ACTION_GROUP_ID = 2;
+ public static final int TIMER_GROUP_ID = 3;
+ public static final int REACTION_GROUP_ID = 4;
+ public static final int DUMMY_GROUP_ID = 5;
+ public static final int SHUT_DOWN_GROUP_ID = 6;
+
/**
* Choose the node with the minimum model order.
*/
@@ -28,13 +39,19 @@ protected LNode chooseNodeWithMaxOutflow(final List nodes) {
LNode returnNode = null;
int minimumModelOrder = Integer.MAX_VALUE;
for (LNode node : nodes) {
- // In this step nodes without a model order are disregarded.
- // One could of course think of a different strategy regarding this aspect.
- // FUTURE WORK: If multiple model order groups exist, one has to chose based on the priority of the groups.
- if (node.hasProperty(InternalProperties.MODEL_ORDER)
- && node.getProperty(InternalProperties.MODEL_ORDER) < minimumModelOrder) {
- minimumModelOrder = node.getProperty(InternalProperties.MODEL_ORDER);
- returnNode = node;
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ if (returnNode == null ||
+ (node.getProperty(InternalProperties.MODEL_ORDER) < minimumModelOrder &&
+ GROUP_ORDER.compare(node, returnNode) <=0)||
+ GROUP_ORDER.compare(node, returnNode) <0) {
+ minimumModelOrder = node.getProperty(InternalProperties.MODEL_ORDER);
+ returnNode = node;
+ }
+ } else if (returnNode != null) {
+ if (GROUP_ORDER.compare(node, returnNode) <0) {
+ minimumModelOrder = Integer.MAX_VALUE;
+ returnNode = node;
+ }
}
}
if (returnNode == null) {
@@ -43,4 +60,33 @@ protected LNode chooseNodeWithMaxOutflow(final List nodes) {
return returnNode;
}
+ /**
+ * Define a static order between different Groups.
+ */
+ public static final Comparator GROUP_ORDER =
+ new Comparator() {
+ @Override
+ public int compare(LNode node1, LNode node2) {
+ assert(node1.hasProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D));
+ assert(node2.hasProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D));
+ int group1 = node1.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ int group2 = node2.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (group1 == group2) {
+ return 0;
+ }
+ List highestPriority = Arrays.asList(START_UP_GROUP_ID,TIMER_GROUP_ID);
+ if(highestPriority.contains(group1)) return -1;
+ if(highestPriority.contains(group2)) return 1;
+ if(group1 == SHUT_DOWN_GROUP_ID) return 1;
+ if(group2 == SHUT_DOWN_GROUP_ID) return -1;
+ if(group1 == REACTION_GROUP_ID) return -1;
+ if(group2 == REACTION_GROUP_ID) return 1;
+ if(group1 == REACTOR_GROUP_ID) return -1;
+ if(group2 == REACTOR_GROUP_ID) return 1;
+ if(group1 == ACTION_GROUP_ID) return -1;
+ if(group2 == ACTION_GROUP_ID) return 1;
+ assert(false);
+ return 0;
+ }
+ };
}
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/ModelOrderLookAHeadCycleBreaker.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/ModelOrderLookAHeadCycleBreaker.java
new file mode 100644
index 0000000000..aee44dd1fe
--- /dev/null
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/ModelOrderLookAHeadCycleBreaker.java
@@ -0,0 +1,296 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Sasuk and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.elk.alg.layered.p1cycles;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import java.util.Set;
+import java.util.Stack;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+import org.eclipse.elk.alg.layered.LayeredPhases;
+import org.eclipse.elk.alg.layered.graph.LEdge;
+import org.eclipse.elk.alg.layered.graph.LGraph;
+import org.eclipse.elk.alg.layered.graph.LNode;
+import org.eclipse.elk.alg.layered.graph.LPort;
+import org.eclipse.elk.alg.layered.intermediate.IntermediateProcessorStrategy;
+import org.eclipse.elk.alg.layered.options.InternalProperties;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
+import org.eclipse.elk.alg.layered.options.PortType;
+import org.eclipse.elk.core.alg.ILayoutPhase;
+import org.eclipse.elk.core.alg.LayoutProcessorConfiguration;
+import org.eclipse.elk.core.util.IElkProgressMonitor;
+
+import com.google.common.collect.Lists;
+
+/**
+ * Cycle Breaking Strategy that looks further down the graph for nodes of the same type to reverse edges.
+ * Only works with Group Model Order.
+ * @author Mwr
+ *
+ */
+public class ModelOrderLookAHeadCycleBreaker implements ILayoutPhase{
+ private int firstSeparateModelOrder;
+ private int lastSeparateModelOrder;
+ private Queue nextNodes;
+ private int index;
+ private LinkedList> stronglyConnectedComponents = new LinkedList>();
+ private Stack stack = new Stack();
+ private List revEdges = Lists.newArrayList();
+
+ /** intermediate processing configuration. */
+ private static final LayoutProcessorConfiguration INTERMEDIATE_PROCESSING_CONFIGURATION =
+ LayoutProcessorConfiguration.create()
+ .addAfter(LayeredPhases.P5_EDGE_ROUTING, IntermediateProcessorStrategy.REVERSED_EDGE_RESTORER);
+
+ @Override
+ public LayoutProcessorConfiguration getLayoutProcessorConfiguration(final LGraph graph) {
+ // TODO Auto-generated method stub
+ return INTERMEDIATE_PROCESSING_CONFIGURATION;
+ }
+
+
+ @Override
+ public void process(final LGraph layeredGraph, final IElkProgressMonitor monitor) {
+ monitor.begin("Model order cycle breaking", 1);
+
+ // Reset FIRST_SEPARATE and LAST_SEPARATE counters.
+ firstSeparateModelOrder = 0;
+ lastSeparateModelOrder = 0;
+
+ // gather edges that point to the wrong direction.
+ revEdges = Lists.newArrayList();
+
+ int currentTopMO = 0;
+ for (LNode node : layeredGraph.getLayerlessNodes()) {
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ currentTopMO = Math.max(currentTopMO, node.getProperty(InternalProperties.MODEL_ORDER) + 1);
+ }
+ }
+ //add fake "Model Order" so nodes without one can be dealt with.
+ for (LNode node : layeredGraph.getLayerlessNodes()) {
+ if (node.getProperty(InternalProperties.MODEL_ORDER) == null
+ && !node.toString().contains("external_port")) {
+ node.setProperty(InternalProperties.MODEL_ORDER, currentTopMO);
+ currentTopMO++;
+ }
+ }
+
+ // create strongly connected components.
+ TARJAN(layeredGraph);
+
+ // mark edges that are part of a cycle (within a SCC).
+ for (int i = 0; i < stronglyConnectedComponents.size(); i++) {
+ for (LNode n : stronglyConnectedComponents.get(i)) {
+ for (LEdge edge : n.getOutgoingEdges()) {
+ if (stronglyConnectedComponents.get(i).contains(edge.getTarget().getNode())) {
+ edge.setProperty(InternalProperties.IS_PART_OF_CYCLE, true);
+ }
+ }
+ }
+ }
+ stronglyConnectedComponents.clear();
+
+
+ // One needs an offset to make sure that the model order of nodes with port constraints is
+ // always lower/higher than that of other nodes.
+ // E.g. A node with the LAST constraint needs to have a model order m = modelOrder + offset
+ // such that m > m(n) with m(n) being the model order of a normal node n (without constraints).
+ // Such that the highest model order has to be used as an offset
+ int offset = layeredGraph.getLayerlessNodes().size();
+ for (LNode node : layeredGraph.getLayerlessNodes()) {
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ offset = Math.max(offset, node.getProperty(InternalProperties.MODEL_ORDER) + 1);
+ }
+ }
+ lookAhead(layeredGraph, offset);
+
+
+
+ // reverse the gathered edges
+ for (LEdge edge : revEdges) {
+ edge.reverse(layeredGraph, false);
+ layeredGraph.setProperty(InternalProperties.CYCLIC, true);
+ }
+ revEdges.clear();
+ monitor.done();
+ }
+
+ /**
+ * Looks Further down the graph and uses the skip sequential edges option with fallback edges.
+ * @param layeredGraph the graph
+ * @param offset the offset for working with Model Order
+ */
+ private void lookAhead(final LGraph layeredGraph,final int offset) {
+ int modelOrderMask[] = {1,4};
+ for (int i: modelOrderMask) {
+ for (LNode source : layeredGraph.getLayerlessNodes()) {
+ int groupID = source.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (groupID != i) {
+ continue;
+ }
+ int modelOrderSource = computeConstraintModelOrder(source, offset);
+
+
+ for (LPort port : source.getPorts(PortType.OUTPUT)) {
+ for (LEdge edge : port.getOutgoingEdges()) {
+ if (revEdges.contains(edge) || !edge.getProperty(InternalProperties.IS_PART_OF_CYCLE)) {
+ continue;
+ }
+ LNode target = edge.getTarget().getNode();
+ int groupIDTarget = target.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (groupID == -1 || groupIDTarget == -1) {
+ continue;
+ }
+ if (groupIDTarget != groupID) {
+ nextNodes = new ConcurrentLinkedQueue();
+ HashSet visited = new HashSet();
+ HashSet toRev = new HashSet();
+ visited.add(target);
+ toRev = getNextNodeWithGroupPriority(target, groupID,
+ offset, modelOrderSource, visited, source, edge, toRev);
+ revEdges.addAll(toRev);
+
+ } else if (computeConstraintModelOrder(target, offset) <= modelOrderSource) {
+ revEdges.add(edge);
+ } else {
+ edge.setProperty(InternalProperties.IS_FIXED, true);
+ }
+
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Search for the next Node with the same groupID of the source Node, using BFS.
+ * @param currentSource the current source node
+ * @param groupPriority the groupID of the source
+ * @param offset current offset of the modelOrder
+ * @param modelOrderOriginalSource the original source node
+ * @return true if the edge should be reversed
+ */
+ private HashSet getNextNodeWithGroupPriority(final LNode currentSource,
+ final int groupPriority, final int offset,
+ final int modelOrderOriginalSource, final HashSet checked, final LNode originalSource,
+ final LEdge fallBackEdge, final HashSet toRev) {
+ for (LPort port : currentSource.getPorts(PortType.OUTPUT)) {
+ for (LEdge edge : port.getOutgoingEdges()) {
+ if (revEdges.contains(edge) || toRev.contains(edge)
+ || !edge.getProperty(InternalProperties.IS_PART_OF_CYCLE)) {
+ continue;
+ }
+ LNode target = edge.getTarget().getNode();
+ int groupPriorityTarget = target.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (groupPriorityTarget == groupPriority) {
+ if (computeConstraintModelOrder(target, offset) <= modelOrderOriginalSource) {
+ if (edge.getProperty(InternalProperties.IS_FIXED)) {
+ toRev.clear();
+ toRev.add(fallBackEdge);
+ return toRev;
+ }
+ toRev.add(edge);
+ } else {
+ edge.setProperty(InternalProperties.IS_FIXED, true);
+ }
+ } else if (!checked.contains(target)) {
+ nextNodes.add(target);
+ checked.add(target);
+ }
+
+ }
+ }
+ if (!nextNodes.isEmpty()) {
+ getNextNodeWithGroupPriority(nextNodes.poll(), groupPriority, offset, modelOrderOriginalSource, checked,
+ originalSource, fallBackEdge, toRev);
+ }
+ return toRev;
+ }
+
+ /**
+ * Set model order to a value such that the constraint is respected and the ordering between nodes with
+ * the same constraint is preserved.
+ * The order should be FIRST_SEPARATE < FIRST < NORMAL < LAST < LAST_SEPARATE. The offset is used to make sure the
+ * all nodes have unique model orders.
+ * @param node The LNode
+ * @param offset The offset between FIRST, FIRST_SEPARATE, NORMAL, LAST_SEPARATE, and LAST nodes for unique order
+ * @return A unique model order
+ */
+ private int computeConstraintModelOrder(final LNode node, final int offset) {
+ int modelOrder = 0;
+ switch (node.getProperty(LayeredOptions.LAYERING_LAYER_CONSTRAINT)) {
+ case FIRST_SEPARATE:
+ modelOrder = 2 * -offset + firstSeparateModelOrder;
+ firstSeparateModelOrder++;
+ break;
+ case FIRST:
+ modelOrder = -offset;
+ break;
+ case LAST:
+ modelOrder = offset;
+ break;
+ case LAST_SEPARATE:
+ modelOrder = 2 * offset + lastSeparateModelOrder;
+ lastSeparateModelOrder++;
+ break;
+ default:
+ break;
+ }
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ modelOrder += node.getProperty(InternalProperties.MODEL_ORDER);
+ }
+ return modelOrder;
+ }
+
+ private void TARJAN(final LGraph graph) {
+ index = 0;
+ stack = new Stack();
+ for (LNode node : graph.getLayerlessNodes()) {
+ if (node.getProperty(InternalProperties.TARJAN_ID) == -1) {
+ stronglyConnected(node);
+ stack.clear();
+ }
+ }
+ }
+
+ private void stronglyConnected(final LNode v) {
+ v.setProperty(InternalProperties.TARJAN_ID, index);
+ v.setProperty(InternalProperties.TARJAN_LOWLINK, index);
+ index++;
+ stack.push(v);
+ v.setProperty(InternalProperties.TARJAN_ON_STACK, true);
+ for (LEdge edge : v.getOutgoingEdges()) {
+ LNode target = edge.getTarget().getNode();
+ if (target.getProperty(InternalProperties.TARJAN_ID) == -1) {
+ stronglyConnected(target);
+ v.setProperty(InternalProperties.TARJAN_LOWLINK,
+ Math.min(v.getProperty(InternalProperties.TARJAN_LOWLINK),
+ target.getProperty(InternalProperties.TARJAN_LOWLINK)));
+ } else if (target.getProperty(InternalProperties.TARJAN_ON_STACK)) {
+ v.setProperty(InternalProperties.TARJAN_LOWLINK,
+ Math.min(v.getProperty(InternalProperties.TARJAN_LOWLINK),
+ target.getProperty(InternalProperties.TARJAN_ID)));
+ }
+ }
+ if (v.getProperty(InternalProperties.TARJAN_LOWLINK) == v.getProperty(InternalProperties.TARJAN_ID)) {
+ Set sCC = new HashSet();
+ LNode n = null;
+ do {
+ n = stack.pop();
+ n.setProperty(InternalProperties.TARJAN_ON_STACK, false);
+ sCC.add(n);
+ } while (v != n);
+ stronglyConnectedComponents.add(sCC);
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCConectivity.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCConectivity.java
new file mode 100644
index 0000000000..1d4fa95879
--- /dev/null
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCConectivity.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Sasuk and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.elk.alg.layered.p1cycles;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.elk.alg.layered.graph.LEdge;
+import org.eclipse.elk.alg.layered.graph.LNode;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
+
+import com.google.common.collect.Iterables;
+
+/**
+ * Based on the SCCModelOrderCycleBreaker. This finds the nodes with minimum and maximum model order and reverses the
+ * incoming nodes of the minimum, if its the in-degree is greater than the out-degree of the maximum node. Else it
+ * reverses the out-going edges of the maximum node.
+ * @author Mwr
+ *
+ */
+public class SCCConectivity extends SCCModelOrderCycleBreaker {
+
+ @Override
+ public void findNodes(int offset) {
+ for (int i = 0; i < stronglyConnectedComponents.size(); i++) {
+ if (stronglyConnectedComponents.get(i).size() <= 1) {
+ continue;
+ }
+ LNode min = null;
+ LNode max = null;
+ int modelOrderMin = Integer.MAX_VALUE;
+ int modelOrderMax = Integer.MIN_VALUE;
+ for (LNode n : stronglyConnectedComponents.get(i)) {
+ List layermask = new LinkedList();
+ layermask.add(1);
+ layermask.add(4);
+ int groupID = n.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (!layermask.contains(groupID)) {
+ continue;
+ }
+ if (min == null || max == null) {
+ min = n;
+ modelOrderMin = computeConstraintModelOrder(n,offset);
+ max = n;
+ modelOrderMax = modelOrderMin;
+ continue;
+ }
+ int modelOrderCurrent = computeConstraintModelOrder(n, offset);
+ if (modelOrderMin > modelOrderCurrent) {
+ min = n;
+ modelOrderMin = modelOrderCurrent;
+ }
+ else if(modelOrderMax < modelOrderCurrent) {
+ max = n;
+ modelOrderMax = modelOrderCurrent;
+ }
+ }
+ if (min != null && max != null) {
+ if (Iterables.size(min.getIncomingEdges()) >
+ Iterables.size(max.getOutgoingEdges())) {
+ for (LEdge edge : min.getIncomingEdges()) {
+ if (stronglyConnectedComponents.get(i).contains(edge.getSource().getNode())) {
+ revEdges.add(edge);
+ }
+ }
+ } else {
+ for (LEdge edge : max.getOutgoingEdges()) {
+ if (stronglyConnectedComponents.get(i).contains(edge.getTarget().getNode())) {
+ revEdges.add(edge);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCLowestModelOrderCycleBreaker.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCLowestModelOrderCycleBreaker.java
new file mode 100644
index 0000000000..5c9f20b0bb
--- /dev/null
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCLowestModelOrderCycleBreaker.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2023 mwr and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.elk.alg.layered.p1cycles;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.elk.alg.layered.LayeredPhases;
+import org.eclipse.elk.alg.layered.graph.LEdge;
+import org.eclipse.elk.alg.layered.graph.LGraph;
+import org.eclipse.elk.alg.layered.graph.LNode;
+import org.eclipse.elk.alg.layered.intermediate.IntermediateProcessorStrategy;
+import org.eclipse.elk.alg.layered.options.InternalProperties;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
+import org.eclipse.elk.core.alg.ILayoutPhase;
+import org.eclipse.elk.core.alg.LayoutProcessorConfiguration;
+import org.eclipse.elk.core.util.IElkProgressMonitor;
+
+import com.google.common.collect.Lists;
+
+/**
+ * This Cycle Breaking Strategy extends the SCCModelOrderCycleBreaker, however instead of reversing all outgoing edges
+ * of the node with the highest model order, it reverses all incoming edges of the node with the lowest model order.
+ * @author mwr
+ *
+ */
+public class SCCLowestModelOrderCycleBreaker extends SCCModelOrderCycleBreaker {
+
+ @Override
+ public void findNodes(int offset) {
+ // lowest model order only outgoing
+ for (int i = 0; i < stronglyConnectedComponents.size(); i++) {
+ if (stronglyConnectedComponents.get(i).size() <= 1) {
+ continue;
+ }
+ LNode min = null;
+ int modelOrderMin = Integer.MAX_VALUE;
+ for (LNode n : stronglyConnectedComponents.get(i)) {
+ List layermask = new LinkedList();
+ layermask.add(1);
+ layermask.add(4);
+ int groupID = n.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (!layermask.contains(groupID)) {
+ continue;
+ }
+ if (min == null) {
+ min = n;
+ modelOrderMin = computeConstraintModelOrder(n,offset);
+ continue;
+ }
+ int modelOrderCurrent = computeConstraintModelOrder(n, offset);
+ if (modelOrderMin > modelOrderCurrent) {
+ min = n;
+ modelOrderMin = modelOrderCurrent;
+ }
+ }
+ System.out.println("MIN:" + min.toString()
+ + "MODEL ORDER: " + modelOrderMin + "Of SCC: " + i);
+ if (min != null) {
+ for (LEdge edge : min.getIncomingEdges()) {
+ if (stronglyConnectedComponents.get(i).contains(edge.getSource().getNode())) {
+ revEdges.add(edge);
+ System.out.println("Reversed: " + edge.toString());
+ }
+
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCModelOrderCycleBreaker.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCModelOrderCycleBreaker.java
new file mode 100644
index 0000000000..065157d5a4
--- /dev/null
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCModelOrderCycleBreaker.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * Copyright (c) 2023 mwr and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.elk.alg.layered.p1cycles;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.elk.alg.layered.LayeredPhases;
+import org.eclipse.elk.alg.layered.graph.LEdge;
+import org.eclipse.elk.alg.layered.graph.LGraph;
+import org.eclipse.elk.alg.layered.graph.LNode;
+import org.eclipse.elk.alg.layered.intermediate.IntermediateProcessorStrategy;
+import org.eclipse.elk.alg.layered.options.InternalProperties;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
+import org.eclipse.elk.core.alg.ILayoutPhase;
+import org.eclipse.elk.core.alg.LayoutProcessorConfiguration;
+import org.eclipse.elk.core.util.IElkProgressMonitor;
+
+import com.google.common.collect.Lists;
+
+/**
+ * This Cycle Breaking Strategy relies on Tarjan's algorithm to find strongly connected components.
+ * It than selects the node with the maximum model order in the strongly connected components and reverses its out-going
+ * edges to nodes in the strongly connected component.
+ * @author mwr
+ *
+ */
+public class SCCModelOrderCycleBreaker implements ILayoutPhase {
+
+ private int firstSeparateModelOrder;
+ private int lastSeparateModelOrder;
+ private int index;
+ protected List> stronglyConnectedComponents = new LinkedList>();
+ private Stack stack = new Stack();
+ protected List revEdges = Lists.newArrayList();
+
+ /** intermediate processing configuration. */
+ private static final LayoutProcessorConfiguration INTERMEDIATE_PROCESSING_CONFIGURATION =
+ LayoutProcessorConfiguration.create()
+ .addAfter(LayeredPhases.P5_EDGE_ROUTING, IntermediateProcessorStrategy.REVERSED_EDGE_RESTORER);
+
+ @Override
+ public LayoutProcessorConfiguration getLayoutProcessorConfiguration(final LGraph graph) {
+ // TODO Auto-generated method stub
+ return INTERMEDIATE_PROCESSING_CONFIGURATION;
+ }
+
+
+ @Override
+ public void process(final LGraph layeredGraph, final IElkProgressMonitor monitor) {
+ monitor.begin("Model order cycle breaking", 1);
+
+ // Reset FIRST_SEPARATE and LAST_SEPARATE counters.
+ firstSeparateModelOrder = 0;
+ lastSeparateModelOrder = 0;
+
+ // gather edges that point to the wrong direction
+ revEdges = Lists.newArrayList();
+
+ // One needs an offset to make sure that the model order of nodes with port constraints is
+ // always lower/higher than that of other nodes.
+ // E.g. A node with the LAST constraint needs to have a model order m = modelOrder + offset
+ // such that m > m(n) with m(n) being the model order of a normal node n (without constraints).
+ // Such that the highest model order has to be used as an offset
+ int offset = layeredGraph.getLayerlessNodes().size();
+ for (LNode node : layeredGraph.getLayerlessNodes()) {
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ offset = Math.max(offset, node.getProperty(InternalProperties.MODEL_ORDER) + 1);
+ }
+ }
+
+ while (true) {
+ resetTARJAN(layeredGraph);
+ TARJAN(layeredGraph);
+
+ // If no Strongly connected components remain, the graph is acyclic.
+ if (stronglyConnectedComponents.size() == 0) {
+ break;
+ }
+
+ // highest model order only incoming
+ findNodes(offset);
+
+ // reverse the gathered edges
+ for (LEdge edge : revEdges) {
+ edge.reverse(layeredGraph, false);
+ edge.getSource().getNode().setProperty(LayeredOptions.LAYERING_LAYER_ID,
+ edge.getSource().getNode().getProperty(LayeredOptions.LAYERING_LAYER_ID) + 1);
+ layeredGraph.setProperty(InternalProperties.CYCLIC, true);
+ }
+
+ stronglyConnectedComponents.clear();
+ revEdges.clear();
+ }
+
+ monitor.done();
+ monitor.log("Execution Time: " + monitor.getExecutionTime());
+ }
+
+ public void findNodes(int offset) {
+ for (int i = 0; i < stronglyConnectedComponents.size(); i++) {
+ LNode max = null;
+ int maxModelOrder = Integer.MIN_VALUE;
+ for (LNode n : stronglyConnectedComponents.get(i)) {
+ List groupmask = new LinkedList();
+ groupmask.add(1);
+ groupmask.add(4);
+ int groupID = n.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (!groupmask.contains(groupID)) {
+ continue;
+ }
+ if (max == null) {
+ max = n;
+ maxModelOrder = computeConstraintModelOrder(n, offset);
+ continue;
+ }
+ int modelOrderCurrent = computeConstraintModelOrder(n, offset);
+ if (maxModelOrder < modelOrderCurrent ) {
+ max = n;
+ maxModelOrder = modelOrderCurrent;
+ }
+ }
+ for (LEdge edge : max.getOutgoingEdges()) {
+ if (stronglyConnectedComponents.get(i).contains(edge.getTarget().getNode())) {
+ revEdges.add(edge);
+ }
+
+ }
+ }
+ }
+
+
+
+ /**
+ * Set model order to a value such that the constraint is respected and the ordering between nodes with
+ * the same constraint is preserved.
+ * The order should be FIRST_SEPARATE < FIRST < NORMAL < LAST < LAST_SEPARATE. The offset is used to make sure the
+ * all nodes have unique model orders.
+ * @param node The LNode
+ * @param offset The offset between FIRST, FIRST_SEPARATE, NORMAL, LAST_SEPARATE, and LAST nodes for unique order
+ * @return A unique model order
+ */
+ protected int computeConstraintModelOrder(final LNode node, final int offset) {
+ int modelOrder = 0;
+ switch (node.getProperty(LayeredOptions.LAYERING_LAYER_CONSTRAINT)) {
+ case FIRST_SEPARATE:
+ modelOrder = 2 * -offset + firstSeparateModelOrder;
+ firstSeparateModelOrder++;
+ break;
+ case FIRST:
+ modelOrder = -offset;
+ break;
+ case LAST:
+ modelOrder = offset;
+ break;
+ case LAST_SEPARATE:
+ modelOrder = 2 * offset + lastSeparateModelOrder;
+ lastSeparateModelOrder++;
+ break;
+ default:
+ break;
+ }
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ modelOrder += node.getProperty(InternalProperties.MODEL_ORDER);
+ }
+ return modelOrder;
+ }
+
+ private void TARJAN(final LGraph graph) {
+ index = 0;
+ stack = new Stack();
+ for (LNode node : graph.getLayerlessNodes()) {
+ if (node.getProperty(InternalProperties.TARJAN_ID) == -1) {
+ stronglyConnected(node);
+ stack.clear();
+ }
+ }
+ }
+
+ private void stronglyConnected(final LNode v) {
+ v.setProperty(InternalProperties.TARJAN_ID, index);
+ v.setProperty(InternalProperties.TARJAN_LOWLINK, index);
+ index++;
+ stack.push(v);
+ v.setProperty(InternalProperties.TARJAN_ON_STACK, true);
+ for (LEdge edge : v.getConnectedEdges()) {
+ if (edge.getSource().getNode() != v && !revEdges.contains(edge)) {
+ continue;
+ }
+ if (edge.getSource().getNode() == v && revEdges.contains(edge)) {
+ continue;
+ }
+ LNode target = null;
+ if (edge.getTarget().getNode() == v) {
+ target = edge.getSource().getNode();
+ } else {
+ target = edge.getTarget().getNode();
+ }
+ if (target.getProperty(InternalProperties.TARJAN_ID) == -1) {
+ stronglyConnected(target);
+ v.setProperty(InternalProperties.TARJAN_LOWLINK,
+ Math.min(v.getProperty(InternalProperties.TARJAN_LOWLINK),
+ target.getProperty(InternalProperties.TARJAN_LOWLINK)));
+ } else if (target.getProperty(InternalProperties.TARJAN_ON_STACK)) {
+ v.setProperty(InternalProperties.TARJAN_LOWLINK,
+ Math.min(v.getProperty(InternalProperties.TARJAN_LOWLINK),
+ target.getProperty(InternalProperties.TARJAN_ID)));
+ }
+ }
+ if (v.getProperty(InternalProperties.TARJAN_LOWLINK) == v.getProperty(InternalProperties.TARJAN_ID)) {
+ Set sCC = new HashSet();
+ LNode n = null;
+ do {
+ n = stack.pop();
+ n.setProperty(InternalProperties.TARJAN_ON_STACK, false);
+ sCC.add(n);
+ } while (v != n);
+ if (sCC.size() > 1) {
+ stronglyConnectedComponents.add(sCC);
+ }
+ }
+ }
+
+ private void resetTARJAN(final LGraph graph) {
+ for (LNode n : graph.getLayerlessNodes()) {
+ n.setProperty(InternalProperties.TARJAN_ON_STACK, false);
+ n.setProperty(InternalProperties.TARJAN_LOWLINK, -1);
+ n.setProperty(InternalProperties.TARJAN_ID, -1);
+ stack.clear();
+ for (LEdge e : n.getConnectedEdges()) {
+ e.setProperty(InternalProperties.IS_PART_OF_CYCLE, false);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCNodeTypeCycleBreaker.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCNodeTypeCycleBreaker.java
new file mode 100644
index 0000000000..4dce5eaf07
--- /dev/null
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/SCCNodeTypeCycleBreaker.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2023 Sasuk and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.elk.alg.layered.p1cycles;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.elk.alg.layered.graph.LEdge;
+import org.eclipse.elk.alg.layered.graph.LNode;
+import org.eclipse.elk.alg.layered.options.InternalProperties;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
+
+/**
+ * This Cycle Breaking Strategy extends the SCCModelOrderCycleBreaker. The preferred node type for the minimum or
+ * maximum node can be defined.
+ * @author mwr
+ *
+ */
+public class SCCNodeTypeCycleBreaker extends SCCModelOrderCycleBreaker {
+
+ @Override
+ public void findNodes(int offset) {
+ // lowest model order only outgoing
+ for (int i = 0; i < stronglyConnectedComponents.size(); i++) {
+ if (stronglyConnectedComponents.get(i).size() <= 1) {
+ continue;
+ }
+ LNode min = null;
+ int modelOrderMin = Integer.MAX_VALUE;
+
+ LNode max = null;
+ int modelOrderMax = Integer.MIN_VALUE;
+ for (LNode n : stronglyConnectedComponents.get(i)) {
+ List layermask = new LinkedList();
+ layermask.add(1);
+ layermask.add(4);
+ int groupID = n.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ if (!layermask.contains(groupID)) {
+ continue;
+ }
+ if (min == null && max == null) {
+ min = n;
+ modelOrderMin = computeConstraintModelOrder(n,offset);
+
+ max = n;
+ modelOrderMax = computeConstraintModelOrder(n,offset);
+ continue;
+ }
+ int modelOrderCurrent = computeConstraintModelOrder(n, offset);
+ if (modelOrderMin > modelOrderCurrent) {
+ min = n;
+ modelOrderMin = modelOrderCurrent;
+ }
+ else if (modelOrderMax < modelOrderCurrent) {
+ max = n;
+ modelOrderMax = modelOrderCurrent;
+ }
+ }
+ if (min != null) {
+ if (min.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D) == 1) {
+ for (LEdge edge : min.getIncomingEdges()) {
+ if (stronglyConnectedComponents.get(i).contains(edge.getSource().getNode())) {
+ if(edge.getTarget().getNode().hasProperty(LayeredOptions.LAYERING_LAYER_CONSTRAINT)) {
+ continue;
+ }
+ revEdges.add(edge);
+ }
+ }
+ }
+ else {
+ for (LEdge edge : max.getIncomingEdges()) {
+ if (stronglyConnectedComponents.get(i).contains(edge.getSource().getNode())) {
+ if(edge.getTarget().getNode().hasProperty(LayeredOptions.LAYERING_LAYER_CONSTRAINT)) {
+ continue;
+ }
+ revEdges.add(edge);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/StrictGroupOrderCycleBreaker.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/StrictGroupOrderCycleBreaker.java
new file mode 100644
index 0000000000..4463005222
--- /dev/null
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p1cycles/StrictGroupOrderCycleBreaker.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2023 mwr and others.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.elk.alg.layered.p1cycles;
+
+import java.util.List;
+
+import org.eclipse.elk.alg.layered.LayeredPhases;
+import org.eclipse.elk.alg.layered.graph.LEdge;
+import org.eclipse.elk.alg.layered.graph.LGraph;
+import org.eclipse.elk.alg.layered.graph.LNode;
+import org.eclipse.elk.alg.layered.graph.LPort;
+import org.eclipse.elk.alg.layered.intermediate.IntermediateProcessorStrategy;
+import org.eclipse.elk.alg.layered.options.InternalProperties;
+import org.eclipse.elk.alg.layered.options.LayeredOptions;
+import org.eclipse.elk.alg.layered.options.PortType;
+import org.eclipse.elk.core.alg.ILayoutPhase;
+import org.eclipse.elk.core.alg.LayoutProcessorConfiguration;
+import org.eclipse.elk.core.util.IElkProgressMonitor;
+
+import com.google.common.collect.Lists;
+
+/**
+ * This simplistic approach for the Group Model Order problem is based on the Model Order Cycle Breaker.
+ * It uses the GroupID to decide edge reversals between different node-types. For connections within the same type of
+ * nodes it uses the normal Model Order Cycle breaker approach.
+ * NOTICE: For languages that alternate frequently between different nodes (e.g. LinguaFranca) this approach degrades
+ * into simply using the GroupID without the influence of Model Order.
+ * @author mwr
+ *
+ */
+public class StrictGroupOrderCycleBreaker implements ILayoutPhase {
+
+ private int firstSeparateModelOrder;
+ private int lastSeparateModelOrder;
+
+ /** intermediate processing configuration. */
+ private static final LayoutProcessorConfiguration INTERMEDIATE_PROCESSING_CONFIGURATION =
+ LayoutProcessorConfiguration.create()
+ .addAfter(LayeredPhases.P5_EDGE_ROUTING, IntermediateProcessorStrategy.REVERSED_EDGE_RESTORER);
+
+ @Override
+ public LayoutProcessorConfiguration getLayoutProcessorConfiguration(final LGraph graph) {
+ return INTERMEDIATE_PROCESSING_CONFIGURATION;
+ }
+
+ @Override
+ public void process(final LGraph layeredGraph, final IElkProgressMonitor monitor) {
+ monitor.begin("Model order cycle breaking", 1);
+
+ // Reset FIRST_SEPARATE and LAST_SEPARATE counters.
+ firstSeparateModelOrder = 0;
+ lastSeparateModelOrder = 0;
+
+ // gather edges that point to the wrong direction
+ List revEdges = Lists.newArrayList();
+
+ // One needs an offset to make sure that the model order of nodes with port constraints is
+ // always lower/higher than that of other nodes.
+ // E.g. A node with the LAST constraint needs to have a model order m = modelOrder + offset
+ // such that m > m(n) with m(n) being the model order of a normal node n (without constraints).
+ // Such that the highest model order has to be used as an offset
+ int offset = layeredGraph.getLayerlessNodes().size();
+ for (LNode node : layeredGraph.getLayerlessNodes()) {
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ offset = Math.max(offset, node.getProperty(InternalProperties.MODEL_ORDER) + 1);
+ }
+ }
+
+ final int offset_final = offset;
+
+ for (LNode source : layeredGraph.getLayerlessNodes()) {
+ int modelOrderSource = computeConstraintModelOrder(source, offset);
+ int groupIDSource = source.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+
+ source.getOutgoingEdges().forEach(edge -> {
+ LNode target = edge.getTarget().getNode();
+ int groupIDTarget = target.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D);
+ int modelOrderTarget = computeConstraintModelOrder(target, offset_final);
+ // Nodes with -1 as GroupID are external ports, which are never part of a cycle.
+ if (groupIDTarget == -1 || groupIDSource == -1) {
+ return;
+ }
+ // If groups do not match, use groupID to reverse
+ if (groupIDTarget < groupIDSource) {
+ revEdges.add(edge);
+ }
+ // If the groups match use the Model Order
+ else if (modelOrderTarget < modelOrderSource && groupIDTarget == groupIDSource) {
+ revEdges.add(edge);
+ }
+ });
+ }
+
+ // reverse the gathered edges
+ for (LEdge edge : revEdges) {
+ edge.reverse(layeredGraph, true);
+ layeredGraph.setProperty(InternalProperties.CYCLIC, true);
+ }
+ revEdges.clear();
+ monitor.done();
+ }
+
+ /**
+ * Set model order to a value such that the constraint is respected and the ordering between nodes with
+ * the same constraint is preserved.
+ * The order should be FIRST_SEPARATE < FIRST < NORMAL < LAST < LAST_SEPARATE. The offset is used to make sure the
+ * all nodes have unique model orders.
+ * @param node The LNode
+ * @param offset The offset between FIRST, FIRST_SEPARATE, NORMAL, LAST_SEPARATE, and LAST nodes for unique order
+ * @return A unique model order
+ */
+ private int computeConstraintModelOrder(final LNode node, final int offset) {
+ int modelOrder = 0;
+ switch (node.getProperty(LayeredOptions.LAYERING_LAYER_CONSTRAINT)) {
+ case FIRST_SEPARATE:
+ modelOrder = 2 * -offset + firstSeparateModelOrder;
+ firstSeparateModelOrder++;
+ break;
+ case FIRST:
+ modelOrder = -offset;
+ break;
+ case LAST:
+ modelOrder = offset;
+ break;
+ case LAST_SEPARATE:
+ modelOrder = 2 * offset + lastSeparateModelOrder;
+ lastSeparateModelOrder++;
+ break;
+ default:
+ break;
+ }
+ if (node.hasProperty(InternalProperties.MODEL_ORDER)) {
+ modelOrder += node.getProperty(InternalProperties.MODEL_ORDER);
+ }
+ return modelOrder;
+ }
+
+}
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p2layers/DepthFirstModelOrderLayerer.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p2layers/DepthFirstModelOrderLayerer.java
index 9681ea9456..5ae7f37317 100644
--- a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p2layers/DepthFirstModelOrderLayerer.java
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p2layers/DepthFirstModelOrderLayerer.java
@@ -71,6 +71,12 @@ public final class DepthFirstModelOrderLayerer implements ILayoutPhase nodesToPlace;
+ /**
+ * Saves the maximum layer the nodes that still have to be assigned to a layer will be placed in.
+ * This is necessary to determine the actual offset of the nodes to place.
+ */
+ private int maxToPlace = 0;
+
@Override
public LayoutProcessorConfiguration getLayoutProcessorConfiguration(final LGraph graph) {
return BASELINE_PROCESSING_CONFIGURATION;
@@ -123,6 +129,9 @@ public void process(final LGraph thelayeredGraph, final IElkProgressMonitor moni
if (!nodesToPlace.isEmpty()) {
if (layerDiff > 0) {
// Case some dependency to the existing graph was found add all nodes to their layers.
+ for (LNode toPlace : nodesToPlace) {
+ toPlace.id += maxLayer - maxToPlace;
+ }
placeNodesToPlace();
// Remove all nodes since they are now placed correctly.
nodesToPlace.clear();
@@ -131,6 +140,7 @@ public void process(final LGraph thelayeredGraph, final IElkProgressMonitor moni
// Case nodes cannot be placed without the need to move them later.
nodesToPlace.add(node);
node.id = desiredLayer;
+ maxToPlace = Math.max(maxToPlace, desiredLayer);
// Add dummy nodes and give them their desired layer id.
for (LEdge edge : node.getIncomingEdges()) {
if (edge.getSource().getNode().getLayer() == null
@@ -161,6 +171,7 @@ public void process(final LGraph thelayeredGraph, final IElkProgressMonitor moni
// Case no incoming connections, save the node to be placed.
nodesToPlace.add(node);
node.id = 0; // Save the layer the node will be placed in.
+ maxToPlace = Math.max(maxToPlace, 0);
currentLayer = layeredGraph.getLayers().get(0);
currentLayerId = 0;
@@ -209,7 +220,7 @@ private boolean isConnectedToCurrentLayer(final LNode node) {
boolean connectedViaLabelDummy;
if (nodesToPlace.isEmpty()) {
// Case the node to check already has a layer.
- // TODO this may case an NPE if getLayer is null;
+ // This may case an NPE if getLayer is null;
directlyConnected = edge.getSource().getNode().getType() == NodeType.NORMAL
&& edge.getSource().getNode().getLayer() != null
&& edge.getSource().getNode().getLayer().id == currentLayerId;
@@ -289,6 +300,7 @@ private int getMaxConnectedLayer(final int layerId, final LNode node) {
* Places the nodes to place in their desired layer.
*/
public void placeNodesToPlace() {
+ maxToPlace = 0;
for (LNode nodeToPlace : nodesToPlace) {
if (nodeToPlace.id >= layeredGraph.getLayers().size()) {
// Add a normal and a dummy layer.
diff --git a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p3order/ModelOrderBarycenterHeuristic.java b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p3order/ModelOrderBarycenterHeuristic.java
index f70fa6577d..cfe2128dc0 100644
--- a/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p3order/ModelOrderBarycenterHeuristic.java
+++ b/plugins/org.eclipse.elk.alg.layered/src/org/eclipse/elk/alg/layered/p3order/ModelOrderBarycenterHeuristic.java
@@ -58,7 +58,14 @@ public ModelOrderBarycenterHeuristic(final ForsterConstraintResolver constraintR
return transitiveComparison;
}
if (n1.hasProperty(InternalProperties.MODEL_ORDER)
- && n2.hasProperty(InternalProperties.MODEL_ORDER)) {
+ && n2.hasProperty(InternalProperties.MODEL_ORDER)
+ // Only use model order within the same group
+ && n1.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D) ==
+ n2.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D)
+ // only use model order for group 4 (reactions)
+ //&& n1.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D) == 4
+ //&& n2.getProperty(LayeredOptions.CONSIDER_MODEL_ORDER_GROUP_I_D) == 4
+ ) {
int value = Integer.compare(n1.getProperty(InternalProperties.MODEL_ORDER),
n2.getProperty(InternalProperties.MODEL_ORDER));
if (value < 0) {
diff --git a/plugins/org.eclipse.elk.alg.mrtree/.classpath b/plugins/org.eclipse.elk.alg.mrtree/.classpath
index f0c5549859..ad5e13cce7 100644
--- a/plugins/org.eclipse.elk.alg.mrtree/.classpath
+++ b/plugins/org.eclipse.elk.alg.mrtree/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.alg.mrtree/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.alg.mrtree/.settings/org.eclipse.jdt.core.prefs
index 5ed2aebf75..e3ca4e0d0c 100644
--- a/plugins/org.eclipse.elk.alg.mrtree/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.alg.mrtree/.settings/org.eclipse.jdt.core.prefs
@@ -8,9 +8,17 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+<<<<<<< HEAD
org.eclipse.jdt.core.compiler.source=1.8
+=======
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+>>>>>>> parent of f5a08b471 (Revert "Purged Java 1.8 from setup and classpath and manifests.")
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -18,17 +26,20 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=16
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -114,11 +125,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -149,6 +161,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -173,13 +187,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -227,6 +245,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -263,9 +283,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -291,7 +314,11 @@ org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.elk.alg.mrtree/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.alg.mrtree/META-INF/MANIFEST.MF
index 6a6d3f8597..7e52d75fde 100644
--- a/plugins/org.eclipse.elk.alg.mrtree/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.alg.mrtree/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-Name: ELK Mr. Tree Layout Algorithm
Bundle-SymbolicName: org.eclipse.elk.alg.mrtree;singleton:=true
Bundle-Version: 0.9.0.qualifier
Bundle-Vendor: Eclipse Modeling Project
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.elk.alg.common,
org.eclipse.elk.core,
org.eclipse.elk.graph,
diff --git a/plugins/org.eclipse.elk.alg.radial/.classpath b/plugins/org.eclipse.elk.alg.radial/.classpath
index f0c5549859..ad5e13cce7 100644
--- a/plugins/org.eclipse.elk.alg.radial/.classpath
+++ b/plugins/org.eclipse.elk.alg.radial/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.alg.radial/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.alg.radial/META-INF/MANIFEST.MF
index a28cfdebae..f68b1bc6b7 100644
--- a/plugins/org.eclipse.elk.alg.radial/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.alg.radial/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Radial Layout Algorithm
Bundle-SymbolicName: org.eclipse.elk.alg.radial;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.google.guava,
org.eclipse.elk.core,
org.eclipse.elk.graph,
diff --git a/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/compaction/AbstractRadiusExtensionCompaction.java b/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/compaction/AbstractRadiusExtensionCompaction.java
index ee84ded9c7..6723ec5cf5 100644
--- a/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/compaction/AbstractRadiusExtensionCompaction.java
+++ b/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/compaction/AbstractRadiusExtensionCompaction.java
@@ -130,10 +130,10 @@ public boolean overlap(final ElkNode node1, final ElkNode node2) {
double y1 = node1.getY() - spacing / 2;
double y2 = node2.getY() - spacing / 2;
- double width1 = node1.getWidth() + spacing / 2;
- double width2 = node2.getWidth() + spacing / 2;
- double height1 = node1.getHeight() + spacing / 2;
- double height2 = node2.getHeight() + spacing / 2;
+ double width1 = node1.getWidth() + spacing;
+ double width2 = node2.getWidth() + spacing;
+ double height1 = node1.getHeight() + spacing;
+ double height2 = node2.getHeight() + spacing;
if ((x1 < x2 + width2 && x2 < x1) && (y1 < y2 + height2 && y2 < y1)) {
// left upper and right lower corner overlap
diff --git a/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/overlaps/RadiusExtensionOverlapRemoval.java b/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/overlaps/RadiusExtensionOverlapRemoval.java
index 32bf49bd81..3f43ce84a5 100644
--- a/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/overlaps/RadiusExtensionOverlapRemoval.java
+++ b/plugins/org.eclipse.elk.alg.radial/src/org/eclipse/elk/alg/radial/intermediate/overlaps/RadiusExtensionOverlapRemoval.java
@@ -74,19 +74,17 @@ public void extend(final ElkNode graph, final List nodes, IElkProgressM
Set nextLevelNodes = RadialUtil.getNextLevelNodeSet(nodes);
// Calculate the moved distance which is the amount all children and grandchildren have to be moved.
int index = 1;
- while (!nextLevelNodes.isEmpty()) {
+ if (!nextLevelNodes.isEmpty()) {
for(ElkNode nextLevelNode : nextLevelNodes) {
moveNode(nextLevelNode, movedDistance);
}
progressMonitor.logGraph(graph, "Child movement " + index);
- nextLevelNodes = RadialUtil.getNextLevelNodeSet(new ArrayList<>(nextLevelNodes));
index++;
}
if (sorter != null) {
sorter.sort(new ArrayList<>(nextLevelNodes));
}
- progressMonitor.logGraph(graph, "After ancestor movement");
extend(graph, new ArrayList<>(nextLevelNodes), progressMonitor);
}
}
diff --git a/plugins/org.eclipse.elk.alg.rectpacking/.classpath b/plugins/org.eclipse.elk.alg.rectpacking/.classpath
index f0c5549859..ad5e13cce7 100644
--- a/plugins/org.eclipse.elk.alg.rectpacking/.classpath
+++ b/plugins/org.eclipse.elk.alg.rectpacking/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.alg.rectpacking/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.alg.rectpacking/.settings/org.eclipse.jdt.core.prefs
index 5ed2aebf75..e3ca4e0d0c 100644
--- a/plugins/org.eclipse.elk.alg.rectpacking/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.alg.rectpacking/.settings/org.eclipse.jdt.core.prefs
@@ -8,9 +8,17 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+<<<<<<< HEAD
org.eclipse.jdt.core.compiler.source=1.8
+=======
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+>>>>>>> parent of f5a08b471 (Revert "Purged Java 1.8 from setup and classpath and manifests.")
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -18,17 +26,20 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=16
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -114,11 +125,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -149,6 +161,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -173,13 +187,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -227,6 +245,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -263,9 +283,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -291,7 +314,11 @@ org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.elk.alg.rectpacking/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.alg.rectpacking/META-INF/MANIFEST.MF
index 355b04155b..b36e101203 100644
--- a/plugins/org.eclipse.elk.alg.rectpacking/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.alg.rectpacking/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-Name: ELK Rectangle Packing Algorithm
Bundle-SymbolicName: org.eclipse.elk.alg.rectpacking;singleton:=true
Bundle-Version: 0.9.0.qualifier
Bundle-Vendor: Eclipse Modeling Project
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.elk.alg.common,
org.eclipse.elk.core,
org.eclipse.elk.graph,
diff --git a/plugins/org.eclipse.elk.alg.spore/.classpath b/plugins/org.eclipse.elk.alg.spore/.classpath
index f0c5549859..ad5e13cce7 100644
--- a/plugins/org.eclipse.elk.alg.spore/.classpath
+++ b/plugins/org.eclipse.elk.alg.spore/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.alg.spore/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.alg.spore/.settings/org.eclipse.jdt.core.prefs
index 9ea8ecfd5a..d1d4d0abd6 100644
--- a/plugins/org.eclipse.elk.alg.spore/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.alg.spore/.settings/org.eclipse.jdt.core.prefs
@@ -1,5 +1,15 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -7,17 +17,20 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=16
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -103,11 +116,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -138,6 +152,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -162,13 +178,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -216,6 +236,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -252,9 +274,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -280,7 +305,11 @@ org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.elk.alg.spore/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.alg.spore/META-INF/MANIFEST.MF
index 8d15611230..4951404996 100644
--- a/plugins/org.eclipse.elk.alg.spore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.alg.spore/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-Name: ELK SPOrE
Bundle-SymbolicName: org.eclipse.elk.alg.spore;singleton:=true
Bundle-Version: 0.9.0.qualifier
Bundle-Vendor: Eclipse Modeling Project
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.google.guava,
org.eclipse.elk.graph,
org.eclipse.elk.core,
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/.classpath b/plugins/org.eclipse.elk.alg.topdownpacking/.classpath
index f0c5549859..ad5e13cce7 100644
--- a/plugins/org.eclipse.elk.alg.topdownpacking/.classpath
+++ b/plugins/org.eclipse.elk.alg.topdownpacking/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.alg.topdownpacking/.settings/org.eclipse.jdt.core.prefs
index 5ed2aebf75..e3ca4e0d0c 100644
--- a/plugins/org.eclipse.elk.alg.topdownpacking/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.alg.topdownpacking/.settings/org.eclipse.jdt.core.prefs
@@ -8,9 +8,17 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+<<<<<<< HEAD
org.eclipse.jdt.core.compiler.source=1.8
+=======
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+>>>>>>> parent of f5a08b471 (Revert "Purged Java 1.8 from setup and classpath and manifests.")
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -18,17 +26,20 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=16
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -114,11 +125,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -149,6 +161,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -173,13 +187,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -227,6 +245,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -263,9 +283,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -291,7 +314,11 @@ org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.alg.topdownpacking/META-INF/MANIFEST.MF
index ad1a164263..b381edbd95 100644
--- a/plugins/org.eclipse.elk.alg.topdownpacking/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.alg.topdownpacking/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-Name: ELK Topdown Packing Algorithm
Bundle-SymbolicName: org.eclipse.elk.alg.topdownpacking;singleton:=true
Bundle-Version: 0.9.0.qualifier
Bundle-Vendor: Eclipse Modeling Project
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: org.eclipse.elk.core,
org.eclipse.elk.graph,
org.eclipse.elk.alg.common,
diff --git a/plugins/org.eclipse.elk.conn.gmf/.classpath b/plugins/org.eclipse.elk.conn.gmf/.classpath
index 2534a1484b..ad5e13cce7 100644
--- a/plugins/org.eclipse.elk.conn.gmf/.classpath
+++ b/plugins/org.eclipse.elk.conn.gmf/.classpath
@@ -1,8 +1,8 @@
+
+
-
-
diff --git a/plugins/org.eclipse.elk.conn.gmf/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.conn.gmf/.settings/org.eclipse.jdt.core.prefs
index 5ed2aebf75..e3ca4e0d0c 100644
--- a/plugins/org.eclipse.elk.conn.gmf/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.conn.gmf/.settings/org.eclipse.jdt.core.prefs
@@ -8,9 +8,17 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+<<<<<<< HEAD
org.eclipse.jdt.core.compiler.source=1.8
+=======
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+>>>>>>> parent of f5a08b471 (Revert "Purged Java 1.8 from setup and classpath and manifests.")
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -18,17 +26,20 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=16
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -114,11 +125,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -149,6 +161,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -173,13 +187,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -227,6 +245,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -263,9 +283,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -291,7 +314,11 @@ org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.elk.conn.gmf/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.conn.gmf/META-INF/MANIFEST.MF
index 5d5f8c4f64..150e7e1f2f 100644
--- a/plugins/org.eclipse.elk.conn.gmf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.conn.gmf/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-Name: ELK Layout Connector for GMF
Bundle-SymbolicName: org.eclipse.elk.conn.gmf;singleton:=true
Bundle-Version: 0.9.0.qualifier
Bundle-Vendor: Eclipse Modeling Project
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.conn.gmf
Require-Bundle: org.eclipse.gef;bundle-version="3.5.0",
org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.2.0",
diff --git a/plugins/org.eclipse.elk.core.debug.grandom.ide/.classpath b/plugins/org.eclipse.elk.core.debug.grandom.ide/.classpath
index 9081d4f703..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.core.debug.grandom.ide/.classpath
+++ b/plugins/org.eclipse.elk.core.debug.grandom.ide/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.core.debug.grandom.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.debug.grandom.ide/META-INF/MANIFEST.MF
index c1b6f970b7..c99bd56e55 100644
--- a/plugins/org.eclipse.elk.core.debug.grandom.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.debug.grandom.ide/META-INF/MANIFEST.MF
@@ -10,6 +10,6 @@ Require-Bundle: org.eclipse.elk.core.debug.grandom,
org.eclipse.xtext.ide,
org.eclipse.xtext.xbase.ide,
org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.core.debug.grandom.ide.contentassist.antlr.internal,
org.eclipse.elk.core.debug.grandom.ide.contentassist.antlr
diff --git a/plugins/org.eclipse.elk.core.debug.grandom.ide/src-gen/org/eclipse/elk/core/debug/grandom/ide/AbstractGRandomIdeModule.java b/plugins/org.eclipse.elk.core.debug.grandom.ide/src-gen/org/eclipse/elk/core/debug/grandom/ide/AbstractGRandomIdeModule.java
index 32da75bebf..8196096946 100644
--- a/plugins/org.eclipse.elk.core.debug.grandom.ide/src-gen/org/eclipse/elk/core/debug/grandom/ide/AbstractGRandomIdeModule.java
+++ b/plugins/org.eclipse.elk.core.debug.grandom.ide/src-gen/org/eclipse/elk/core/debug/grandom/ide/AbstractGRandomIdeModule.java
@@ -9,8 +9,6 @@
*******************************************************************************/
package org.eclipse.elk.core.debug.grandom.ide;
-import com.google.inject.Binder;
-import com.google.inject.name.Names;
import org.eclipse.elk.core.debug.grandom.ide.contentassist.antlr.GRandomParser;
import org.eclipse.elk.core.debug.grandom.ide.contentassist.antlr.internal.InternalGRandomLexer;
import org.eclipse.xtext.ide.DefaultIdeModule;
@@ -22,8 +20,11 @@
import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
import org.eclipse.xtext.ide.refactoring.IRenameStrategy2;
-import org.eclipse.xtext.ide.server.rename.IRenameService;
-import org.eclipse.xtext.ide.server.rename.RenameService;
+import org.eclipse.xtext.ide.server.rename.IRenameService2;
+import org.eclipse.xtext.ide.server.rename.RenameService2;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
/**
* Manual modifications go to {@link GRandomIdeModule}.
@@ -54,8 +55,8 @@ public Class extends IPrefixMatcher> bindIPrefixMatcher() {
}
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
- public Class extends IRenameService> bindIRenameService() {
- return RenameService.class;
+ public Class extends IRenameService2> bindIRenameService() {
+ return RenameService2.class;
}
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
diff --git a/plugins/org.eclipse.elk.core.debug.grandom.ui/.classpath b/plugins/org.eclipse.elk.core.debug.grandom.ui/.classpath
index 9081d4f703..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.core.debug.grandom.ui/.classpath
+++ b/plugins/org.eclipse.elk.core.debug.grandom.ui/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.core.debug.grandom.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.debug.grandom.ui/META-INF/MANIFEST.MF
index 2c611a4438..bc6522f2a0 100644
--- a/plugins/org.eclipse.elk.core.debug.grandom.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.debug.grandom.ui/META-INF/MANIFEST.MF
@@ -21,7 +21,7 @@ Require-Bundle: org.eclipse.elk.core.debug.grandom,
org.eclipse.elk.graph,
org.eclipse.elk.core
Import-Package: org.apache.log4j
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.core.debug.grandom.ui,
org.eclipse.elk.core.debug.grandom.ui.contentassist,
org.eclipse.elk.core.debug.grandom.ui.internal,
diff --git a/plugins/org.eclipse.elk.core.debug.grandom/.classpath b/plugins/org.eclipse.elk.core.debug.grandom/.classpath
index 9081d4f703..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.core.debug.grandom/.classpath
+++ b/plugins/org.eclipse.elk.core.debug.grandom/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.core.debug.grandom/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.debug.grandom/META-INF/MANIFEST.MF
index 4c3db8093a..50c64726e2 100644
--- a/plugins/org.eclipse.elk.core.debug.grandom/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.debug.grandom/META-INF/MANIFEST.MF
@@ -17,7 +17,7 @@ Require-Bundle: org.eclipse.xtext,
org.eclipse.emf.common,
org.eclipse.elk.graph,
org.eclipse.elk.core
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.core.debug.grandom,
org.eclipse.elk.core.debug.grandom.gRandom,
org.eclipse.elk.core.debug.grandom.gRandom.impl,
diff --git a/plugins/org.eclipse.elk.core.debug/.classpath b/plugins/org.eclipse.elk.core.debug/.classpath
index 428337e560..47ce7cd075 100644
--- a/plugins/org.eclipse.elk.core.debug/.classpath
+++ b/plugins/org.eclipse.elk.core.debug/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.core.debug/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.core.debug/.settings/org.eclipse.jdt.core.prefs
index 5ed2aebf75..b5c3528c4a 100644
--- a/plugins/org.eclipse.elk.core.debug/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.core.debug/.settings/org.eclipse.jdt.core.prefs
@@ -8,8 +8,15 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+<<<<<<< HEAD
org.eclipse.jdt.core.compiler.source=1.8
+=======
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+>>>>>>> parent of f5a08b471 (Revert "Purged Java 1.8 from setup and classpath and manifests.")
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
diff --git a/plugins/org.eclipse.elk.core.debug/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.debug/META-INF/MANIFEST.MF
index e85ba2f433..3bc214e67f 100644
--- a/plugins/org.eclipse.elk.core.debug/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.debug/META-INF/MANIFEST.MF
@@ -17,6 +17,6 @@ Require-Bundle: com.google.guava,
org.eclipse.xtend.lib,
org.eclipse.xtend.lib.macro,
org.eclipse.xtext.xbase.lib
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Bundle-Vendor: Eclipse Modeling Project
diff --git a/plugins/org.eclipse.elk.core.meta.ui/.classpath b/plugins/org.eclipse.elk.core.meta.ui/.classpath
index 9081d4f703..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.core.meta.ui/.classpath
+++ b/plugins/org.eclipse.elk.core.meta.ui/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.core.meta.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.meta.ui/META-INF/MANIFEST.MF
index 5ea3dca99d..cb035559af 100644
--- a/plugins/org.eclipse.elk.core.meta.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.meta.ui/META-INF/MANIFEST.MF
@@ -22,7 +22,7 @@ Require-Bundle: org.eclipse.elk.core.meta,
org.eclipse.jdt.debug.ui,
org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"
Import-Package: org.apache.log4j
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.core.meta.ui.internal,
org.eclipse.elk.core.meta.ui.quickfix,
org.eclipse.elk.core.meta.ui.contentassist,
diff --git a/plugins/org.eclipse.elk.core.meta.ui/src-gen/org/eclipse/elk/core/meta/ide/AbstractMetaDataIdeModule.java b/plugins/org.eclipse.elk.core.meta.ui/src-gen/org/eclipse/elk/core/meta/ide/AbstractMetaDataIdeModule.java
index 2407577598..946e966a84 100644
--- a/plugins/org.eclipse.elk.core.meta.ui/src-gen/org/eclipse/elk/core/meta/ide/AbstractMetaDataIdeModule.java
+++ b/plugins/org.eclipse.elk.core.meta.ui/src-gen/org/eclipse/elk/core/meta/ide/AbstractMetaDataIdeModule.java
@@ -9,8 +9,6 @@
*******************************************************************************/
package org.eclipse.elk.core.meta.ide;
-import com.google.inject.Binder;
-import com.google.inject.name.Names;
import org.eclipse.elk.core.meta.ide.contentassist.antlr.MetaDataParser;
import org.eclipse.elk.core.meta.ide.contentassist.antlr.internal.InternalMetaDataLexer;
import org.eclipse.xtext.ide.LexerIdeBindings;
@@ -21,10 +19,13 @@
import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
import org.eclipse.xtext.ide.refactoring.IRenameStrategy2;
-import org.eclipse.xtext.ide.server.rename.IRenameService;
-import org.eclipse.xtext.ide.server.rename.RenameService;
+import org.eclipse.xtext.ide.server.rename.IRenameService2;
+import org.eclipse.xtext.ide.server.rename.RenameService2;
import org.eclipse.xtext.xbase.ide.DefaultXbaseIdeModule;
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
/**
* Manual modifications go to {@link MetaDataIdeModule}.
*/
@@ -54,8 +55,8 @@ public Class extends IPrefixMatcher> bindIPrefixMatcher() {
}
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
- public Class extends IRenameService> bindIRenameService() {
- return RenameService.class;
+ public Class extends IRenameService2> bindIRenameService() {
+ return RenameService2.class;
}
// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
diff --git a/plugins/org.eclipse.elk.core.meta/.classpath b/plugins/org.eclipse.elk.core.meta/.classpath
index 9081d4f703..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.core.meta/.classpath
+++ b/plugins/org.eclipse.elk.core.meta/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.core.meta/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.meta/META-INF/MANIFEST.MF
index 6c074e0b37..9f3c00656e 100644
--- a/plugins/org.eclipse.elk.core.meta/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.meta/META-INF/MANIFEST.MF
@@ -18,7 +18,7 @@ Require-Bundle: org.eclipse.xtext;bundle-version="2.12.0",
org.eclipse.xtend.lib;bundle-version="2.14.0",
org.eclipse.emf.common,
org.eclipse.elk.graph
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.core.meta,
org.eclipse.elk.core.meta.formatting2,
org.eclipse.elk.core.meta.jvmmodel,
diff --git a/plugins/org.eclipse.elk.core.service/.classpath b/plugins/org.eclipse.elk.core.service/.classpath
index eca7bdba8f..e801ebfb46 100644
--- a/plugins/org.eclipse.elk.core.service/.classpath
+++ b/plugins/org.eclipse.elk.core.service/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.core.service/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.core.service/.settings/org.eclipse.jdt.core.prefs
index 5ed2aebf75..b5c3528c4a 100644
--- a/plugins/org.eclipse.elk.core.service/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.core.service/.settings/org.eclipse.jdt.core.prefs
@@ -8,8 +8,15 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+<<<<<<< HEAD
org.eclipse.jdt.core.compiler.source=1.8
+=======
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+>>>>>>> parent of f5a08b471 (Revert "Purged Java 1.8 from setup and classpath and manifests.")
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
diff --git a/plugins/org.eclipse.elk.core.service/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.service/META-INF/MANIFEST.MF
index ca0f141a24..1eea90e23b 100644
--- a/plugins/org.eclipse.elk.core.service/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.service/META-INF/MANIFEST.MF
@@ -7,14 +7,15 @@ Bundle-Version: 0.9.0.qualifier
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
com.google.inject;bundle-version="3.0.0";visibility:=reexport,
- org.eclipse.core.runtime,
+ org.eclipse.core.runtime;bundle-version=3.26.0,
org.eclipse.jface,
- org.eclipse.ui.workbench;bundle-version="3.105.0",
+ org.eclipse.ui.workbench,
org.eclipse.emf.edit;bundle-version="2.5.0",
org.eclipse.elk.graph,
- org.eclipse.elk.core;visibility:=reexport
+ org.eclipse.elk.core;visibility:=reexport,
+ org.eclipse.e4.ui.css.core;bundle-version="0.13.300"
Eclipse-RegisterBuddy: org.eclipse.elk.core
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.core.service,
org.eclipse.elk.core.service.internal;x-internal:=true,
org.eclipse.elk.core.service.util
diff --git a/plugins/org.eclipse.elk.core.service/pom.xml b/plugins/org.eclipse.elk.core.service/pom.xml
index f6675f212b..56f9542db5 100644
--- a/plugins/org.eclipse.elk.core.service/pom.xml
+++ b/plugins/org.eclipse.elk.core.service/pom.xml
@@ -1,6 +1,6 @@
diff --git a/plugins/org.eclipse.elk.core.ui/.classpath b/plugins/org.eclipse.elk.core.ui/.classpath
index 22f30643cb..edc8895124 100644
--- a/plugins/org.eclipse.elk.core.ui/.classpath
+++ b/plugins/org.eclipse.elk.core.ui/.classpath
@@ -1,7 +1,7 @@
-
-
+
+
diff --git a/plugins/org.eclipse.elk.core.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core.ui/META-INF/MANIFEST.MF
index 420e941ed3..4770cf878f 100644
--- a/plugins/org.eclipse.elk.core.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core.ui/META-INF/MANIFEST.MF
@@ -21,5 +21,5 @@ Require-Bundle: org.eclipse.ui;bundle-version="3.4.0",
org.eclipse.elk.graph,
org.eclipse.elk.core,
org.eclipse.elk.core.service
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.elk.core/.classpath b/plugins/org.eclipse.elk.core/.classpath
index f0c5549859..ad5e13cce7 100644
--- a/plugins/org.eclipse.elk.core/.classpath
+++ b/plugins/org.eclipse.elk.core/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/plugins/org.eclipse.elk.core/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.core/.settings/org.eclipse.jdt.core.prefs
index 5ed2aebf75..e3ca4e0d0c 100644
--- a/plugins/org.eclipse.elk.core/.settings/org.eclipse.jdt.core.prefs
+++ b/plugins/org.eclipse.elk.core/.settings/org.eclipse.jdt.core.prefs
@@ -8,9 +8,17 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+<<<<<<< HEAD
org.eclipse.jdt.core.compiler.source=1.8
+=======
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+>>>>>>> parent of f5a08b471 (Revert "Purged Java 1.8 from setup and classpath and manifests.")
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
@@ -18,17 +26,20 @@ org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_c
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=16
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
@@ -114,11 +125,12 @@ org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
@@ -149,6 +161,8 @@ org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
@@ -173,13 +187,17 @@ org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
@@ -227,6 +245,8 @@ org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do no
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
@@ -263,9 +283,12 @@ org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not inser
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
@@ -291,7 +314,11 @@ org.eclipse.jdt.core.formatter.tabulation.char=space
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/plugins/org.eclipse.elk.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.core/META-INF/MANIFEST.MF
index b85dc45488..2d92c39cda 100644
--- a/plugins/org.eclipse.elk.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.core/META-INF/MANIFEST.MF
@@ -24,5 +24,5 @@ Export-Package: org.eclipse.elk.core,
org.eclipse.elk.core.util.selection,
org.eclipse.elk.core.validation
Bundle-Vendor: Eclipse Modeling Project
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/docs/topdownlayout.md b/plugins/org.eclipse.elk.core/docs/topdownlayout.md
similarity index 100%
rename from plugins/org.eclipse.elk.alg.topdownpacking/docs/topdownlayout.md
rename to plugins/org.eclipse.elk.core/docs/topdownlayout.md
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/images/controller.png b/plugins/org.eclipse.elk.core/images/controller.png
similarity index 100%
rename from plugins/org.eclipse.elk.alg.topdownpacking/images/controller.png
rename to plugins/org.eclipse.elk.core/images/controller.png
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/images/hierarchical_parallel_example.png b/plugins/org.eclipse.elk.core/images/hierarchical_parallel_example.png
similarity index 100%
rename from plugins/org.eclipse.elk.alg.topdownpacking/images/hierarchical_parallel_example.png
rename to plugins/org.eclipse.elk.core/images/hierarchical_parallel_example.png
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/images/mixed_example.png b/plugins/org.eclipse.elk.core/images/mixed_example.png
similarity index 100%
rename from plugins/org.eclipse.elk.alg.topdownpacking/images/mixed_example.png
rename to plugins/org.eclipse.elk.core/images/mixed_example.png
diff --git a/plugins/org.eclipse.elk.alg.topdownpacking/images/topdown_example_combined1.png b/plugins/org.eclipse.elk.core/images/topdown_example_combined1.png
similarity index 100%
rename from plugins/org.eclipse.elk.alg.topdownpacking/images/topdown_example_combined1.png
rename to plugins/org.eclipse.elk.core/images/topdown_example_combined1.png
diff --git a/plugins/org.eclipse.elk.graph.json.text.ide/.classpath b/plugins/org.eclipse.elk.graph.json.text.ide/.classpath
index 8d26fa5987..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.graph.json.text.ide/.classpath
+++ b/plugins/org.eclipse.elk.graph.json.text.ide/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.graph.json.text.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph.json.text.ide/META-INF/MANIFEST.MF
index 1e30e37ff3..12cd53ed6e 100644
--- a/plugins/org.eclipse.elk.graph.json.text.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph.json.text.ide/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@ Require-Bundle: org.eclipse.elk.core,
org.eclipse.xtext.ide,
org.eclipse.xtext.xbase.ide,
org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.graph.json.text.ide,
org.eclipse.elk.graph.json.text.ide.contentassist,
org.eclipse.elk.graph.json.text.ide.contentassist.antlr,
diff --git a/plugins/org.eclipse.elk.graph.json.text.ui/.classpath b/plugins/org.eclipse.elk.graph.json.text.ui/.classpath
index 8d26fa5987..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.graph.json.text.ui/.classpath
+++ b/plugins/org.eclipse.elk.graph.json.text.ui/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.graph.json.text.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph.json.text.ui/META-INF/MANIFEST.MF
index bb78bc9771..2310412cc6 100644
--- a/plugins/org.eclipse.elk.graph.json.text.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph.json.text.ui/META-INF/MANIFEST.MF
@@ -23,7 +23,7 @@ Require-Bundle: org.eclipse.elk.core,
org.eclipse.xtext.xbase.lib;bundle-version="2.14.0",
org.eclipse.xtend.lib;bundle-version="2.14.0";resolution:=optional
Import-Package: org.apache.log4j
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.graph.json.text.ui.quickfix,
org.eclipse.elk.graph.json.text.ui.contentassist,
org.eclipse.elk.graph.json.text.ui.internal
diff --git a/plugins/org.eclipse.elk.graph.json.text/.classpath b/plugins/org.eclipse.elk.graph.json.text/.classpath
index 8d26fa5987..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.graph.json.text/.classpath
+++ b/plugins/org.eclipse.elk.graph.json.text/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.graph.json.text/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph.json.text/META-INF/MANIFEST.MF
index fef80d4230..3cf7cf2a90 100644
--- a/plugins/org.eclipse.elk.graph.json.text/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph.json.text/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@ Require-Bundle: org.eclipse.elk.core,
org.eclipse.xtext.util,
org.eclipse.xtend.lib;bundle-version="2.14.0",
org.antlr.runtime;bundle-version="[3.2.0,3.2.1)"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.graph.json.text,
org.eclipse.elk.graph.json.text.conversion,
org.eclipse.elk.graph.json.text.formatting2,
diff --git a/plugins/org.eclipse.elk.graph.json.text/build.properties b/plugins/org.eclipse.elk.graph.json.text/build.properties
index 652c6e679b..a04f5f87be 100644
--- a/plugins/org.eclipse.elk.graph.json.text/build.properties
+++ b/plugins/org.eclipse.elk.graph.json.text/build.properties
@@ -17,4 +17,4 @@ additional.bundles = org.eclipse.xtext.xbase,\
org.apache.commons.logging,\
org.apache.log4j,\
com.ibm.icu,\
- org.eclipse.xtext.generator
+ org.eclipse.xtext.xtext.generator
diff --git a/plugins/org.eclipse.elk.graph.json/.classpath b/plugins/org.eclipse.elk.graph.json/.classpath
index 87e8cd6596..030fd399f0 100644
--- a/plugins/org.eclipse.elk.graph.json/.classpath
+++ b/plugins/org.eclipse.elk.graph.json/.classpath
@@ -1,8 +1,8 @@
-
+
-
-
+
+
diff --git a/plugins/org.eclipse.elk.graph.json/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph.json/META-INF/MANIFEST.MF
index 65650bf153..2389ec0b84 100644
--- a/plugins/org.eclipse.elk.graph.json/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph.json/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@ Require-Bundle: com.google.guava,
org.eclipse.xtext.xbase.lib,
org.eclipse.xtend.lib,
org.eclipse.xtend.lib.macro
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.elk.graph.json
diff --git a/plugins/org.eclipse.elk.graph.text.ide/.classpath b/plugins/org.eclipse.elk.graph.text.ide/.classpath
index 64c59ce2d8..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.graph.text.ide/.classpath
+++ b/plugins/org.eclipse.elk.graph.text.ide/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.graph.text.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph.text.ide/META-INF/MANIFEST.MF
index 0b5427cd98..06a8962f39 100644
--- a/plugins/org.eclipse.elk.graph.text.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph.text.ide/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@ Require-Bundle: org.eclipse.xtext.ide;bundle-version="2.12.0",
org.eclipse.elk.core,
org.eclipse.elk.graph.text,
org.antlr.runtime
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.graph.text.ide,
org.eclipse.elk.graph.text.ide.contentassist,
org.eclipse.elk.graph.text.ide.contentassist.antlr,
diff --git a/plugins/org.eclipse.elk.graph.text.ui/.classpath b/plugins/org.eclipse.elk.graph.text.ui/.classpath
index 9081d4f703..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.graph.text.ui/.classpath
+++ b/plugins/org.eclipse.elk.graph.text.ui/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.graph.text.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph.text.ui/META-INF/MANIFEST.MF
index 2ddb25e69e..673cc2a807 100644
--- a/plugins/org.eclipse.elk.graph.text.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph.text.ui/META-INF/MANIFEST.MF
@@ -23,7 +23,7 @@ Require-Bundle: org.eclipse.elk.core,
org.eclipse.xtend.lib;resolution:=optional,
org.eclipse.xtext.xbase.lib
Import-Package: org.apache.log4j
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.graph.text.ui,
org.eclipse.elk.graph.text.ui.contentassist,
org.eclipse.elk.graph.text.ui.internal,
diff --git a/plugins/org.eclipse.elk.graph.text/.classpath b/plugins/org.eclipse.elk.graph.text/.classpath
index 9081d4f703..a70cf0d9af 100644
--- a/plugins/org.eclipse.elk.graph.text/.classpath
+++ b/plugins/org.eclipse.elk.graph.text/.classpath
@@ -1,9 +1,9 @@
-
-
-
-
+
+
+
+
diff --git a/plugins/org.eclipse.elk.graph.text/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph.text/META-INF/MANIFEST.MF
index 7b0c74e1fa..f86bec69d1 100644
--- a/plugins/org.eclipse.elk.graph.text/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph.text/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@ Require-Bundle: org.eclipse.elk.core,
org.eclipse.xtext.util,
org.eclipse.xtend.lib,
org.antlr.runtime
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.eclipse.elk.graph.text,
org.eclipse.elk.graph.text.conversion,
org.eclipse.elk.graph.text.formatting2,
diff --git a/plugins/org.eclipse.elk.graph/.classpath b/plugins/org.eclipse.elk.graph/.classpath
index 01836c4842..edc8895124 100644
--- a/plugins/org.eclipse.elk.graph/.classpath
+++ b/plugins/org.eclipse.elk.graph/.classpath
@@ -1,7 +1,7 @@
-
+
-
+
diff --git a/plugins/org.eclipse.elk.graph/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.graph/META-INF/MANIFEST.MF
index 045f859a2c..46239e74c0 100644
--- a/plugins/org.eclipse.elk.graph/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.elk.graph/META-INF/MANIFEST.MF
@@ -13,4 +13,4 @@ Export-Package: org.eclipse.elk.graph,
Require-Bundle: org.eclipse.emf.ecore;bundle-version="2.10.0";visibility:=reexport,
com.google.guava
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
diff --git a/setups/EclipseLayoutKernel.setup b/setups/EclipseLayoutKernel.setup
index e1dbe52130..29408b9b36 100644
--- a/setups/EclipseLayoutKernel.setup
+++ b/setups/EclipseLayoutKernel.setup
@@ -72,10 +72,22 @@
Initialize JDT's package explorer to show working sets as its root objects
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <section name="Workbench">
+ <section name="org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart">
+ <item value="true" key="group_libraries"/>
+ <item value="false" key="linkWithEditor"/>
+ <item value="2" key="layout"/>
+ <item value="2" key="rootMode"/>
+ <item value="<?xml version="1.0" encoding="UTF-8"?>
<packageExplorer configured="true" group_libraries="1" layout="2" linkWithEditor="0" rootMode="2" sortWorkingSets="false" workingSetName="">
<localWorkingSetManager>
<workingSet editPageId="org.eclipse.jdt.internal.ui.OthersWorkingSet" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1382792884467_1" label="Other Projects" name="Other Projects"/>
</localWorkingSetManager>
<activeWorkingSet workingSetName="Other Projects"/>
<allWorkingSets workingSetName="Other Projects"/>
</packageExplorer>" key="memento"/>
+ </section>
+ </section>
+
+
@@ -89,7 +101,7 @@
name="org.eclipse.pde.feature.group"/>
+ versionRange="[2.28.0,2.29.0)"/>
+
+ url="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.28.0"/>
+
+
Install the tools needed in the IDE to work with the source code for ${scope.project.label}
+
+ <?xml version="1.0" encoding="UTF-8"?>
+
+ <checkstyle-configurations file-format-version="5.0.0" default-check-configuration="ELK Checkstyle Configuration">
+ <check-configuration name="ELK Checkstyle Configuration" location="/org.eclipse.elk.config/checkstyle.xml" type="project" description="">
+ <additional-data name="protect-config-file" value="false"/>
+ </check-configuration>
+ </checkstyle-configurations>
+
Choose the compatibility level of the target platform
+ version="JavaSE-11"
+ location="${jre.location-11}">
Define the JRE needed to compile and run the Java projects of ${scope.project.label}
+ versionRange="2.7.0"/>
+ versionRange="[2.28.0,2.29.0)"/>
-
-
-
-
-
-
-
-
- Choose the compatibility level of the target platform
-
-
- Define the JRE needed to compile and run the Java projects of ${scope.project.label}
-
-
-
-
-
-
-
-
-
- ${git.clone.location}/build/org.eclipse.elk.targetplatform/org.eclipse.elk.targetplatform.target
-
-
- http://download.eclipse.org/eclipse/updates/
-
-
- false
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ url="http://download.eclipse.org/releases/2022-09"/>
+ url="http://download.eclipse.org/lsp4j/updates/releases/0.15.0"/>
+ url="http://download.eclipse.org/tools/orbit/downloads/drops/R20220830213456/repository/"/>
+ url="http://download.eclipse.org/modeling/tmf/xtext/updates/releases/2.28.0/"/>
diff --git a/test/org.eclipse.elk.alg.common.test/.classpath b/test/org.eclipse.elk.alg.common.test/.classpath
index 3e5654f17e..a42a828e04 100644
--- a/test/org.eclipse.elk.alg.common.test/.classpath
+++ b/test/org.eclipse.elk.alg.common.test/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/test/org.eclipse.elk.alg.common.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.common.test/META-INF/MANIFEST.MF
index 2d01289a96..bd3ecad942 100644
--- a/test/org.eclipse.elk.alg.common.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.common.test/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: ELK Common Algorithms Tests
Bundle-SymbolicName: org.eclipse.elk.alg.common.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
Automatic-Module-Name: org.eclipse.elk.alg.common.test
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
org.eclipse.elk.core,
diff --git a/test/org.eclipse.elk.alg.disco.test/.classpath b/test/org.eclipse.elk.alg.disco.test/.classpath
index eca7bdba8f..bf23501151 100644
--- a/test/org.eclipse.elk.alg.disco.test/.classpath
+++ b/test/org.eclipse.elk.alg.disco.test/.classpath
@@ -1,7 +1,11 @@
-
+
-
+
+
+
+
+
diff --git a/test/org.eclipse.elk.alg.disco.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.disco.test/META-INF/MANIFEST.MF
index 96a55106f7..9a1d4723da 100644
--- a/test/org.eclipse.elk.alg.disco.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.disco.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Layout DisCo Tests
Bundle-SymbolicName: org.eclipse.elk.alg.disco.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.google.guava;bundle-version="18.0.0",
org.eclipse.elk.core,
org.eclipse.elk.graph,
@@ -11,3 +11,4 @@ Require-Bundle: com.google.guava;bundle-version="18.0.0",
org.eclipse.elk.alg.disco,
org.junit;bundle-version="4.12.0"
Bundle-Vendor: Eclipse Modeling Project
+Automatic-Module-Name: org.eclipse.elk.alg.disco.test
diff --git a/test/org.eclipse.elk.alg.force.test/.classpath b/test/org.eclipse.elk.alg.force.test/.classpath
index eca7bdba8f..bf23501151 100644
--- a/test/org.eclipse.elk.alg.force.test/.classpath
+++ b/test/org.eclipse.elk.alg.force.test/.classpath
@@ -1,7 +1,11 @@
-
+
-
+
+
+
+
+
diff --git a/test/org.eclipse.elk.alg.force.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.force.test/META-INF/MANIFEST.MF
index adfd6f4166..6d12a80d1e 100644
--- a/test/org.eclipse.elk.alg.force.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.force.test/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: ELK Force Tests
Bundle-SymbolicName: org.eclipse.elk.alg.force.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
Automatic-Module-Name: org.eclipse.elk.alg.force.test
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
org.eclipse.elk.core,
diff --git a/test/org.eclipse.elk.alg.layered.test/.classpath b/test/org.eclipse.elk.alg.layered.test/.classpath
index 3e5654f17e..a42a828e04 100644
--- a/test/org.eclipse.elk.alg.layered.test/.classpath
+++ b/test/org.eclipse.elk.alg.layered.test/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/test/org.eclipse.elk.alg.layered.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.layered.test/META-INF/MANIFEST.MF
index 7a7f2ecf78..1c734f74f2 100644
--- a/test/org.eclipse.elk.alg.layered.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.layered.test/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: ELK Layered Tests
Bundle-SymbolicName: org.eclipse.elk.alg.layered.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
Automatic-Module-Name: org.eclipse.elk.alg.layered.test
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
org.eclipse.elk.core,
diff --git a/test/org.eclipse.elk.alg.radial.test/.classpath b/test/org.eclipse.elk.alg.radial.test/.classpath
index cc5ee2dc8c..bf23501151 100644
--- a/test/org.eclipse.elk.alg.radial.test/.classpath
+++ b/test/org.eclipse.elk.alg.radial.test/.classpath
@@ -1,11 +1,11 @@
-
+
-
+
diff --git a/test/org.eclipse.elk.alg.radial.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.radial.test/META-INF/MANIFEST.MF
index 2517410c1e..75c8b24229 100644
--- a/test/org.eclipse.elk.alg.radial.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.radial.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Layout Radial Tests
Bundle-SymbolicName: org.eclipse.elk.alg.radial.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.google.guava;bundle-version="18.0.0",
org.eclipse.elk.core,
org.eclipse.elk.graph,
diff --git a/test/org.eclipse.elk.alg.rectpacking.test/.classpath b/test/org.eclipse.elk.alg.rectpacking.test/.classpath
index 3e5654f17e..a42a828e04 100644
--- a/test/org.eclipse.elk.alg.rectpacking.test/.classpath
+++ b/test/org.eclipse.elk.alg.rectpacking.test/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/test/org.eclipse.elk.alg.rectpacking.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.rectpacking.test/META-INF/MANIFEST.MF
index 6390011552..63aae0a632 100644
--- a/test/org.eclipse.elk.alg.rectpacking.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.rectpacking.test/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: ELK Rectpacking Algorithms Tests
Bundle-SymbolicName: org.eclipse.elk.alg.rectpacking.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
Automatic-Module-Name: org.eclipse.elk.alg.rectpacking.test
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
org.eclipse.elk.core,
diff --git a/test/org.eclipse.elk.alg.spore.test/.classpath b/test/org.eclipse.elk.alg.spore.test/.classpath
index eca7bdba8f..bf23501151 100644
--- a/test/org.eclipse.elk.alg.spore.test/.classpath
+++ b/test/org.eclipse.elk.alg.spore.test/.classpath
@@ -1,7 +1,11 @@
-
+
-
+
+
+
+
+
diff --git a/test/org.eclipse.elk.alg.spore.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.spore.test/META-INF/MANIFEST.MF
index ebf8ac5ef8..e23ded6056 100644
--- a/test/org.eclipse.elk.alg.spore.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.spore.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK SPOrE Tests
Bundle-SymbolicName: org.eclipse.elk.alg.spore.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava;bundle-version="18.0.0",
org.eclipse.elk.core,
diff --git a/test/org.eclipse.elk.alg.test/.classpath b/test/org.eclipse.elk.alg.test/.classpath
index eca7bdba8f..bf23501151 100644
--- a/test/org.eclipse.elk.alg.test/.classpath
+++ b/test/org.eclipse.elk.alg.test/.classpath
@@ -1,7 +1,11 @@
-
+
-
+
+
+
+
+
diff --git a/test/org.eclipse.elk.alg.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.test/META-INF/MANIFEST.MF
index 551009a118..0f33a9ec08 100644
--- a/test/org.eclipse.elk.alg.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Layout Algorithm Tests
Bundle-SymbolicName: org.eclipse.elk.alg.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.google.guava,
org.eclipse.elk.core,
org.eclipse.elk.core.debug.grandom,
diff --git a/test/org.eclipse.elk.alg.topdown.test/.classpath b/test/org.eclipse.elk.alg.topdown.test/.classpath
index 3e5654f17e..a42a828e04 100644
--- a/test/org.eclipse.elk.alg.topdown.test/.classpath
+++ b/test/org.eclipse.elk.alg.topdown.test/.classpath
@@ -1,6 +1,6 @@
-
+
diff --git a/test/org.eclipse.elk.alg.topdown.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.alg.topdown.test/META-INF/MANIFEST.MF
index 3dd58a4a9d..4f73d22af5 100644
--- a/test/org.eclipse.elk.alg.topdown.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.alg.topdown.test/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Name: ELK Topdown Tests
Bundle-SymbolicName: org.eclipse.elk.alg.topdown.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
Automatic-Module-Name: org.eclipse.elk.alg.topdown.test
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
org.eclipse.elk.core,
diff --git a/test/org.eclipse.elk.core.test/.classpath b/test/org.eclipse.elk.core.test/.classpath
index eca7bdba8f..bf23501151 100644
--- a/test/org.eclipse.elk.core.test/.classpath
+++ b/test/org.eclipse.elk.core.test/.classpath
@@ -1,7 +1,11 @@
-
+
-
+
+
+
+
+
diff --git a/test/org.eclipse.elk.core.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.core.test/META-INF/MANIFEST.MF
index 079e6fa392..1e961000ed 100644
--- a/test/org.eclipse.elk.core.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.core.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Core Tests
Bundle-SymbolicName: org.eclipse.elk.core.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.google.guava,
org.junit;bundle-version="4.12.0",
org.eclipse.elk.core,
diff --git a/test/org.eclipse.elk.graph.json.test/.classpath b/test/org.eclipse.elk.graph.json.test/.classpath
index 428337e560..6849aa2d4a 100644
--- a/test/org.eclipse.elk.graph.json.test/.classpath
+++ b/test/org.eclipse.elk.graph.json.test/.classpath
@@ -1,8 +1,16 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/test/org.eclipse.elk.graph.json.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.graph.json.test/META-INF/MANIFEST.MF
index 7f5fccabef..19d8bf5893 100644
--- a/test/org.eclipse.elk.graph.json.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.graph.json.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Graph JSON Tests
Bundle-SymbolicName: org.eclipse.elk.graph.json.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
com.google.gson;bundle-version="2.8.2",
diff --git a/test/org.eclipse.elk.graph.test/.classpath b/test/org.eclipse.elk.graph.test/.classpath
index eca7bdba8f..bf23501151 100644
--- a/test/org.eclipse.elk.graph.test/.classpath
+++ b/test/org.eclipse.elk.graph.test/.classpath
@@ -1,7 +1,11 @@
-
+
-
+
+
+
+
+
diff --git a/test/org.eclipse.elk.graph.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.graph.test/META-INF/MANIFEST.MF
index 3d73c3238d..05f1784819 100644
--- a/test/org.eclipse.elk.graph.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.graph.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Graph Model Tests
Bundle-SymbolicName: org.eclipse.elk.graph.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Bundle-Vendor: Eclipse Modeling Project
Require-Bundle: com.google.guava,
org.eclipse.elk.graph,
diff --git a/test/org.eclipse.elk.shared.test/.classpath b/test/org.eclipse.elk.shared.test/.classpath
index eca7bdba8f..bf23501151 100644
--- a/test/org.eclipse.elk.shared.test/.classpath
+++ b/test/org.eclipse.elk.shared.test/.classpath
@@ -1,7 +1,11 @@
-
+
-
+
+
+
+
+
diff --git a/test/org.eclipse.elk.shared.test/META-INF/MANIFEST.MF b/test/org.eclipse.elk.shared.test/META-INF/MANIFEST.MF
index f3949ae8b0..857e82e9fc 100644
--- a/test/org.eclipse.elk.shared.test/META-INF/MANIFEST.MF
+++ b/test/org.eclipse.elk.shared.test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: ELK Shared Tests
Bundle-SymbolicName: org.eclipse.elk.shared.test;singleton:=true
Bundle-Version: 0.9.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-11
Require-Bundle: com.google.guava,
org.junit;bundle-version="4.12.0",
org.eclipse.elk.core,