From 455428c89e3c5ee5bf981b08ea5956ba9991897e Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Tue, 29 Sep 2026 18:08:52 +0200 Subject: [PATCH] [Draw2D] Align Layer with Draw2D implementation The layer name should not be stored as a local variable in the Layer class. Instead it should be used as constraint when adding the figure to the root figure. Note that the root figure still keeps track of all registered layers by name. This will be changed in the future, where the layers are added to a LayeredPane instead. It is also not yet possible to remove this forked class, as it is used in methods which are API. Deprecation will be handled in a follow-up PR. --- .../org/eclipse/wb/draw2d/Layer.java | 67 +---------------- .../draw2d/CustomTooltipProvider.java | 4 +- .../wb/internal/draw2d/IRootFigure.java | 24 ------ .../wb/internal/draw2d/RootFigure.java | 33 +++----- .../gef/graphical/GraphicalViewer.java | 12 +-- .../internal/gef/graphical/RootEditPart.java | 32 ++++---- .../controls/palette/PaletteComposite.java | 14 +--- .../internal/core/editor/DesignComposite.java | 4 +- .../wb/tests/draw2d/FigureEventTest.java | 8 +- .../eclipse/wb/tests/draw2d/LayerTest.java | 75 +------------------ .../wb/tests/draw2d/RootFigureTest.java | 54 +++++++------ 11 files changed, 72 insertions(+), 255 deletions(-) diff --git a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/draw2d/Layer.java b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/draw2d/Layer.java index ecbd453dc4..d58c50fd7d 100644 --- a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/draw2d/Layer.java +++ b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/draw2d/Layer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2024 Google, Inc. and others. + * Copyright (c) 2011, 2026 Google, Inc. 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 @@ -14,75 +14,12 @@ import org.eclipse.wb.internal.draw2d.IRootFigure; -import org.eclipse.draw2d.IFigure; -import org.eclipse.draw2d.geometry.Rectangle; - /** * A transparent figure simple figure's container using into {@link IRootFigure}. * * @author lobas_av * @coverage gef.draw2d */ -public class Layer extends Figure { - private final String m_name; - - //////////////////////////////////////////////////////////////////////////// - // - // Constructor - // - //////////////////////////////////////////////////////////////////////////// - public Layer(String name) { - m_name = name; - } - - //////////////////////////////////////////////////////////////////////////// - // - // Bounds - // - //////////////////////////////////////////////////////////////////////////// - /** - * Direct set bounds from {@link IRootFigure} without notification. - */ - @Override - public void setBounds(Rectangle bounds) { - getBounds().setBounds(bounds); - } - - /** - * If children not contains given point (x, y) then {@link Layer} just as not - * contains it. - */ - @Override - public boolean containsPoint(int x, int y) { - for (IFigure childFigure : getChildren()) { - if (childFigure.containsPoint(x, y)) { - return true; - } - } - return false; - } - - //////////////////////////////////////////////////////////////////////////// - // - // Properties - // - //////////////////////////////////////////////////////////////////////////// - /** - * Return identification name. - */ - public String getName() { - return m_name; - } - - /** - * For this figure opaque is missing. - */ - @Override - public void setOpaque(boolean opaque) { - } +public class Layer extends org.eclipse.draw2d.Layer { - @Override - public String toString() { - return "[%s] %s".formatted(getClass().getSimpleName(), getName()); - } } \ No newline at end of file diff --git a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/CustomTooltipProvider.java b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/CustomTooltipProvider.java index 5e91ca0537..e9537430d9 100644 --- a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/CustomTooltipProvider.java +++ b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/CustomTooltipProvider.java @@ -45,9 +45,9 @@ public final Control createTooltipControl(Composite parent, ICustomTooltipSite s rootFigure.setForegroundColor(parent.getForeground()); rootFigure.setBackgroundColor(parent.getBackground()); // - Layer layer = new Layer("Tooltip"); + Layer layer = new Layer(); layer.add(createTooltipFigure(figure)); - rootFigure.addLayer(layer); + rootFigure.add(layer, "Tooltip"); // return m_canvas; } diff --git a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/IRootFigure.java b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/IRootFigure.java index d2fe29c236..302d5320aa 100644 --- a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/IRootFigure.java +++ b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/IRootFigure.java @@ -31,15 +31,6 @@ public interface IRootFigure extends IFigure { // Layer's // //////////////////////////////////////////////////////////////////////////// - /** - * Adds the given layer as a child of this {@link IRootFigure}. - */ - void addLayer(Layer layer); - - /** - * Adds the given layer as a child of this {@link IRootFigure} with given index. - */ - void addLayer(Layer layer, int index); /** * Returns the layer identified by the name given in the input. @@ -50,19 +41,4 @@ public interface IRootFigure extends IFigure { * Return all layer's from this {@link IRootFigure}. */ List getLayers(); - - /** - * Removes the layer identified by the given key from this {@link IRootFigure}. - */ - void removeLayer(String name); - - /** - * Removes the given layer from this {@link IRootFigure}. - */ - void removeLayer(Layer layer); - - /** - * Remove all layer's from this {@link IRootFigure}. - */ - void removeAll(); } \ No newline at end of file diff --git a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/RootFigure.java b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/RootFigure.java index ec0e2c894e..bdab7bc4df 100644 --- a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/RootFigure.java +++ b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/RootFigure.java @@ -30,7 +30,7 @@ */ public class RootFigure extends Figure implements IRootFigure { private Dimension m_preferredSize; - private Map m_nameToLayer = new HashMap<>(); + private Map m_nameToLayer = new HashMap<>(); private IPreferredSizeProvider m_preferredSizeProvider; //////////////////////////////////////////////////////////////////////////// @@ -132,18 +132,11 @@ public void invalidate() { * Adds the given layer as a child of this {@link IRootFigure}. */ @Override - public void addLayer(Layer layer) { - m_nameToLayer.put(layer.getName(), layer); - add(layer, null, -1); - } - - /** - * Adds the given layer as a child of this {@link IRootFigure} with given index. - */ - @Override - public void addLayer(Layer layer, int index) { - m_nameToLayer.put(layer.getName(), layer); - add(layer, null, index); + public void add(IFigure figure, Object constraints, int index) { + if (figure instanceof Layer layerFigure) { + m_nameToLayer.put(constraints, layerFigure); + } + super.add(figure, constraints, index); } /** @@ -166,21 +159,13 @@ public List getLayers() { return layers; } - /** - * Removes the layer identified by the given key from this {@link IRootFigure}. - */ - @Override - public void removeLayer(String name) { - removeLayer(getLayer(name)); - } - /** * Removes the given layer from this {@link IRootFigure}. */ @Override - public void removeLayer(Layer layer) { - m_nameToLayer.remove(layer.getName()); - remove(layer); + public void remove(IFigure figure) { + m_nameToLayer.values().remove(figure); + super.remove(figure); } /** diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/GraphicalViewer.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/GraphicalViewer.java index de1b736677..f60377b772 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/GraphicalViewer.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/GraphicalViewer.java @@ -156,7 +156,8 @@ public EditPart findObjectAtExcluding(Point location, public EditPart findObjectAtExcluding(Point location, final Collection exclude, final Conditional conditional, - String layer) { + String layerName) { + IFigure layerFigure = getRootEditPart().getLayer(layerName); class ConditionalTreeSearch extends ExclusionSearch { ConditionalTreeSearch(Collection coll) { super(coll); @@ -174,8 +175,8 @@ public boolean accept(IFigure figure) { @Override public boolean prune(IFigure figure) { - if (figure instanceof Layer layerFigure) { - return !layer.equals(layerFigure.getName()); + if (figure instanceof Layer) { + return !figure.equals(layerFigure); } return super.prune(figure); } @@ -217,7 +218,8 @@ public Handle findHandleAt(Point p) { * location in given layer. Returns null if no handle exists at the * given location (x, y). */ - private Handle findTargetHandle(String layer, Point p) { + private Handle findTargetHandle(String layerName, Point p) { + IFigure layerFigure = getRootEditPart().getLayer(layerName); return (Handle) m_canvas.getLightweightSystem().getRootFigure().findFigureAt(p.x, p.y, new TreeSearch() { @Override @@ -227,7 +229,7 @@ public boolean accept(IFigure figure) { @Override public boolean prune(IFigure figure) { - return figure instanceof Layer layerFigure && !layer.equals(layerFigure.getName()); + return figure instanceof Layer && !figure.equals(layerFigure); } }); } diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/RootEditPart.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/RootEditPart.java index e751b71f46..2fe7bd7552 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/RootEditPart.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/graphical/RootEditPart.java @@ -54,22 +54,22 @@ public RootEditPart() { // //////////////////////////////////////////////////////////////////////////// private void createLayers() { - getFigure().addLayer(new Layer(IEditPartViewer.PRIMARY_LAYER_SUB_1)); - getFigure().addLayer(new Layer(LayerConstants.PRIMARY_LAYER)); - getFigure().addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_1)); - getFigure().addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_2)); - getFigure().addLayer(new Layer(LayerConstants.HANDLE_LAYER)); - getFigure().addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_STATIC)); - getFigure().addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_1)); - getFigure().addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_2)); - getFigure().addLayer(new Layer(LayerConstants.FEEDBACK_LAYER)); - getFigure().addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_ABV_1)); - getFigure().addLayer(new Layer(IEditPartViewer.CLICKABLE_LAYER)); - getFigure().addLayer(new Layer(IEditPartViewer.MENU_PRIMARY_LAYER)); - getFigure().addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER)); - getFigure().addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER_STATIC)); - getFigure().addLayer(new Layer(IEditPartViewer.MENU_FEEDBACK_LAYER)); - getFigure().addLayer(new Layer(IEditPartViewer.TOP_LAYER)); + getFigure().add(new Layer(), IEditPartViewer.PRIMARY_LAYER_SUB_1); + getFigure().add(new Layer(), LayerConstants.PRIMARY_LAYER); + getFigure().add(new Layer(), IEditPartViewer.HANDLE_LAYER_SUB_1); + getFigure().add(new Layer(), IEditPartViewer.HANDLE_LAYER_SUB_2); + getFigure().add(new Layer(), LayerConstants.HANDLE_LAYER); + getFigure().add(new Layer(), IEditPartViewer.HANDLE_LAYER_STATIC); + getFigure().add(new Layer(), IEditPartViewer.FEEDBACK_LAYER_SUB_1); + getFigure().add(new Layer(), IEditPartViewer.FEEDBACK_LAYER_SUB_2); + getFigure().add(new Layer(), LayerConstants.FEEDBACK_LAYER); + getFigure().add(new Layer(), IEditPartViewer.FEEDBACK_LAYER_ABV_1); + getFigure().add(new Layer(), IEditPartViewer.CLICKABLE_LAYER); + getFigure().add(new Layer(), IEditPartViewer.MENU_PRIMARY_LAYER); + getFigure().add(new Layer(), IEditPartViewer.MENU_HANDLE_LAYER); + getFigure().add(new Layer(), IEditPartViewer.MENU_HANDLE_LAYER_STATIC); + getFigure().add(new Layer(), IEditPartViewer.MENU_FEEDBACK_LAYER); + getFigure().add(new Layer(), IEditPartViewer.TOP_LAYER); } //////////////////////////////////////////////////////////////////////////// diff --git a/org.eclipse.wb.core/src/org/eclipse/wb/core/controls/palette/PaletteComposite.java b/org.eclipse.wb.core/src/org/eclipse/wb/core/controls/palette/PaletteComposite.java index 74076dd36f..f873e3be81 100644 --- a/org.eclipse.wb.core/src/org/eclipse/wb/core/controls/palette/PaletteComposite.java +++ b/org.eclipse.wb.core/src/org/eclipse/wb/core/controls/palette/PaletteComposite.java @@ -166,7 +166,7 @@ public PaletteComposite(Composite parent, int style) { } // add palette figure (layer) m_paletteFigure = new PaletteRootFigure(); - m_figureCanvas.getContents().add(m_paletteFigure); + m_figureCanvas.getContents().add(m_paletteFigure, "palette"); // set menu { m_menuManager = new MenuManager(); @@ -176,8 +176,8 @@ public PaletteComposite(Composite parent, int style) { } // add feedback layer { - m_feedbackLayer = new Layer("feedback"); - m_figureCanvas.getContents().add(m_feedbackLayer); + m_feedbackLayer = new Layer(); + m_figureCanvas.getContents().add(m_feedbackLayer, "feedback"); } m_layoutType = m_preferences.getLayoutType(); } @@ -374,14 +374,6 @@ public void layoutPalette() { */ @SuppressWarnings("removal") private final class PaletteRootFigure extends Layer { - //////////////////////////////////////////////////////////////////////////// - // - // Constructor - // - //////////////////////////////////////////////////////////////////////////// - public PaletteRootFigure() { - super("palette"); - } //////////////////////////////////////////////////////////////////////////// // diff --git a/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/editor/DesignComposite.java b/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/editor/DesignComposite.java index 8129c6a519..3c9c094739 100644 --- a/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/editor/DesignComposite.java +++ b/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/editor/DesignComposite.java @@ -162,12 +162,12 @@ private void createViewersComposite(Composite parent) { // bind viewers m_viewersComposite.bindViewers(); // add product layer - m_viewer.getRootFigure().addLayer(new Layer("product") { + m_viewer.getRootFigure().add(new Layer() { @Override protected void paintClientArea(Graphics graphics) { BrandingUtils.getBranding().paintBrandingOnCanvas(getClientArea(), graphics); } - }); + }, "product"); } protected abstract void createDesignActions(); diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/FigureEventTest.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/FigureEventTest.java index 2607857cf8..df7ce8ad20 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/FigureEventTest.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/FigureEventTest.java @@ -70,7 +70,7 @@ public void tearDown() throws Exception { //////////////////////////////////////////////////////////////////////////// @Test public void test_handleMouseEvents() throws Exception { - Layer layer1 = new Layer("1"); + Layer layer1 = new Layer(); Figure figure11 = new Figure() { @Override public String toString() { @@ -88,7 +88,7 @@ public String toString() { figure12.setBounds(new Rectangle(400, 300, 50, 70)); layer1.add(figure12); // - Layer layer2 = new Layer("2"); + Layer layer2 = new Layer(); Figure figure21 = new Figure() { @Override public String toString() { @@ -114,8 +114,8 @@ public String toString() { listener.addFigure(figure21); listener.addFigure(figure22); // - ((RootFigure) m_canvas.getContents()).addLayer(layer1); - ((RootFigure) m_canvas.getContents()).addLayer(layer2); + ((RootFigure) m_canvas.getContents()).add(layer1, "1"); + ((RootFigure) m_canvas.getContents()).add(layer2, "2"); m_shell.setSize(500, 400); // TestLogger expectedLogger = new TestLogger(); diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/LayerTest.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/LayerTest.java index cc7d66a1d5..f9b4467733 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/LayerTest.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/LayerTest.java @@ -13,11 +13,8 @@ package org.eclipse.wb.tests.draw2d; import org.eclipse.wb.draw2d.Layer; -import org.eclipse.wb.tests.gef.TestLogger; import org.eclipse.draw2d.Figure; -import org.eclipse.draw2d.geometry.Dimension; -import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; import org.junit.jupiter.api.Test; @@ -33,80 +30,10 @@ public class LayerTest extends Draw2dFigureTestCase { // Test's // //////////////////////////////////////////////////////////////////////////// - @Test - public void test_name() throws Exception { - // check name for new Layer - assertNull(new Layer(null).getName()); - // - // check name for new Layer - assertEquals("", new Layer("").getName()); - // - // check name for new Layer - assertEquals("Feedback", new Layer("Feedback").getName()); - } - - @Test - public void test_bounds() throws Exception { - TestLogger actualLogger = new TestLogger(); - // - TestCaseRootFigure parentFigure = new TestCaseRootFigure(actualLogger); - // - Layer layer = new Layer("test"); - parentFigure.add(layer); - actualLogger.clear(); - // - // check work setBounds() and not reset state - layer.setBounds(new Rectangle(1, 2, 3, 4)); - actualLogger.assertEmpty(); - assertEquals(new Rectangle(1, 2, 3, 4), layer.getBounds()); - // - // check work setLocation(int, int) and not reset state - layer.setLocation(new Point(5, 5)); - actualLogger.assertEmpty(); - assertEquals(new Rectangle(5, 5, 3, 4), layer.getBounds()); - // - // check work setLocation(Point) and not reset state - layer.setLocation(new Point(7, 8)); - actualLogger.assertEmpty(); - assertEquals(new Rectangle(7, 8, 3, 4), layer.getBounds()); - // - // check work setSize(int, int) and not reset state - layer.setSize(12, 13); - actualLogger.assertEmpty(); - assertEquals(new Rectangle(7, 8, 12, 13), layer.getBounds()); - // - // check work setSize(Dimension) and not reset state - layer.setSize(new Dimension(2, 1)); - actualLogger.assertEmpty(); - assertEquals(new Rectangle(7, 8, 2, 1), layer.getBounds()); - } - - @Test - public void test_opaque() throws Exception { - TestLogger actualLogger = new TestLogger(); - // - TestCaseRootFigure parentFigure = new TestCaseRootFigure(actualLogger); - // - Layer layer = new Layer("test"); - parentFigure.add(layer); - actualLogger.clear(); - // - assertFalse(layer.isOpaque()); - // - // check not change opaque - layer.setOpaque(true); - actualLogger.assertEmpty(); - assertFalse(layer.isOpaque()); - // - // check not change opaque - layer.setOpaque(false); - actualLogger.assertEmpty(); - assertFalse(layer.isOpaque()); - } @Test public void test_containsPoint() throws Exception { - Layer layer = new Layer("test"); + Layer layer = new Layer(); Figure figure = new Figure(); figure.setBounds(new Rectangle(10, 10, 100, 100)); layer.add(figure); diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/RootFigureTest.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/RootFigureTest.java index af69959033..68f518c77f 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/RootFigureTest.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/RootFigureTest.java @@ -64,17 +64,17 @@ public void notifyValidating() { } }); // - Layer layer0 = new Layer("Main"); + Layer layer0 = new Layer(); Figure figure0 = new Figure(); figure0.setBounds(new Rectangle(10, 10, 100, 200)); layer0.add(figure0); - testRoot.addLayer(layer0); + testRoot.add(layer0, "Main"); // - Layer layer1 = new Layer("Feedback"); + Layer layer1 = new Layer(); Figure figure1 = new Figure(); figure1.setBounds(new Rectangle(50, 70, 120, 90)); layer1.add(figure1); - testRoot.addLayer(layer1); + testRoot.add(layer1, "Feedback"); // actualLogger.clear(); // @@ -98,7 +98,7 @@ public void notifyValidating() { figure1.repaint(); waitEventLoop(10); // - expectedLogger.log("refreshRequest(50, 70, 120, 90)"); + expectedLogger.log("refreshRequest(0, 0, 180, 210)"); actualLogger.assertEquals(expectedLogger); // assertSame(preferredSize, testRoot.getPreferredSize()); @@ -117,7 +117,7 @@ public void notifyValidating() { @Test public void test_findTargetFigure() throws Exception { - Layer layer1 = new Layer("1"); + Layer layer1 = new Layer(); Figure figure11 = new Figure() { @Override public String toString() { @@ -133,7 +133,7 @@ public String toString() { }; layer1.add(figure12, new Rectangle(400, 300, 50, 70)); // - Layer layer2 = new Layer("2"); + Layer layer2 = new Layer(); Figure figure21 = new Figure() { @Override public String toString() { @@ -167,8 +167,8 @@ public UpdateManager getUpdateManager() { public void repaint(int x, int y, int width, int height) { } }; - testRoot.addLayer(layer1); - testRoot.addLayer(layer2); + testRoot.add(layer1, "1"); + testRoot.add(layer2, "2"); testRoot.setBounds(new Rectangle(0, 0, 500, 400)); // // check work findTargetFigure() @@ -198,13 +198,13 @@ public void test_addLayer_getLayer() throws Exception { TestLogger expectedLogger = new TestLogger(); // // check add null Layer - assertThrows(NullPointerException.class, () -> testRoot.addLayer(null)); + assertThrows(NullPointerException.class, () -> testRoot.add(null)); // assertEquals(0, testRoot.getLayers().size()); // // check add Layer - Layer layer0 = new Layer("Main"); - testRoot.addLayer(layer0); + Layer layer0 = new Layer(); + testRoot.add(layer0, "Main"); // expectedLogger.log("invalidate"); expectedLogger.log("repaint(0, 0, 0, 0)"); @@ -214,8 +214,8 @@ public void test_addLayer_getLayer() throws Exception { assertEquals(1, testRoot.getLayers().size()); // // check add Layer - Layer layer1 = new Layer("Feedback"); - testRoot.addLayer(layer1); + Layer layer1 = new Layer(); + testRoot.add(layer1, "Feedback"); // expectedLogger.log("invalidate"); expectedLogger.log("repaint(0, 0, 0, 0)"); @@ -243,22 +243,20 @@ public void test_remove() throws Exception { // TestLogger expectedLogger = new TestLogger(); // - Layer layer0 = new Layer("Feedback"); - testRoot.addLayer(layer0); + Layer layer0 = new Layer(); + testRoot.add(layer0, "Feedback"); actualLogger.clear(); // // check remove null Layer - assertThrows(NullPointerException.class, () -> testRoot.removeLayer((Layer) null)); + IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> testRoot.remove((Layer) null)); + assertEquals("Figure is not a child", e.getMessage()); // - // check remove Layer with not exist name - assertThrows(NullPointerException.class, () -> testRoot.removeLayer("feedback")); - // - Layer layer1 = new Layer("feedback"); - testRoot.addLayer(layer1); + Layer layer1 = new Layer(); + testRoot.add(layer1, "feedback"); actualLogger.clear(); // // check work removeLayer(Layer) - testRoot.removeLayer(layer0); + testRoot.remove(layer0); // expectedLogger.log("repaint(0, 0, 0, 0)"); expectedLogger.log("invalidate"); @@ -269,7 +267,7 @@ public void test_remove() throws Exception { assertNull(testRoot.getLayer("Feedback")); // // check work removeLayer(String) - testRoot.removeLayer("feedback"); + testRoot.remove(layer1); // expectedLogger.log("repaint(0, 0, 0, 0)"); expectedLogger.log("invalidate"); @@ -292,10 +290,10 @@ public void test_removeAll() throws Exception { testRoot.removeAll(); actualLogger.assertEmpty(); // - Layer layer0 = new Layer("Main"); - testRoot.addLayer(layer0); - Layer layer1 = new Layer("Feedback"); - testRoot.addLayer(layer1); + Layer layer0 = new Layer(); + testRoot.add(layer0, "Main"); + Layer layer1 = new Layer(); + testRoot.add(layer1, "Feedback"); actualLogger.clear(); // // check reset state during removeAll()