diff --git a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/FigureCanvas.java b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/FigureCanvas.java index f773dff86..d509948f9 100644 --- a/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/FigureCanvas.java +++ b/org.eclipse.wb.core/src-draw2d/org/eclipse/wb/internal/draw2d/FigureCanvas.java @@ -29,7 +29,6 @@ * @coverage gef.draw2d */ public class FigureCanvas extends org.eclipse.draw2d.FigureCanvas { - private RootFigure m_rootFigure; //////////////////////////////////////////////////////////////////////////// // @@ -38,8 +37,8 @@ public class FigureCanvas extends org.eclipse.draw2d.FigureCanvas { //////////////////////////////////////////////////////////////////////////// public FigureCanvas(Composite parent, int style) { super(parent, style | SWT.DOUBLE_BUFFERED, createLightweightSystem()); - // create root figure - createRootFigure(); + setDefaultEventManager(); + setDefaultUpdateManager(); } //////////////////////////////////////////////////////////////////////////// @@ -48,16 +47,6 @@ public FigureCanvas(Composite parent, int style) { // //////////////////////////////////////////////////////////////////////////// - private void createRootFigure() { - m_rootFigure = new RootFigure(this); - m_rootFigure.setBackgroundColor(getBackground()); - m_rootFigure.setForegroundColor(getForeground()); - m_rootFigure.setFont(getFont()); - setDefaultEventManager(); - setDefaultUpdateManager(); - setContents(m_rootFigure); - } - // TODO ptziegler - It should be possible to change the update manager after the // figure canvas has been created. private static LightweightSystem createLightweightSystem() { @@ -97,7 +86,7 @@ private CachedUpdateManager getUpdateManager() { //////////////////////////////////////////////////////////////////////////// @Override public Point computeSize(int wHint, int hHint, boolean changed) { - Dimension size = m_rootFigure.getPreferredSize().getUnioned(wHint, hHint); + Dimension size = getContents().getPreferredSize().getUnioned(wHint, hHint); return new Point(size.width, size.height); } 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 bfe0ac388..ec0e2c894 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 @@ -14,10 +14,8 @@ import org.eclipse.wb.draw2d.Layer; -import org.eclipse.draw2d.EventDispatcher; import org.eclipse.draw2d.Figure; import org.eclipse.draw2d.IFigure; -import org.eclipse.draw2d.UpdateManager; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Rectangle; @@ -31,7 +29,6 @@ * @coverage gef.draw2d */ public class RootFigure extends Figure implements IRootFigure { - private final FigureCanvas m_figureCanvas; private Dimension m_preferredSize; private Map m_nameToLayer = new HashMap<>(); private IPreferredSizeProvider m_preferredSizeProvider; @@ -41,8 +38,7 @@ public class RootFigure extends Figure implements IRootFigure { // Constructor // //////////////////////////////////////////////////////////////////////////// - public RootFigure(FigureCanvas figureCanvas) { - m_figureCanvas = figureCanvas; + public RootFigure() { setOpaque(true); } @@ -59,22 +55,12 @@ public void setPreferredSizeProvider(IPreferredSizeProvider provider) { m_preferredSizeProvider = provider; } - @Override - public EventDispatcher internalGetEventDispatcher() { - return m_figureCanvas.getLightweightSystem().getRootFigure().internalGetEventDispatcher(); - } - //////////////////////////////////////////////////////////////////////////// // // RootFigure // //////////////////////////////////////////////////////////////////////////// - @Override - public UpdateManager getUpdateManager() { - return m_figureCanvas.getLightweightSystem().getUpdateManager(); - } - /** * Returns the desirable size for this container 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 441145328..de1b73667 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 @@ -65,11 +65,12 @@ protected void setDefaultEventManager() { protected GraphicalViewer(FigureCanvas canvas) { m_canvas = canvas; - m_rootEditPart = new RootEditPart(getRootFigure()); + m_rootEditPart = new RootEditPart(); m_rootEditPart.setViewer(this); m_rootEditPart.activate(); setRootEditPart(m_rootEditPart); setKeyHandler(new DesignKeyHandler(this)); + m_canvas.setContents(m_rootEditPart.getFigure()); } //////////////////////////////////////////////////////////////////////////// @@ -104,7 +105,7 @@ public final IRootFigure getRootFigure() { * Internal access to original, internal root figure. */ protected final RootFigure getRootFigureInternal() { - return (RootFigure) m_canvas.getContents(); + return m_rootEditPart.getFigure(); } /** 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 672094378..e751b71f4 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 @@ -15,7 +15,7 @@ import org.eclipse.wb.draw2d.Layer; import org.eclipse.wb.gef.core.IEditPartViewer; import org.eclipse.wb.gef.graphical.DesignEditPart; -import org.eclipse.wb.internal.draw2d.IRootFigure; +import org.eclipse.wb.internal.draw2d.RootFigure; import org.eclipse.draw2d.IFigure; import org.eclipse.gef.DragTracker; @@ -37,7 +37,6 @@ */ public class RootEditPart extends DesignEditPart implements org.eclipse.gef.RootEditPart, LayerManager { private IEditPartViewer m_viewer; - private final IRootFigure m_rootFigure; private EditPart m_contentEditPart; //////////////////////////////////////////////////////////////////////////// @@ -45,8 +44,7 @@ public class RootEditPart extends DesignEditPart implements org.eclipse.gef.Root // Constructor // //////////////////////////////////////////////////////////////////////////// - public RootEditPart(IRootFigure rootFigure) { - m_rootFigure = rootFigure; + public RootEditPart() { createLayers(); } @@ -56,22 +54,22 @@ public RootEditPart(IRootFigure rootFigure) { // //////////////////////////////////////////////////////////////////////////// private void createLayers() { - m_rootFigure.addLayer(new Layer(IEditPartViewer.PRIMARY_LAYER_SUB_1)); - m_rootFigure.addLayer(new Layer(LayerConstants.PRIMARY_LAYER)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_1)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_SUB_2)); - m_rootFigure.addLayer(new Layer(LayerConstants.HANDLE_LAYER)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.HANDLE_LAYER_STATIC)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_1)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_SUB_2)); - m_rootFigure.addLayer(new Layer(LayerConstants.FEEDBACK_LAYER)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.FEEDBACK_LAYER_ABV_1)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.CLICKABLE_LAYER)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_PRIMARY_LAYER)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_HANDLE_LAYER_STATIC)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.MENU_FEEDBACK_LAYER)); - m_rootFigure.addLayer(new Layer(IEditPartViewer.TOP_LAYER)); + 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)); } //////////////////////////////////////////////////////////////////////////// @@ -106,15 +104,17 @@ public void setViewer(EditPartViewer viewer) { */ @Override public IFigure getContentPane() { - return m_rootFigure.getLayer(LayerConstants.PRIMARY_LAYER); + return getFigure().getLayer(LayerConstants.PRIMARY_LAYER); } - /** - * This {@link EditPart} not contains itself {@link IFigure}. - */ @Override protected IFigure createFigure() { - return null; + return new RootFigure(); + } + + @Override + public RootFigure getFigure() { + return (RootFigure) super.getFigure(); } @Override @@ -146,7 +146,7 @@ public void setContents(org.eclipse.gef.EditPart contentEditPart) { // remove content removeChild(m_contentEditPart); // clear all layers - for (Layer layer : m_rootFigure.getLayers()) { + for (Layer layer : getFigure().getLayers()) { layer.removeAll(); } } @@ -171,7 +171,7 @@ public DragTracker getDragTracker(Request request) { @Override public IFigure getLayer(Object key) { if (key instanceof String name) { - return m_rootFigure.getLayer(name); + return getFigure().getLayer(name); } return null; } 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 9ae5744b5..74076dd36 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 @@ -21,6 +21,7 @@ import org.eclipse.wb.internal.core.utils.ui.DrawUtils; import org.eclipse.wb.internal.draw2d.EventManager; import org.eclipse.wb.internal.draw2d.FigureCanvas; +import org.eclipse.wb.internal.draw2d.RootFigure; import org.eclipse.draw2d.ColorConstants; import org.eclipse.draw2d.Figure; @@ -158,6 +159,7 @@ public PaletteComposite(Composite parent, int style) { // prepare draw2d FigureCanvas { m_figureCanvas = new FigureCanvas(this, SWT.V_SCROLL); + m_figureCanvas.setContents(new RootFigure()); m_figureCanvas.getContents().setBackgroundColor(COLOR_PALETTE_BACKGROUND); m_figureCanvas.getContents().setForegroundColor(COLOR_TEXT_ENABLED); m_eventManager = (EventManager) m_figureCanvas.getContents().internalGetEventDispatcher(); 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 b7fa00e8e..2607857cf 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 @@ -53,6 +53,7 @@ public void setUp() throws Exception { m_shell = new Shell(); m_shell.setLayout(new FillLayout()); m_canvas = new FigureCanvas(m_shell, SWT.NONE); + m_canvas.setContents(new RootFigure()); m_sender = new EventSender(m_canvas); } 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 e2fbdc36a..af6995903 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 @@ -45,7 +45,7 @@ public void test_getPreferredSize_setBounds() throws Exception { // TestLogger expectedLogger = new TestLogger(); // - RootFigure testRoot = new RootFigure(null) { + RootFigure testRoot = new RootFigure() { @Override public UpdateManager getUpdateManager() { return updateManager; @@ -157,7 +157,7 @@ public String toString() { figure22.add(figure23, new Rectangle(15, 25, 19, 12)); // final UpdateManager updateManager = new DeferredUpdateManager(); - RootFigure testRoot = new RootFigure(null) { + RootFigure testRoot = new RootFigure() { @Override public UpdateManager getUpdateManager() { return updateManager; diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/TestCaseRootFigure.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/TestCaseRootFigure.java index 67e293003..5943977cb 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/TestCaseRootFigure.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/draw2d/TestCaseRootFigure.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2023 Google, Inc. + * 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 @@ -37,7 +37,6 @@ public class TestCaseRootFigure extends RootFigure { // //////////////////////////////////////////////////////////////////////////// public TestCaseRootFigure(TestLogger logger) { - super(null); m_logger = logger; m_testManager = new UpdateManager() { @Override