From fb6711ca262767a50b4a3b6bdbdbb8303ca3420c Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Tue, 3 Sep 2024 19:33:12 +0200 Subject: [PATCH] [Zest 2.0] Switch to new layout algorithms for tests and snippets This change has been delayed until the very end to avoid accidentally breaking the Zest 1.x legacy mode. --- .../examples/jface/GraphJFaceSnippet1.java | 3 +- .../examples/jface/GraphJFaceSnippet2.java | 3 +- .../examples/jface/GraphJFaceSnippet3.java | 3 +- .../examples/jface/GraphJFaceSnippet4.java | 3 +- .../examples/jface/GraphJFaceSnippet5.java | 2 +- .../examples/jface/GraphJFaceSnippet6.java | 3 +- .../examples/jface/GraphJFaceSnippet7.java | 3 +- .../examples/jface/GraphJFaceSnippet8.java | 2 +- .../jface/ManhattanLayoutJFaceSnippet.java | 4 +- .../zest/examples/swt/CustomLayout.java | 63 ++--------- .../zest/examples/swt/GraphSnippet1.java | 3 +- .../zest/examples/swt/GraphSnippet10.java | 3 +- .../zest/examples/swt/GraphSnippet11.java | 3 +- .../zest/examples/swt/GraphSnippet12.java | 3 +- .../zest/examples/swt/GraphSnippet13.java | 3 +- .../zest/examples/swt/GraphSnippet14.java | 3 +- .../zest/examples/swt/GraphSnippet2.java | 3 +- .../zest/examples/swt/GraphSnippet3.java | 3 +- .../zest/examples/swt/GraphSnippet6.java | 3 +- .../zest/examples/swt/GraphSnippet7.java | 3 +- .../zest/examples/swt/GraphSnippet8.java | 13 +-- .../eclipse/zest/examples/swt/HelloWorld.java | 3 +- .../zest/examples/swt/LayoutExample.java | 22 ++-- .../zest/examples/swt/NestedGraphSnippet.java | 13 +-- .../examples/swt/NestedGraphSnippet2.java | 11 +- .../zest/examples/swt/PaintSnippet.java | 3 +- .../zest/examples/swt/ZoomSnippet.java | 13 +-- .../eclipse/zest/examples/uml/UMLExample.java | 5 +- .../tests/examples/AbstractGraphTest.java | 98 ++-------------- .../zest/tests/examples/GraphJFaceTests.java | 11 +- .../zest/tests/examples/GraphSWTTests.java | 107 +++++++++--------- .../org/eclipse/zest/tests/utils/Snippet.java | 6 + 32 files changed, 129 insertions(+), 295 deletions(-) diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet1.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet1.java index c00dbe1f4..e68b46650 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet1.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet1.java @@ -26,7 +26,6 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.zest.core.viewers.GraphViewer; import org.eclipse.zest.core.viewers.IGraphEntityContentProvider; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -125,7 +124,7 @@ public void widgetSelected(SelectionEvent e) { viewer.setContentProvider(new MyContentProvider()); viewer.setLabelProvider(new MyLabelProvider()); - viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING)); + viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm()); viewer.addSelectionChangedListener(event -> System.out.println("Selection changed: " + (event.getSelection()))); viewer.setInput(new Object()); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet2.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet2.java index 375a0ff6a..8499065cc 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet2.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet2.java @@ -22,7 +22,6 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.zest.core.viewers.GraphViewer; import org.eclipse.zest.core.viewers.IGraphContentProvider; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -117,7 +116,7 @@ public static void main(String[] args) { viewer = new GraphViewer(shell, SWT.NONE); viewer.setContentProvider(new MyContentProvider()); viewer.setLabelProvider(new MyLabelProvider()); - viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING)); + viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm()); viewer.setInput(new Object()); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet3.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet3.java index 234564b9b..28cbf7d6e 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet3.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet3.java @@ -29,7 +29,6 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.zest.core.viewers.GraphViewer; import org.eclipse.zest.core.viewers.IGraphContentProvider; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.RadialLayoutAlgorithm; /** @@ -103,7 +102,7 @@ public static void main(String[] args) throws IOException { viewer = new GraphViewer(shell, SWT.NONE); viewer.setContentProvider(new SimpleGraphContentProvider()); viewer.setLabelProvider(new LabelProvider()); - viewer.setLayoutAlgorithm(new RadialLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING)); + viewer.setLayoutAlgorithm(new RadialLayoutAlgorithm()); shell.open(); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet4.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet4.java index c5e7cc2c3..47dbb537d 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet4.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet4.java @@ -27,7 +27,6 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.zest.core.viewers.GraphViewer; import org.eclipse.zest.core.viewers.IGraphContentProvider; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; public class GraphJFaceSnippet4 { @@ -108,7 +107,7 @@ public static void main(String[] args) { viewer = new GraphViewer(shell, SWT.NONE); viewer.setContentProvider(new MyContentProvider()); viewer.setLabelProvider(new MyLabelProvider()); - viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING)); + viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm()); viewer.setInput(new Object()); viewer.addSelectionChangedListener(new ISelectionChangedListener() { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet5.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet5.java index de654afa6..b8c8c76aa 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet5.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet5.java @@ -149,7 +149,7 @@ private static void buildViewer(Composite parent) { contentProvider = new MyContentProvider(); viewer.setContentProvider(contentProvider); viewer.setLabelProvider(new MyLabelProvider()); - viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1()); + viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm()); viewer.setInput(new Object()); } } diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet6.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet6.java index c135504a5..63f327d77 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet6.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet6.java @@ -25,7 +25,6 @@ import org.eclipse.zest.core.viewers.GraphViewer; import org.eclipse.zest.core.viewers.IGraphEntityContentProvider; import org.eclipse.zest.core.viewers.INestedContentProvider; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -134,7 +133,7 @@ public static void main(String[] args) { viewer = new GraphViewer(shell, SWT.NONE); viewer.setContentProvider(new MyContentProvider()); viewer.setLabelProvider(new MyLabelProvider()); - viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING)); + viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm()); viewer.setInput(new Object()); Button button = new Button(shell, SWT.PUSH); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet7.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet7.java index cc82330b0..f079a4067 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet7.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet7.java @@ -28,7 +28,6 @@ import org.eclipse.zest.core.viewers.IGraphEntityContentProvider; import org.eclipse.zest.core.viewers.INestedContentProvider; import org.eclipse.zest.examples.uml.UMLClassFigure; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.draw2d.IFigure; @@ -181,7 +180,7 @@ public static void main(String[] args) { viewer = new GraphViewer(shell, SWT.NONE); viewer.setContentProvider(new MyContentProvider()); viewer.setLabelProvider(new MyLabelProvider()); - viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING)); + viewer.setLayoutAlgorithm(new SpringLayoutAlgorithm()); viewer.setInput(new Object()); Button button = new Button(shell, SWT.PUSH); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet8.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet8.java index 72f019479..2e94191cd 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet8.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/GraphJFaceSnippet8.java @@ -129,7 +129,7 @@ public static void main(String[] args) { viewer = new GraphViewer(shell, SWT.NONE); viewer.setContentProvider(new MyContentProvider()); viewer.setLabelProvider(new MyLabelProvider()); - viewer.setLayoutAlgorithm(new RadialLayoutAlgorithm.Zest1()); + viewer.setLayoutAlgorithm(new RadialLayoutAlgorithm()); viewer.setInput(new Object()); shell.open(); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/ManhattanLayoutJFaceSnippet.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/ManhattanLayoutJFaceSnippet.java index cdb166c9a..e3f861534 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/ManhattanLayoutJFaceSnippet.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/jface/ManhattanLayoutJFaceSnippet.java @@ -29,7 +29,7 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.Viewer; import org.eclipse.zest.core.viewers.GraphViewer; -import org.eclipse.zest.core.viewers.IConnectionStyleProvider; +import org.eclipse.zest.core.viewers.IConnectionStyleProvider2; import org.eclipse.zest.core.viewers.IEntityConnectionStyleProvider2; import org.eclipse.zest.core.viewers.IGraphContentProvider; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; @@ -99,7 +99,7 @@ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } - static class MyConnectionRelationLabelProvider extends LabelProvider implements IConnectionStyleProvider { + static class MyConnectionRelationLabelProvider extends LabelProvider implements IConnectionStyleProvider2 { final Image image = Display.getDefault().getSystemImage(SWT.ICON_WARNING); @Override diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/CustomLayout.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/CustomLayout.java index ad8d9c225..518fdaf1c 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/CustomLayout.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/CustomLayout.java @@ -8,10 +8,8 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutEntity; import org.eclipse.zest.layouts.algorithms.AbstractLayoutAlgorithm; -import org.eclipse.zest.layouts.dataStructures.InternalNode; -import org.eclipse.zest.layouts.dataStructures.InternalRelationship; +import org.eclipse.zest.layouts.interfaces.EntityLayout; /** * This snippet shows how to create a custom layout. This layout simply lays the @@ -39,63 +37,18 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n, n2); new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n); - g.setLayoutAlgorithm(new AbstractLayoutAlgorithm.Zest1(SWT.NONE) { - - private int totalSteps; - private int currentStep; - + g.setLayoutAlgorithm(new AbstractLayoutAlgorithm() { @Override - protected void applyLayoutInternal(InternalNode[] entitiesToLayout, - InternalRelationship[] relationshipsToConsider, double boundsX, double boundsY, double boundsWidth, - double boundsHeight) { - - totalSteps = entitiesToLayout.length; - double distance = boundsWidth / totalSteps; + public void applyLayout(boolean clean) { + EntityLayout[] entitiesToLayout = context.getEntities(); + int totalSteps = entitiesToLayout.length; + double distance = context.getBounds().width / totalSteps; int xLocation = 0; - - fireProgressStarted(totalSteps); - - for (currentStep = 0; currentStep < entitiesToLayout.length; currentStep++) { - LayoutEntity layoutEntity = entitiesToLayout[currentStep].getLayoutEntity(); - layoutEntity.setLocationInLayout(xLocation, layoutEntity.getYInLayout()); + for (EntityLayout layoutEntity : entitiesToLayout) { + layoutEntity.setLocation(xLocation, layoutEntity.getLocation().y); xLocation += distance; - fireProgressEvent(currentStep, totalSteps); } - fireProgressEnded(totalSteps); - } - - @Override - protected int getCurrentLayoutStep() { - return 0; - } - - @Override - protected int getTotalNumberOfLayoutSteps() { - return totalSteps; - } - - @Override - protected boolean isValidConfiguration(boolean asynchronous, boolean continuous) { - return true; - } - - @Override - protected void postLayoutAlgorithm(InternalNode[] entitiesToLayout, - InternalRelationship[] relationshipsToConsider) { - // Do nothing - } - - @Override - protected void preLayoutAlgorithm(InternalNode[] entitiesToLayout, - InternalRelationship[] relationshipsToConsider, double x, double y, double width, double height) { - // do nothing - } - - @Override - public void setLayoutArea(double x, double y, double width, double height) { - // do nothing } - }, true); shell.open(); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet1.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet1.java index 34aa6892c..49201d0a2 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet1.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet1.java @@ -23,7 +23,6 @@ import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.internal.NodeSearchDialog; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -55,7 +54,7 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n, n2); new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); // example for dialog for searching nodes NodeSearchDialog searchDialog = new NodeSearchDialog(g.getShell(), g.getNodes()); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet10.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet10.java index b9cccfb8d..8c91fe699 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet10.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet10.java @@ -23,7 +23,6 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -55,7 +54,7 @@ public static void main(String[] args) { connection.setLineWidth(3); new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); Button button = new Button(shell, SWT.PUSH); button.setText("Change Curve"); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet11.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet11.java index f3a1e1a2d..bc02594e7 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet11.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet11.java @@ -21,7 +21,6 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.draw2d.ColorConstants; @@ -60,7 +59,7 @@ public static void main(String[] args) { createConnection(g, n, n2, ColorConstants.darkGray, 60); createConnection(g, n, n2, ColorConstants.darkGray, -60); createConnection(g, n, n2, ColorConstants.black, 0); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet12.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet12.java index 9d454f2fc..998e1c3cc 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet12.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet12.java @@ -26,7 +26,6 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.draw2d.ColorConstants; @@ -156,7 +155,7 @@ public void widgetDefaultSelected(SelectionEvent e) { new GraphConnection(g, SWT.NONE, n2, n5); new GraphConnection(g, SWT.NONE, n3, n5); new GraphConnection(g, SWT.NONE, n4, n5); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet13.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet13.java index c91c086cd..e6e551a35 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet13.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet13.java @@ -28,7 +28,6 @@ import org.eclipse.zest.core.widgets.GraphContainer; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.draw2d.ColorConstants; @@ -173,7 +172,7 @@ public void widgetDefaultSelected(SelectionEvent e) { GraphConnection connection2 = new GraphConnection(g, ZestStyles.CONNECTIONS_DIRECTED, n2, n1); connection2.setCurveDepth(-30); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet14.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet14.java index e19ebe246..c9151d43d 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet14.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet14.java @@ -19,7 +19,6 @@ import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.HideNodeHelper; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.draw2d.Button; @@ -53,7 +52,7 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n, n2); new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); // example: hide-nodes reveal-all button if (g.getHideNodesEnabled()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet2.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet2.java index cec7a2dee..bdfcacfcb 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet2.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet2.java @@ -23,7 +23,6 @@ import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -56,7 +55,7 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n3); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet3.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet3.java index 277cd80a8..3c4c52d76 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet3.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet3.java @@ -25,7 +25,6 @@ import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -63,7 +62,7 @@ public void widgetSelected(SelectionEvent e) { new GraphConnection(g, SWT.NONE, n1, n2); new GraphConnection(g, SWT.NONE, n2, n3); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet6.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet6.java index e6f3e81a4..70153a88b 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet6.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet6.java @@ -23,7 +23,6 @@ import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.GridLayoutAlgorithm; /** @@ -60,7 +59,7 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n3); } - g.setLayoutAlgorithm(new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new GridLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet7.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet7.java index 4a4f7fc91..9828393a3 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet7.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet7.java @@ -22,7 +22,6 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -53,7 +52,7 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n, n2); new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); g.addMouseMoveListener(new MouseMoveListener() { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet8.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet8.java index 1fd743264..089411d76 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet8.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/GraphSnippet8.java @@ -20,9 +20,8 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; +import org.eclipse.zest.core.widgets.LayoutFilter; import org.eclipse.zest.core.widgets.ZestStyles; -import org.eclipse.zest.layouts.Filter; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm; import org.eclipse.draw2d.ColorConstants; @@ -91,12 +90,8 @@ public static void main(String[] args) { connection.setLineColor(ColorConstants.red); connection.setLineWidth(3); - TreeLayoutAlgorithm.Zest1 treeLayoutAlgorithm = new TreeLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING); - Filter filter = item -> { - - // Get the "Connection" from the Layout Item - // and use this connection to get the "Graph Data" - Object object = item.getGraphData(); + TreeLayoutAlgorithm treeLayoutAlgorithm = new TreeLayoutAlgorithm(); + LayoutFilter filter = object -> { if (object instanceof GraphConnection connection1) { if (connection1.getData() instanceof Boolean boolVal) { // If the data is false, don't filter, otherwise, filter. @@ -106,7 +101,7 @@ public static void main(String[] args) { } return false; }; - treeLayoutAlgorithm.setFilter(filter); + graph.addLayoutFilter(filter); graph.setLayoutAlgorithm(treeLayoutAlgorithm, true); shell.open(); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/HelloWorld.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/HelloWorld.java index 71b280db4..ab8162be9 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/HelloWorld.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/HelloWorld.java @@ -20,7 +20,6 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; /** @@ -46,7 +45,7 @@ public static void main(String[] args) { GraphNode hello = new GraphNode(g, SWT.NONE, "Hello"); GraphNode world = new GraphNode(g, SWT.NONE, "World"); new GraphConnection(g, SWT.NONE, hello, world); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/LayoutExample.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/LayoutExample.java index 78a0de240..7ea901a08 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/LayoutExample.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/LayoutExample.java @@ -17,13 +17,10 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; -import org.eclipse.zest.core.widgets.ConstraintAdapter; import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; -import org.eclipse.zest.layouts.constraints.BasicEdgeConstraints; /** * This snippet shows how to use constraints. Nodes are attracted to the @@ -58,21 +55,16 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, root, n); } - SpringLayoutAlgorithm.Zest1 springLayoutAlgorithm = new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING); + SpringLayoutAlgorithm springLayoutAlgorithm = new SpringLayoutAlgorithm(); - ConstraintAdapter constraintAdapters = (object, constraint) -> { - if (constraint instanceof BasicEdgeConstraints basicEdgeConstraints) { - GraphConnection connection = (GraphConnection) object; - if (connection.getSource().getText().equals("Root")) { - basicEdgeConstraints.weight = 1; - } else { - basicEdgeConstraints.weight = -1; - } + for (GraphConnection connection : g.getConnections()) { + if (connection.getSource().getText().equals("Root")) { + connection.setWeight(1.0); + } else { + connection.setWeight(-1.0); } + } - }; - - g.addConstraintAdapter(constraintAdapters); g.setLayoutAlgorithm(springLayoutAlgorithm, true); shell.open(); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet.java index 057f0a65a..3ffa6a9b3 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet.java @@ -24,10 +24,9 @@ import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; import org.eclipse.zest.layouts.LayoutAlgorithm; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.CompositeLayoutAlgorithm; import org.eclipse.zest.layouts.algorithms.GridLayoutAlgorithm; -import org.eclipse.zest.layouts.algorithms.HorizontalShift; +import org.eclipse.zest.layouts.algorithms.HorizontalShiftAlgorithm; import org.eclipse.zest.layouts.algorithms.RadialLayoutAlgorithm; import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm; @@ -92,9 +91,9 @@ public static void populateContainer(GraphContainer c, Graph g, int number, bool c.setScale(0.25); } if (radial) { - c.setLayoutAlgorithm(new RadialLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + c.setLayoutAlgorithm(new RadialLayoutAlgorithm(), true); } else { - c.setLayoutAlgorithm(new TreeLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + c.setLayoutAlgorithm(new TreeLayoutAlgorithm(), true); } } @@ -115,10 +114,8 @@ public static void main(String[] args) { g = new Graph(shell, SWT.NONE); createContainer(g); - CompositeLayoutAlgorithm.Zest1 compositeLayoutAlgorithm = new CompositeLayoutAlgorithm.Zest1( - LayoutStyles.NO_LAYOUT_NODE_RESIZING, - new LayoutAlgorithm.Zest1[] { new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), - new HorizontalShift(LayoutStyles.NO_LAYOUT_NODE_RESIZING) }); + CompositeLayoutAlgorithm compositeLayoutAlgorithm = new CompositeLayoutAlgorithm( + new LayoutAlgorithm[] { new GridLayoutAlgorithm(), new HorizontalShiftAlgorithm() }); // g.setLayoutAlgorithm(new // GridLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); g.setLayoutAlgorithm(compositeLayoutAlgorithm, true); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet2.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet2.java index 9023f8540..ff0f883bf 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet2.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/NestedGraphSnippet2.java @@ -22,7 +22,6 @@ import org.eclipse.zest.core.widgets.GraphContainer; import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.GridLayoutAlgorithm; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; @@ -76,11 +75,11 @@ public static void main(String[] args) { new GraphConnection(g, ZestStyles.CONNECTIONS_DIRECTED, object3, object4); new GraphConnection(g, ZestStyles.CONNECTIONS_DIRECTED, object4, object5); - container1.setLayoutAlgorithm(new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); - container2.setLayoutAlgorithm(new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); - container3.setLayoutAlgorithm(new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); - container3.setLayoutAlgorithm(new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + container1.setLayoutAlgorithm(new GridLayoutAlgorithm(), true); + container2.setLayoutAlgorithm(new GridLayoutAlgorithm(), true); + container3.setLayoutAlgorithm(new GridLayoutAlgorithm(), true); + container3.setLayoutAlgorithm(new GridLayoutAlgorithm(), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/PaintSnippet.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/PaintSnippet.java index 81f9375eb..c9f1681f0 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/PaintSnippet.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/PaintSnippet.java @@ -27,7 +27,6 @@ import org.eclipse.zest.core.widgets.Graph; import org.eclipse.zest.core.widgets.GraphConnection; import org.eclipse.zest.core.widgets.GraphNode; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.draw2d.SWTGraphics; @@ -68,7 +67,7 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n, n2); new GraphConnection(g, SWT.NONE, n2, n3); new GraphConnection(g, SWT.NONE, n3, n); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); b.addSelectionListener(new SelectionListener() { diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/ZoomSnippet.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/ZoomSnippet.java index 60184b77b..6c2611099 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/ZoomSnippet.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/swt/ZoomSnippet.java @@ -27,10 +27,9 @@ import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.ZestStyles; import org.eclipse.zest.layouts.LayoutAlgorithm; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.CompositeLayoutAlgorithm; import org.eclipse.zest.layouts.algorithms.GridLayoutAlgorithm; -import org.eclipse.zest.layouts.algorithms.HorizontalShift; +import org.eclipse.zest.layouts.algorithms.HorizontalShiftAlgorithm; import org.eclipse.zest.layouts.algorithms.RadialLayoutAlgorithm; import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm; @@ -95,9 +94,9 @@ public static void populateContainer(GraphContainer c, Graph g, int number, bool c.setScale(0.25); } if (radial) { - c.setLayoutAlgorithm(new RadialLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + c.setLayoutAlgorithm(new RadialLayoutAlgorithm(), true); } else { - c.setLayoutAlgorithm(new TreeLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + c.setLayoutAlgorithm(new TreeLayoutAlgorithm(), true); } } @@ -118,10 +117,8 @@ public static void main(String[] args) { g = new Graph(shell, SWT.NONE); createContainer(g); - CompositeLayoutAlgorithm.Zest1 compositeLayoutAlgorithm = new CompositeLayoutAlgorithm.Zest1( - LayoutStyles.NO_LAYOUT_NODE_RESIZING, - new LayoutAlgorithm.Zest1[] { new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), - new HorizontalShift(LayoutStyles.NO_LAYOUT_NODE_RESIZING) }); + CompositeLayoutAlgorithm compositeLayoutAlgorithm = new CompositeLayoutAlgorithm( + new LayoutAlgorithm[] { new GridLayoutAlgorithm(), new HorizontalShiftAlgorithm() }); // g.setLayoutAlgorithm(new // GridLayoutAlgorithm(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); g.setLayoutAlgorithm(compositeLayoutAlgorithm, true); diff --git a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/uml/UMLExample.java b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/uml/UMLExample.java index a3d7a6384..f76305505 100644 --- a/org.eclipse.zest.examples/src/org/eclipse/zest/examples/uml/UMLExample.java +++ b/org.eclipse.zest.examples/src/org/eclipse/zest/examples/uml/UMLExample.java @@ -27,7 +27,6 @@ import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.IContainer; import org.eclipse.zest.core.widgets.ZestStyles; -import org.eclipse.zest.layouts.LayoutStyles; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; import org.eclipse.draw2d.IFigure; @@ -128,8 +127,8 @@ public static void main(String[] args) { new GraphConnection(g, SWT.NONE, n1, n2); new GraphConnection(g, SWT.NONE, n, n1); - c.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); - g.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + c.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); + g.setLayoutAlgorithm(new SpringLayoutAlgorithm(), true); shell.open(); while (!shell.isDisposed()) { diff --git a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/AbstractGraphTest.java b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/AbstractGraphTest.java index b4dbc053f..9d421e583 100644 --- a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/AbstractGraphTest.java +++ b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/AbstractGraphTest.java @@ -21,7 +21,7 @@ import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodHandles.Lookup; import java.lang.invoke.MethodType; -import java.lang.reflect.Field; +import java.lang.invoke.VarHandle; import java.util.List; import java.util.Objects; import java.util.concurrent.Semaphore; @@ -36,14 +36,7 @@ import org.eclipse.zest.core.widgets.GraphNode; import org.eclipse.zest.core.widgets.IContainer; import org.eclipse.zest.core.widgets.internal.GraphLabel; -import org.eclipse.zest.layouts.Filter; -import org.eclipse.zest.layouts.LayoutAlgorithm; -import org.eclipse.zest.layouts.LayoutStyles; -import org.eclipse.zest.layouts.algorithms.AbstractLayoutAlgorithm; -import org.eclipse.zest.layouts.algorithms.GridLayoutAlgorithm; import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; -import org.eclipse.zest.layouts.dataStructures.InternalNode; -import org.eclipse.zest.layouts.dataStructures.InternalRelationship; import org.eclipse.zest.tests.utils.GraphicalRobot; import org.eclipse.zest.tests.utils.Snippet; @@ -56,7 +49,6 @@ import org.eclipse.draw2d.ToolTipHelper; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; -import org.eclipse.draw2d.geometry.PointList; import org.eclipse.draw2d.geometry.Rectangle; import org.junit.Rule; @@ -116,8 +108,8 @@ private void doTest(Snippet annotation, Statement statement) throws Throwable { graph = getGraph(lookup, annotation); // Make sure the layout is reproducible - if (graph.getLayoutAlgorithm() instanceof SpringLayoutAlgorithm.Zest1) { - graph.setLayoutAlgorithm(new GridLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); + if (graph.getLayoutAlgorithm() instanceof SpringLayoutAlgorithm springLayout) { + springLayout.setRandom(annotation.random()); } robot = new GraphicalRobot(graph); @@ -167,42 +159,6 @@ private void doTest(Snippet annotation, Statement statement) throws Throwable { */ protected abstract Graph getGraph(Lookup lookup, Snippet snippet) throws ReflectiveOperationException; - /** - * The nodes used by the layout algorithm might be less than the nodes in the - * graph when a {@link Filter} is used. - * - * @return All nodes considers by the current layout algorithm. - */ - protected InternalNode[] getInternalNodes() throws ReflectiveOperationException { - LayoutAlgorithm layoutAlgorithm = graph.getLayoutAlgorithm(); - Field field = AbstractLayoutAlgorithm.class.getDeclaredField("internalNodes"); //$NON-NLS-1$ - boolean isAccessible = field.canAccess(layoutAlgorithm); - try { - field.setAccessible(true); - return (InternalNode[]) field.get(layoutAlgorithm); - } finally { - field.setAccessible(isAccessible); - } - } - - /** - * The connections used by the layout algorithm might be less than the nodes in - * the graph when a {@link Filter} is used. - * - * @return All connections considers by the current layout algorithm. - */ - protected InternalRelationship[] getInternalRelationships() throws ReflectiveOperationException { - LayoutAlgorithm layoutAlgorithm = graph.getLayoutAlgorithm(); - Field field = AbstractLayoutAlgorithm.Zest1.class.getDeclaredField("internalRelationships"); //$NON-NLS-1$ - boolean isAccessible = field.canAccess(layoutAlgorithm); - try { - field.setAccessible(true); - return (InternalRelationship[]) field.get(layoutAlgorithm); - } finally { - field.setAccessible(isAccessible); - } - } - /** * The distance is defined as {@code sqrt(x^2 + y^2) } where {@code x} and * {@code y} are the coordinates of the vector pointing from the {@code source} @@ -228,40 +184,6 @@ protected static double getLength(Point vec) { return Math.sqrt(vec.x * vec.x + vec.y * vec.y); } - /** - * The dot product of two vectors is defined as {@code x1 * x2 + y1 * y2 }. - * - * @return The dot product of the given {@code vectors}. - */ - protected static double getDotProduct(Point vec1, Point vec2) { - return vec1.x * vec2.x + vec1.y * vec2.y; - } - - /** - * Calculates the arc (in degrees) that is spanned by the given graph - * connection. The arc is calculated using the cosine of the vector from the - * start to the end point and the vector from the start to the mid point. - * - * @param connection The arc that is spanned by the given connection. - */ - private static double getArc(PolylineConnection connection) { - PointList points = connection.getPoints(); - Point start = points.getFirstPoint(); - Point center = points.getMidpoint(); - Point end = points.getLastPoint(); - - int x1 = start.x - center.x; - int y1 = start.y - center.y; - Point vec1 = new Point(x1, y1); - - int x2 = start.x - end.x; - int y2 = start.y - end.y; - Point vec2 = new Point(x2, y2); - - double cos = getDotProduct(vec1, vec2) / (getLength(vec1) * getLength(vec2)); - return Math.acos(cos) * 360 / (2 * Math.PI); - } - /** * The center is defined as {@code (x + width / 2, y + height / 2)}. * @@ -332,16 +254,15 @@ protected static void assertConnection(GraphConnection connection, String source /** * Asserts that the given {@code connection} uses a {@link PolylineConnection} - * with given {@code arc}. The arc of the connection is calculated using the - * points of the polyline. The test passes if this value is within 5° of the - * expected value. + * with given {@code curveDepth}. * * @param connection The graph connection to validate. - * @param arc The expected arc of the + * @param curveDepth The expected curveDepth of the connection */ - protected static void assertArc(GraphConnection connection, double arc) { - PolylineConnection connectionFigure = (PolylineConnection) connection.getConnectionFigure(); - assertEquals(getArc(connectionFigure), arc, 5); // tolerance to account for OS differences + protected static void assertCurve(GraphConnection connection, int curveDepth) throws ReflectiveOperationException { + MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(connection.getClass(), MethodHandles.lookup()); + VarHandle field = lookup.findVarHandle(connection.getClass(), "curveDepth", int.class); //$NON-NLS-1$ + assertEquals("Unexpected connection curve", curveDepth, field.get(connection)); //$NON-NLS-1$ } /** @@ -351,7 +272,6 @@ protected static void assertArc(GraphConnection connection, double arc) { * @param container The {@link IContainer} to validate. */ protected static void assertNoOverlap(IContainer container) { - @SuppressWarnings("unchecked") List nodes = container.getNodes(); for (int i = 0; i < nodes.size(); ++i) { for (int j = i + 1; j < nodes.size(); ++j) { diff --git a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphJFaceTests.java b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphJFaceTests.java index 1326624e6..40fb505c0 100644 --- a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphJFaceTests.java +++ b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphJFaceTests.java @@ -120,7 +120,6 @@ public void testGraphJFaceSnippet3() { // Explicitly checking 30 nodes and 29 connections is just busy work... assertEquals(graph.getNodes().size(), 30); assertEquals(graph.getConnections().size(), 29); - assertNoOverlap(graph); } /** @@ -227,7 +226,7 @@ public void testGraphJFaceSnippet7() { */ @Test @Snippet(type = GraphJFaceSnippet8.class) - public void testGraphJFaceSnippet8() { + public void testGraphJFaceSnippet8() throws ReflectiveOperationException { assertNode(graph.getNodes().get(0), "First"); assertNode(graph.getNodes().get(1), "Second"); assertNode(graph.getNodes().get(2), "Third"); @@ -244,10 +243,10 @@ public void testGraphJFaceSnippet8() { assertConnection(connection3, "First", "First"); assertConnection(connection4, "First", "Second"); - assertArc(connection1, 34 /* ° */); - assertArc(connection2, 34 /* ° */); - assertArc(connection3, Double.NaN /* ° */); - assertArc(connection4, 0 /* ° */); + assertCurve(connection1, 20); + assertCurve(connection2, 20); + assertCurve(connection3, 40); + assertCurve(connection4, 0); assertNoOverlap(graph); } diff --git a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphSWTTests.java b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphSWTTests.java index 90af191a5..ac932d6cf 100644 --- a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphSWTTests.java +++ b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/examples/GraphSWTTests.java @@ -69,9 +69,7 @@ import org.eclipse.zest.examples.swt.PaintSnippet; import org.eclipse.zest.examples.swt.ZoomSnippet; import org.eclipse.zest.layouts.Filter; -import org.eclipse.zest.layouts.LayoutStyles; -import org.eclipse.zest.layouts.algorithms.SpringLayoutAlgorithm; -import org.eclipse.zest.layouts.dataStructures.InternalRelationship; +import org.eclipse.zest.layouts.interfaces.ConnectionLayout; import org.eclipse.zest.tests.utils.Snippet; import org.eclipse.draw2d.ColorConstants; @@ -356,7 +354,7 @@ public void testGraphSnippet6() { * connections. */ @Test - @Snippet(type = GraphSnippet7.class) + @Snippet(type = GraphSnippet7.class, random = true) public void testGraphSnippet7() { for (GraphNode node : graph.getNodes()) { IFigure nodeFigure = node.getNodeFigure(); @@ -379,7 +377,7 @@ public void testGraphSnippet8() throws ReflectiveOperationException { assertEquals(graph.getConnections().size(), 13); assertNoOverlap(graph); - InternalRelationship[] connections = getInternalRelationships(); + ConnectionLayout[] connections = graph.getLayoutContext().getConnections(); assertEquals(connections.length, 8); for (GraphConnection connection : graph.getConnections()) { @@ -389,7 +387,7 @@ public void testGraphSnippet8() throws ReflectiveOperationException { graph.applyLayout(); waitEventLoop(0); - connections = getInternalRelationships(); + connections = graph.getLayoutContext().getConnections(); assertEquals(connections.length, 0); } @@ -415,8 +413,8 @@ public void testGraphSnippet9() { * press. */ @Test - @Snippet(type = GraphSnippet10.class) - public void testGraphSnippet10() { + @Snippet(type = GraphSnippet10.class, random = true) + public void testGraphSnippet10() throws ReflectiveOperationException { assertNode(graph.getNodes().get(0), "Paper"); assertNode(graph.getNodes().get(1), "Rock"); assertNode(graph.getNodes().get(2), "Scissors"); @@ -436,7 +434,7 @@ public void testGraphSnippet10() { robot.button("Change Curve").click(); } // Old connection is removed and a new one is added - assertArc(graph.getConnections().get(2), i * 10 /* ° */); + assertCurve(graph.getConnections().get(2), i * 10); } } @@ -444,8 +442,8 @@ public void testGraphSnippet10() { * Tests a graph with curved connections. */ @Test - @Snippet(type = GraphSnippet11.class) - public void testGraphSnippet11() { + @Snippet(type = GraphSnippet11.class, random = true) + public void testGraphSnippet11() throws ReflectiveOperationException { assertNode(graph.getNodes().get(0), "Node 1"); assertNode(graph.getNodes().get(1), "Node 2"); assertEquals(graph.getNodes().size(), 2); @@ -455,13 +453,13 @@ public void testGraphSnippet11() { assertConnection(connection, "Node 1", "Node 2"); } - assertArc(graph.getConnections().get(0), 15 /* ° */); - assertArc(graph.getConnections().get(1), 15 /* ° */); - assertArc(graph.getConnections().get(2), 29 /* ° */); - assertArc(graph.getConnections().get(3), 29 /* ° */); - assertArc(graph.getConnections().get(4), 40 /* ° */); - assertArc(graph.getConnections().get(5), 40 /* ° */); - assertArc(graph.getConnections().get(6), 0 /* ° */); + assertCurve(graph.getConnections().get(0), 20); + assertCurve(graph.getConnections().get(1), -20); + assertCurve(graph.getConnections().get(2), 40); + assertCurve(graph.getConnections().get(3), -40); + assertCurve(graph.getConnections().get(4), 60); + assertCurve(graph.getConnections().get(5), -60); + assertCurve(graph.getConnections().get(6), 0); assertNoOverlap(graph); } @@ -587,9 +585,6 @@ public void testHelloWorld() { @Test @Snippet(type = LayoutExample.class) public void testLayoutExample() { - graph.setLayoutAlgorithm(new SpringLayoutAlgorithm.Zest1(LayoutStyles.NO_LAYOUT_NODE_RESIZING), true); - waitEventLoop(0); - double sumLengthInner = 0; int countInner = 0; double sumLengthOuter = 0; @@ -626,8 +621,6 @@ public void testNestedGraphSnippet() { GraphContainer container = (GraphContainer) graph.getNodes().get(0); container.open(false); - - graph.applyLayout(); waitEventLoop(0); assertNode(container.getNodes().get(0), "SomeClass.java"); @@ -654,23 +647,17 @@ public void testNestedGraphSnippet2() { assertNode(graph.getNodes().get(2), "Machine 3"); assertEquals(graph.getNodes().size(), 3); - GraphContainer container1 = (GraphContainer) graph.getNodes().get(0); - container1.open(false); - - graph.applyLayout(); + GraphContainer container3 = (GraphContainer) graph.getNodes().get(2); + container3.open(false); waitEventLoop(0); - assertNode(container1.getNodes().get(0), "Host 1"); - assertNode(container1.getNodes().get(1), "Host 2"); - assertEquals(container1.getNodes().size(), 2); + assertNode(container3.getNodes().get(0), "Host 4"); + assertEquals(container3.getNodes().size(), 1); - GraphContainer container2 = (GraphContainer) container1.getNodes().get(1); + GraphContainer container2 = (GraphContainer) container3.getNodes().get(0); container2.open(false); - graph.applyLayout(); - waitEventLoop(0); - - assertNode(container2.getNodes().get(0), "JSP Object 3"); + assertNode(container2.getNodes().get(0), "JSP Object 5"); assertEquals(container2.getNodes().size(), 1); GraphNode node = container2.getNodes().get(0); @@ -683,24 +670,20 @@ public void testNestedGraphSnippet2() { assertEquals(graph.getSelection(), List.of(node)); GraphLabel nodeLabel = (GraphLabel) graph.getFigureAt(nodeLocation.x, nodeLocation.y); - assertEquals(nodeLabel.getText(), "JSP Object 3"); + assertEquals(nodeLabel.getText(), "JSP Object 5"); - assertNoOverlap(container1); assertNoOverlap(container2); + assertNoOverlap(container3); } /** * Tests whether nodes are painted correctly. */ @Test - @Snippet(type = PaintSnippet.class) + @Snippet(type = PaintSnippet.class, random = true) public void testPaintSnippet() { assertEquals(graph.getNodes().size(), 3); - // The canvas has a 10 pixel wide border - int offsetX = 10; - int offsetY = 10; - graph.selectAll(); waitEventLoop(0); @@ -709,26 +692,38 @@ public void testPaintSnippet() { Shell popupShell = graph.getDisplay().getActiveShell(); SWTBot popupRobot = new SWTBot(popupShell); - Canvas popupCanvas = popupRobot.canvas().widget; - Rectangle bounds = popupCanvas.getBounds(); + Canvas popupCanvas = popupRobot.canvas(1).widget; + + Rectangle bounds1 = popupCanvas.getBounds(); + GC gc1 = new GC(popupCanvas); + Image image1 = new Image(null, bounds1.width, bounds1.height); + + Rectangle bounds2 = graph.getBounds(); + GC gc2 = new GC(graph); + Image image2 = new Image(null, bounds2.width, bounds2.height); - GC gc = new GC(popupCanvas); - Image image = new Image(null, bounds.width, bounds.height); try { - gc.copyArea(image, 0, 0); - ImageData imageData = image.getImageData(); + gc1.copyArea(image1, 0, 0); + ImageData imageData1 = image1.getImageData(); + + gc2.copyArea(image2, 0, 0); + ImageData imageData2 = image2.getImageData(); for (GraphNode node : graph.getNodes()) { - Point location = node.getNodeFigure().getBounds().getTop(); - int x = location.x + offsetX; - int y = location.y + offsetY + 2; - int pixelValue = imageData.getPixel(x, y); - RGB pixelColor = imageData.palette.getRGB(pixelValue); - assertEquals(graph.HIGHLIGHT_COLOR.getRGB(), pixelColor); + Point location = node.getNodeFigure().getBounds().getCenter(); + int pixelValue1 = imageData2.getPixel(location.x, location.y); + RGB pixelColor1 = imageData1.palette.getRGB(pixelValue1); + + int pixelValue2 = imageData2.getPixel(location.x, location.y); + RGB pixelColor2 = imageData2.palette.getRGB(pixelValue2); + + assertEquals(pixelColor1, pixelColor2); } } finally { - gc.dispose(); - image.dispose(); + gc1.dispose(); + image1.dispose(); + gc2.dispose(); + image2.dispose(); popupShell.close(); popupShell.dispose(); } diff --git a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/utils/Snippet.java b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/utils/Snippet.java index 7f77b8605..ae1e094c5 100644 --- a/org.eclipse.zest.tests/src/org/eclipse/zest/tests/utils/Snippet.java +++ b/org.eclipse.zest.tests/src/org/eclipse/zest/tests/utils/Snippet.java @@ -37,4 +37,10 @@ * @return The name of the static field containing the {@link Graph}. */ String field() default "g"; + + /** + * @return Return {@code true} when nodes should be placed randomly (if + * supported by the layout). + */ + boolean random() default false; }