From 73afaf81d7c421bf2124aa4cfa11a636f085b08d Mon Sep 17 00:00:00 2001 From: Patrick Ziegler Date: Sat, 18 Jul 2026 22:02:29 +0200 Subject: [PATCH] [GEF] Remove redundant `SelectEditPartTracker` class Use GEF tracker directly. --- .../gef/core/tools/DragEditPartTracker.java | 1 + .../gef/core/tools/SelectEditPartTracker.java | 156 ------------------ .../core/gef/part/menu/MenuEditPart.java | 2 +- .../swt/model/menu/MenuPopupSimpleTest.java | 2 +- .../gef/SelectAndDragEditPartTrackerTest.java | 2 +- .../wb/tests/utils/AbsoluteSelectionTool.java | 2 +- 6 files changed, 5 insertions(+), 160 deletions(-) delete mode 100644 org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/SelectEditPartTracker.java diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java index ecb2ac27d..f2c63fad4 100644 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java +++ b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/DragEditPartTracker.java @@ -28,6 +28,7 @@ import org.eclipse.gef.commands.CompoundCommand; import org.eclipse.gef.requests.ChangeBoundsRequest; import org.eclipse.gef.requests.GroupRequest; +import org.eclipse.gef.tools.SelectEditPartTracker; import org.eclipse.jface.viewers.StructuredSelection; import java.util.ArrayList; diff --git a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/SelectEditPartTracker.java b/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/SelectEditPartTracker.java deleted file mode 100644 index 3c5fe1566..000000000 --- a/org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/SelectEditPartTracker.java +++ /dev/null @@ -1,156 +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.core.tools; - -import org.eclipse.gef.DragTracker; -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPartViewer; -import org.eclipse.gef.RequestConstants; -import org.eclipse.gef.requests.SelectionRequest; -import org.eclipse.gef.tools.TargetingTool; -import org.eclipse.swt.graphics.Cursor; - -/** - * A drag tracker used to select {@link EditPart EditParts}. - * - * @author lobas_av - * @coverage gef.core - */ -public class SelectEditPartTracker extends TargetingTool implements DragTracker { - private final EditPart m_sourceEditPart; - private boolean m_isSelected; - - //////////////////////////////////////////////////////////////////////////// - // - // Constructor - // - //////////////////////////////////////////////////////////////////////////// - public SelectEditPartTracker(EditPart sourceEditPart) { - m_sourceEditPart = sourceEditPart; - } - - @Override - protected String getCommandName() { - return "Select Tracker"; - } - - //////////////////////////////////////////////////////////////////////////// - // - // Drop Access - // - //////////////////////////////////////////////////////////////////////////// - @Override - protected void resetFlags() { - super.resetFlags(); - m_isSelected = false; - } - - //////////////////////////////////////////////////////////////////////////// - // - // Cursor - // - //////////////////////////////////////////////////////////////////////////// - @Override - protected Cursor calculateCursor() { - return isInState(STATE_INITIAL) || isInState(STATE_DRAG) - ? getDefaultCursor() - : super.calculateCursor(); - } - - //////////////////////////////////////////////////////////////////////////// - // - // High-Level handle MouseEvent - // - //////////////////////////////////////////////////////////////////////////// - @Override - protected boolean handleButtonDown(int button) { - if ((button == 1 || button == 3) - && isInState(STATE_INITIAL) - && m_sourceEditPart.getSelected() == EditPart.SELECTED_NONE) { - performSelection(); - } - if (button == 1) { - if (isInState(STATE_INITIAL)) { - setState(STATE_DRAG); - } - } else { - if (button == 3) { - setState(STATE_TERMINAL); - } else { - setState(STATE_INVALID); - } - handleInvalidInput(); - } - return true; - } - - @Override - protected boolean handleButtonUp(int button) { - if (isInState(STATE_DRAG)) { - performSelection(); - setState(STATE_TERMINAL); - } - return true; - } - - @Override - protected boolean handleDragStarted() { - if (isInState(STATE_DRAG)) { - setState(STATE_DRAG_IN_PROGRESS); - } - return true; - } - - @Override - protected boolean handleDoubleClick(int button) { - if (button == 1) { - SelectionRequest request = new SelectionRequest(); - request.setType(RequestConstants.REQ_OPEN); - request.setLocation(getLocation()); - m_sourceEditPart.performRequest(request); - } - return true; - } - - //////////////////////////////////////////////////////////////////////////// - // - // Selection - // - //////////////////////////////////////////////////////////////////////////// - /** - * Performs the appropriate selection action based on the selection state of the source and the - * modifiers (CTRL and SHIFT). If no modifier key is pressed, the source will be set as the only - * selection. If the CTRL key is pressed and the edit part is already selected, it will be - * deselected. If the CTRL key is pressed and the edit part is not selected, it will be appended - * to the selection set. If the SHIFT key is pressed, the source will be appended to the - * selection. - */ - private void performSelection() { - if (!m_isSelected) { - m_isSelected = true; - EditPartViewer viewer = getCurrentViewer(); - // - if (getCurrentInput().isControlKeyDown()) { - if (viewer.getSelectedEditParts().contains(m_sourceEditPart)) { - viewer.deselect(m_sourceEditPart); - } else { - viewer.appendSelection(m_sourceEditPart); - } - } else if (getCurrentInput().isShiftKeyDown()) { - viewer.appendSelection(m_sourceEditPart); - } else { - viewer.select(m_sourceEditPart); - } - } - } -} \ No newline at end of file diff --git a/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/part/menu/MenuEditPart.java b/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/part/menu/MenuEditPart.java index 5e08d29f4..fd61b82c0 100644 --- a/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/part/menu/MenuEditPart.java +++ b/org.eclipse.wb.core/src/org/eclipse/wb/internal/core/gef/part/menu/MenuEditPart.java @@ -14,7 +14,6 @@ import org.eclipse.wb.draw2d.Figure; import org.eclipse.wb.draw2d.FigureUtils; -import org.eclipse.wb.gef.core.tools.SelectEditPartTracker; import org.eclipse.wb.internal.core.EnvironmentUtils; import org.eclipse.wb.internal.core.gef.policy.menu.MenuLayoutEditPolicy; import org.eclipse.wb.internal.core.gef.policy.menu.MenuSelectionEditPolicy; @@ -29,6 +28,7 @@ import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.GraphicalEditPart; +import org.eclipse.gef.tools.SelectEditPartTracker; import java.util.ArrayList; import java.util.List; diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/swt/model/menu/MenuPopupSimpleTest.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/swt/model/menu/MenuPopupSimpleTest.java index f8b1d7c84..427d0fc24 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/swt/model/menu/MenuPopupSimpleTest.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/swt/model/menu/MenuPopupSimpleTest.java @@ -14,7 +14,6 @@ import org.eclipse.wb.core.model.JavaInfo; import org.eclipse.wb.gef.core.tools.CreationTool; -import org.eclipse.wb.gef.core.tools.SelectEditPartTracker; import org.eclipse.wb.internal.core.gef.policy.menu.MenuSelectionEditPolicy; import org.eclipse.wb.internal.core.utils.reflect.ReflectionUtils; import org.eclipse.wb.internal.swt.model.widgets.CompositeInfo; @@ -29,6 +28,7 @@ import org.eclipse.gef.EditPolicy; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.Handle; +import org.eclipse.gef.tools.SelectEditPartTracker; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/SelectAndDragEditPartTrackerTest.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/SelectAndDragEditPartTrackerTest.java index 9a212d7c7..53cc06489 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/SelectAndDragEditPartTrackerTest.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/SelectAndDragEditPartTrackerTest.java @@ -14,7 +14,6 @@ import org.eclipse.wb.gef.core.requests.DragPermissionRequest; import org.eclipse.wb.gef.core.tools.DragEditPartTracker; -import org.eclipse.wb.gef.core.tools.SelectEditPartTracker; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.Rectangle; @@ -24,6 +23,7 @@ import org.eclipse.gef.requests.ChangeBoundsRequest; import org.eclipse.gef.requests.GroupRequest; import org.eclipse.gef.requests.SelectionRequest; +import org.eclipse.gef.tools.SelectEditPartTracker; import org.eclipse.swt.SWT; import org.junit.jupiter.api.Test; diff --git a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteSelectionTool.java b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteSelectionTool.java index ffec9c49d..711e40dea 100644 --- a/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteSelectionTool.java +++ b/org.eclipse.wb.tests/src/org/eclipse/wb/tests/utils/AbsoluteSelectionTool.java @@ -44,7 +44,7 @@ protected boolean handleButtonDown(int button) { @Override public void setDragTracker(DragTracker dragTracker) { if (dragTracker != null && dragTracker.getClass() == DragEditPartTracker.class) { - EditPart sourceEditPart = (EditPart) ReflectionUtils.getFieldObject(dragTracker, "m_sourceEditPart"); + EditPart sourceEditPart = (EditPart) ReflectionUtils.invokeMethodEx(dragTracker, "getSourceEditPart()"); super.setDragTracker(new AbsoluteDragEditPartTracker(sourceEditPart)); return; }