From 6a483d5d7ffbdd6f1d60eed2d93fe508fb7d590e Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Sat, 4 Apr 2026 12:15:41 +0200 Subject: [PATCH] [GEF] Remove deprecated TreeEditPart With this our "Design" and "Root" tree edit-part now extends the `AbstractTreeEditPart` directly. Note that refresh doesn't recursively refresh its children, unlike our edit-parts. --- .../wb/gef/tree/DesignTreeEditPart.java | 17 ++- .../org/eclipse/wb/gef/tree/TreeEditPart.java | 132 ------------------ .../wb/internal/gef/tree/RootEditPart.java | 66 +-------- .../wb/core/gefTree/part/ObjectEditPart.java | 29 ++-- .../org/eclipse/wb/tests/gef/TreeRobot.java | 3 +- .../eclipse/wb/tests/gef/TreeToolTest.java | 2 +- 6 files changed, 43 insertions(+), 206 deletions(-) delete mode 100644 org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/TreeEditPart.java diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/DesignTreeEditPart.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/DesignTreeEditPart.java index 0259615d5..d8281cfda 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/DesignTreeEditPart.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/DesignTreeEditPart.java @@ -14,11 +14,14 @@ import org.eclipse.wb.gef.core.RequestProcessor; import org.eclipse.wb.gef.core.policies.IRequestEditPolicy; +import org.eclipse.wb.internal.gef.tree.tools.DoubleClickEditPartTracker; +import org.eclipse.gef.DragTracker; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editparts.AbstractTreeEditPart; import java.util.ArrayList; import java.util.List; @@ -28,8 +31,7 @@ * * @see {@link RequestProcessor} */ -@SuppressWarnings("removal") -public abstract class DesignTreeEditPart extends TreeEditPart { +public abstract class DesignTreeEditPart extends AbstractTreeEditPart { //////////////////////////////////////////////////////////////////////////// // @@ -125,4 +127,15 @@ public void showTargetFeedback(Request request) { public void eraseTargetFeedback(Request request) { super.eraseTargetFeedback(processRequestProcessors(request)); } + + //////////////////////////////////////////////////////////////////////////// + // + // DragTracking + // + //////////////////////////////////////////////////////////////////////////// + @Override + public DragTracker getDragTracker(Request request) { + return new DoubleClickEditPartTracker(this); + } + } \ No newline at end of file diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/TreeEditPart.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/TreeEditPart.java deleted file mode 100644 index 5210882d9..000000000 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/tree/TreeEditPart.java +++ /dev/null @@ -1,132 +0,0 @@ -/******************************************************************************* - * 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 - * https://www.eclipse.org/legal/epl-2.0. - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Google, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.wb.gef.tree; - -import org.eclipse.wb.gef.core.tools.Tool; -import org.eclipse.wb.internal.gef.tree.tools.DoubleClickEditPartTracker; - -import org.eclipse.gef.EditPart; -import org.eclipse.gef.Request; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.widgets.TreeItem; -import org.eclipse.swt.widgets.Widget; - -import java.util.List; - -/** - * @author lobas_av - * @coverage gef.tree - * @deprecated Cast to {@link org.eclipse.gef.TreeEditPart TreeEditPart} - * directly or extend {@link AbstractTreeEditPart}. - */ -@SuppressWarnings("removal") -@Deprecated(forRemoval = true, since = "2026-06") -public abstract class TreeEditPart extends org.eclipse.wb.gef.core.EditPart implements org.eclipse.gef.TreeEditPart { - private TreeItem m_widget; - private boolean m_expandedShouldRestore; - private boolean m_expanded; - - //////////////////////////////////////////////////////////////////////////// - // - // Widget - // - //////////////////////////////////////////////////////////////////////////// - @Override - public TreeItem getWidget() { - return m_widget; - } - - @Override - public void setWidget(Widget widget) { - m_widget = (TreeItem) widget; - // - List children = getChildren(); - if (m_widget == null) { - for (EditPart editPart : children) { - TreeEditPart treePart = (TreeEditPart) editPart; - treePart.setWidget(null); - } - } else { - m_widget.setData(this); - m_widget.addDisposeListener(new DisposeListener() { - @Override - public void widgetDisposed(DisposeEvent e) { - m_expandedShouldRestore = true; - m_expanded = m_widget.getExpanded(); - } - }); - } - } - - //////////////////////////////////////////////////////////////////////////// - // - // EditPart - // - //////////////////////////////////////////////////////////////////////////// - @Override - protected void addChildVisual(EditPart childPart, int index) { - TreeEditPart treePart = (TreeEditPart) childPart; - treePart.setWidget(new TreeItem(getWidget(), SWT.NONE, index)); - } - - @Override - protected void removeChildVisual(EditPart childPart) { - TreeEditPart treePart = (TreeEditPart) childPart; - if (treePart.getWidget() != null) { - treePart.getWidget().dispose(); - treePart.setWidget(null); - } - } - - @Override - protected void updateChildVisual(org.eclipse.wb.gef.core.EditPart childPart, int index) { - TreeEditPart treePart = (TreeEditPart) childPart; - if (treePart.getWidget() == null) { - treePart.setWidget(new TreeItem(getWidget(), SWT.NONE, index)); - } - } - - @Override - public void refresh() { - super.refresh(); - if (m_expandedShouldRestore) { - m_expandedShouldRestore = false; - TreeItem widget = getWidget(); - if (widget != null && !widget.isDisposed()) { - widget.setExpanded(m_expanded); - } - } - } - - //////////////////////////////////////////////////////////////////////////// - // - // Policy - // - //////////////////////////////////////////////////////////////////////////// - @Override - protected void createEditPolicies() { - //installEditPolicy("TreeToolAdapterEditPolicy", new TreeToolAdapterEditPolicy()); - } - - //////////////////////////////////////////////////////////////////////////// - // - // DragTracking - // - //////////////////////////////////////////////////////////////////////////// - @Override - public Tool getDragTracker(Request request) { - return new DoubleClickEditPartTracker(this); - } -} \ 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 c2cc6ec9d..2e7f2e176 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 @@ -12,12 +12,8 @@ *******************************************************************************/ package org.eclipse.wb.internal.gef.tree; -import org.eclipse.wb.gef.core.IEditPartViewer; -import org.eclipse.wb.gef.tree.DesignTreeEditPart; - -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPartViewer; import org.eclipse.gef.TreeEditPart; +import org.eclipse.gef.editparts.RootTreeEditPart; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; @@ -27,66 +23,18 @@ * @author lobas_av * @coverage gef.tree */ -public class RootEditPart extends DesignTreeEditPart implements org.eclipse.gef.RootEditPart { - private IEditPartViewer m_viewer; - private TreeEditPart m_contentEditPart; - - //////////////////////////////////////////////////////////////////////////// - // - // EditPart - // - //////////////////////////////////////////////////////////////////////////// - /** - * Returns the root's {@link EditPartViewer}. - */ - @Override - public IEditPartViewer getViewer() { - return m_viewer; - } - - @Override - public void setViewer(EditPartViewer viewer) { - m_viewer = (IEditPartViewer) viewer; - } - +public class RootEditPart extends RootTreeEditPart { @Override protected void addChildVisual(org.eclipse.gef.EditPart childPart, int index) { - m_contentEditPart.setWidget(new TreeItem(getTreeControl(), SWT.NONE)); - } - - private Tree getTreeControl() { - return (Tree) m_viewer.getControl(); + getContents().setWidget(new TreeItem(getWidget(), SWT.NONE)); } - - //////////////////////////////////////////////////////////////////////////// - // - // IRootEditPart - // - //////////////////////////////////////////////////////////////////////////// - - /** - * Returns the content {@link EditPart}. - */ @Override - public EditPart getContents() { - return m_contentEditPart; + public Tree getWidget() { + return (Tree) getViewer().getControl(); } - /** - * Sets the content {@link EditPart}. A IRootEditPart only has a single child, called its - * contents. - */ @Override - public void setContents(org.eclipse.gef.EditPart contentEditPart) { - if (m_contentEditPart != null) { - // remove content - removeChild(m_contentEditPart); - } - // - m_contentEditPart = (TreeEditPart) contentEditPart; - // - if (m_contentEditPart != null) { - addChild(m_contentEditPart, -1); - } + public TreeEditPart getContents() { + return (TreeEditPart) super.getContents(); } } \ No newline at end of file diff --git a/org.eclipse.wb.core/src/org/eclipse/wb/core/gefTree/part/ObjectEditPart.java b/org.eclipse.wb.core/src/org/eclipse/wb/core/gefTree/part/ObjectEditPart.java index 2d0ca8d91..25345177a 100644 --- a/org.eclipse.wb.core/src/org/eclipse/wb/core/gefTree/part/ObjectEditPart.java +++ b/org.eclipse.wb.core/src/org/eclipse/wb/core/gefTree/part/ObjectEditPart.java @@ -33,6 +33,7 @@ import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; import java.util.ArrayList; import java.util.Collections; @@ -92,7 +93,7 @@ public void refreshed() throws Exception { // do in setRedraw(false) to avoid flashing after component moving tree.setRedraw(false); try { - refresh(); + refresh(ObjectEditPart.this); { setSelectionIfAllEditParts(m_delayedSelectionObjects); m_delayedSelectionObjects = null; @@ -103,6 +104,13 @@ public void refreshed() throws Exception { } } + private void refresh(EditPart editPart) { + editPart.refresh(); + for (EditPart child : editPart.getChildren()) { + refresh(child); + } + } + @Override public void select(List objects) throws Exception { m_delayedSelectionObjects = null; @@ -173,26 +181,27 @@ private void update() { } private void update0() { + if (getWidget() instanceof Tree) { + return; + } + TreeItem treeItem = (TreeItem) getWidget(); + ImageDescriptor imageDescriptor = ObjectInfo.getImageDescriptor(m_object); String text = ObjectInfo.getText(m_object); if (imageDescriptor != null) { Image image = imageDescriptor.createImage(); - getWidget().addDisposeListener(event -> image.dispose()); - getWidget().setImage(image); + treeItem.addDisposeListener(event -> image.dispose()); + treeItem.setImage(image); } //Obtain the preference specifying the root object name. If no name is specified then the default is used String rootObjectName = InstanceScope.INSTANCE.getNode(IEditorPreferenceConstants.WB_BASIC_UI_PREFERENCE_NODE).get( IEditorPreferenceConstants.WB_ROOT_OBJ_NAME, null); - if (getWidget().getParentItem() == null) { - if (rootObjectName == null) { - getWidget().setText(text); - } else { - getWidget().setText(rootObjectName); - } + if (treeItem.getParentItem() == null && rootObjectName != null) { + treeItem.setText(rootObjectName); } else { - getWidget().setText(text); + treeItem.setText(text); } } diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeRobot.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeRobot.java index e232717c3..9dc3babf1 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeRobot.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeRobot.java @@ -307,8 +307,7 @@ public TreeEditPart[] getEditParts(Object[] models) { */ public void setExpanded(TreeEditPart editPart, boolean expanded) { TreeEditPart parentEditPart = (TreeEditPart) editPart.getParent(); - if (parentEditPart != null) { - TreeItem widget = (TreeItem) parentEditPart.getWidget(); + if (parentEditPart != null && parentEditPart.getWidget() instanceof TreeItem widget) { if (expanded) { setExpanded(parentEditPart, expanded); if (widget != null) { diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeToolTest.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeToolTest.java index 8ba3fe3e6..5717175a7 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeToolTest.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/TreeToolTest.java @@ -255,7 +255,7 @@ public void performRequest(Request request) { @Override protected void refreshVisuals() { - getWidget().setText(m_name); + ((TreeItem) getWidget()).setText(m_name); } @Override