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 13a5a412f..0ca7908ad 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,7 +65,8 @@ protected void setDefaultEventManager() { protected GraphicalViewer(FigureCanvas canvas) { m_canvas = canvas; - m_rootEditPart = new RootEditPart(this, getRootFigure()); + m_rootEditPart = new RootEditPart(getRootFigure()); + m_rootEditPart.setViewer(this); m_rootEditPart.activate(); setRootEditPart(m_rootEditPart); } 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 6b3f16b62..1556bbf88 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2023 Google, Inc. + * Copyright (c) 2011, 2025 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 @@ -21,8 +21,10 @@ import org.eclipse.wb.gef.graphical.tools.MarqueeSelectionTool; import org.eclipse.wb.internal.draw2d.IRootFigure; +import org.eclipse.draw2d.IFigure; import org.eclipse.gef.EditPartViewer; import org.eclipse.gef.Request; +import org.eclipse.gef.editparts.LayerManager; /** * A {@link RootEditPart} is the root of an {@link IEditPartViewer}. It bridges the gap @@ -33,7 +35,7 @@ * @author lobas_av * @coverage gef.graphical */ -public class RootEditPart extends GraphicalEditPart implements org.eclipse.gef.RootEditPart { +public class RootEditPart extends GraphicalEditPart implements org.eclipse.gef.RootEditPart, LayerManager { private IEditPartViewer m_viewer; private final IRootFigure m_rootFigure; private EditPart m_contentEditPart; @@ -43,8 +45,7 @@ public class RootEditPart extends GraphicalEditPart implements org.eclipse.gef.R // Constructor // //////////////////////////////////////////////////////////////////////////// - public RootEditPart(IEditPartViewer viewer, IRootFigure rootFigure) { - m_viewer = viewer; + public RootEditPart(IRootFigure rootFigure) { m_rootFigure = rootFigure; createLayers(); } @@ -88,7 +89,16 @@ public IEditPartViewer getViewer() { @Override public void setViewer(EditPartViewer viewer) { + if (m_viewer == viewer) { + return; + } + if (m_viewer != null) { + unregister(); + } m_viewer = (IEditPartViewer) viewer; + if (m_viewer != null) { + register(); + } } /** @@ -107,6 +117,11 @@ protected Figure createFigure() { return null; } + @Override + public Object getModel() { + return LayerManager.ID; + } + //////////////////////////////////////////////////////////////////////////// // // IRootEditPart @@ -152,4 +167,12 @@ public void setContents(org.eclipse.gef.EditPart contentEditPart) { public Tool getDragTracker(Request request) { return new MarqueeSelectionTool(); } + + @Override + public IFigure getLayer(Object key) { + if (key instanceof String name) { + return m_rootFigure.getLayer(name); + } + return null; + } } \ No newline at end of file diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/RootEditPart.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/RootEditPart.java index f83e0126f..aee2c6739 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/RootEditPart.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/RootEditPart.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2023 Google, Inc. + * Copyright (c) 2011, 2025 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 @@ -30,15 +30,6 @@ public class RootEditPart extends TreeEditPart implements org.eclipse.gef.RootEd private IEditPartViewer m_viewer; private TreeEditPart m_contentEditPart; - //////////////////////////////////////////////////////////////////////////// - // - // Constructor - // - //////////////////////////////////////////////////////////////////////////// - public RootEditPart(IEditPartViewer viewer) { - m_viewer = viewer; - } - //////////////////////////////////////////////////////////////////////////// // // EditPart diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/TreeViewer.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/TreeViewer.java index 0a9add8a3..109691708 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/TreeViewer.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/internal/gef/tree/TreeViewer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2024 Google, Inc. and others. + * Copyright (c) 2011, 2025 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 @@ -61,7 +61,8 @@ public TreeViewer(Tree tree) { // handle SWT events m_eventManager = new TreeEventManager(m_tree, this); // create root EditPart - m_rootEditPart = new RootEditPart(this); + m_rootEditPart = new RootEditPart(); + m_rootEditPart.setViewer(this); m_rootEditPart.activate(); setRootEditPart(m_rootEditPart); // handle selection events