Skip to content

Commit e558092

Browse files
committed
[GEF] Extract request processor handling to Design(Tree)EditPart
This removes the "RequestProcessor"-related methods from the base EditPart class to the new DesignEditPart (Graphical Viewer) and DesignTreeEditPart (Tree Viewer). These new edit-part extends the GraphicalEditPart and TreeEditPart respectively and are used by all other WindowBuilder edit-parts. The request-processor logic is a WindowBuilder-specific functionality and should not therefore not be part of the GEF API. By moving these methods, we have an easier time harmonizing both EditPart classes and eventually removing our copy altogether.
1 parent c8b32c2 commit e558092

32 files changed

Lines changed: 309 additions & 101 deletions

File tree

org.eclipse.wb.core.java/src/org/eclipse/wb/core/gef/part/AbstractComponentEditPart.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011, 2025 Google, Inc. and others.
2+
* Copyright (c) 2011, 2026 Google, Inc. and others.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License 2.0 which is available at
@@ -19,6 +19,7 @@
1919
import org.eclipse.wb.core.model.broadcast.DisplayEventListener;
2020
import org.eclipse.wb.draw2d.Figure;
2121
import org.eclipse.wb.gef.core.requests.DragPermissionRequest;
22+
import org.eclipse.wb.gef.graphical.DesignEditPart;
2223
import org.eclipse.wb.gef.graphical.GraphicalEditPart;
2324
import org.eclipse.wb.gef.graphical.policies.LayoutEditPolicy;
2425
import org.eclipse.wb.internal.core.EnvironmentUtils;
@@ -52,7 +53,7 @@
5253
* @author scheglov_ke
5354
* @coverage core.gef
5455
*/
55-
public abstract class AbstractComponentEditPart extends GraphicalEditPart implements IObjectInfoEditPart {
56+
public abstract class AbstractComponentEditPart extends DesignEditPart implements IObjectInfoEditPart {
5657
/**
5758
* Counterpart to {@link DesignRootEditPart#BOTTOM_MARGIN} which describes the
5859
* margin at the top left of the design viewer.

org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/part/AbstractWrapperEditPart.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.eclipse.wb.core.model.IWrapper;
1717
import org.eclipse.wb.core.model.IWrapperInfo;
1818
import org.eclipse.wb.draw2d.Figure;
19+
import org.eclipse.wb.gef.graphical.DesignEditPart;
1920
import org.eclipse.wb.gef.graphical.GraphicalEditPart;
2021

2122
import org.eclipse.draw2d.ColorConstants;
@@ -36,7 +37,7 @@
3637
* @author scheglov_ke
3738
* @coverage core.gef
3839
*/
39-
public class AbstractWrapperEditPart extends GraphicalEditPart {
40+
public class AbstractWrapperEditPart extends DesignEditPart {
4041
private final IWrapper m_wrapper;
4142

4243
////////////////////////////////////////////////////////////////////////////

org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/part/DesignRootEditPart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011, 2025 Google, Inc. and others.
2+
* Copyright (c) 2011, 2026 Google, Inc. and others.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License 2.0 which is available at
@@ -18,7 +18,7 @@
1818
import org.eclipse.wb.draw2d.Figure;
1919
import org.eclipse.wb.draw2d.border.Border;
2020
import org.eclipse.wb.draw2d.border.MarginBorder;
21-
import org.eclipse.wb.gef.graphical.GraphicalEditPart;
21+
import org.eclipse.wb.gef.graphical.DesignEditPart;
2222
import org.eclipse.wb.internal.core.gef.part.nonvisual.NonVisualBeanEditPart;
2323
import org.eclipse.wb.internal.core.gef.policy.nonvisual.NonVisualLayoutEditPolicy;
2424
import org.eclipse.wb.internal.core.model.DesignRootObject;
@@ -42,7 +42,7 @@
4242
* @author lobas_av
4343
* @coverage core.gef
4444
*/
45-
public final class DesignRootEditPart extends GraphicalEditPart {
45+
public final class DesignRootEditPart extends DesignEditPart {
4646
/**
4747
* Counterpart to {@link AbstractComponentEditPart#TOP_LOCATION} which describes
4848
* the margin at the bottom right of the design viewer. This is necessary if the

org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/part/nonvisual/ArrayObjectEditPart.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import org.eclipse.wb.core.gef.policy.selection.NonResizableSelectionEditPolicy;
1616
import org.eclipse.wb.draw2d.Figure;
17-
import org.eclipse.wb.gef.graphical.GraphicalEditPart;
17+
import org.eclipse.wb.gef.graphical.DesignEditPart;
1818
import org.eclipse.wb.internal.core.model.nonvisual.AbstractArrayObjectInfo;
1919

2020
import org.eclipse.draw2d.IFigure;
@@ -26,7 +26,7 @@
2626
* @author sablin_aa
2727
* @coverage gef.graphical
2828
*/
29-
public final class ArrayObjectEditPart extends GraphicalEditPart {
29+
public final class ArrayObjectEditPart extends DesignEditPart {
3030
private final AbstractArrayObjectInfo m_arrayInfo;
3131

3232
////////////////////////////////////////////////////////////////////////////

org.eclipse.wb.core.java/src/org/eclipse/wb/internal/core/gef/part/nonvisual/NonVisualBeanEditPart.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import org.eclipse.wb.core.gef.policy.selection.NonResizableSelectionEditPolicy;
1616
import org.eclipse.wb.core.model.JavaInfo;
1717
import org.eclipse.wb.core.model.ObjectInfo;
18-
import org.eclipse.wb.gef.graphical.GraphicalEditPart;
18+
import org.eclipse.wb.gef.graphical.DesignEditPart;
1919
import org.eclipse.wb.internal.core.model.nonvisual.NonVisualBeanInfo;
2020

2121
import org.eclipse.draw2d.IFigure;
@@ -29,7 +29,7 @@
2929
* @author lobas_av
3030
* @coverage core.gef.nonvisual
3131
*/
32-
public final class NonVisualBeanEditPart extends GraphicalEditPart {
32+
public final class NonVisualBeanEditPart extends DesignEditPart {
3333
private final NonVisualBeanInfo m_beanInfo;
3434

3535
////////////////////////////////////////////////////////////////////////////

org.eclipse.wb.core/META-INF/MANIFEST.MF

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ Export-Package: org.eclipse.wb.core.branding,
141141
org.eclipse.wb.swing.MigLayout,
142142
org.eclipse.wb.swt,
143143
org.eclipse.wb.layout.group",
144-
org.eclipse.wb.gef.tree;x-friends:="org.eclipse.wb.tests,org.eclipse.wb.core.java",
144+
org.eclipse.wb.gef.tree;x-friends:="org.eclipse.wb.tests,org.eclipse.wb.core.java,org.eclipse.wb.rcp",
145145
org.eclipse.wb.gef.tree.policies;
146146
x-friends:="org.eclipse.wb.rcp,
147147
org.eclipse.wb.swing,

org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/EditPart.java

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011, 2025 Google, Inc. and others.
2+
* Copyright (c) 2011, 2026 Google, Inc. and others.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License 2.0 which is available at
@@ -267,42 +267,6 @@ private List<EditPolicy> getUnderstandingPolicies(Request request) {
267267
return policies;
268268
}
269269

270-
////////////////////////////////////////////////////////////////////////////
271-
//
272-
// Request processors
273-
//
274-
////////////////////////////////////////////////////////////////////////////
275-
private final List<RequestProcessor> m_requestProcessors = new ArrayList<>();
276-
277-
/**
278-
* Adds the {@link RequestProcessor}, if not added yet.
279-
*/
280-
public final void addRequestProcessor(RequestProcessor processor) {
281-
if (!m_requestProcessors.contains(processor)) {
282-
m_requestProcessors.add(processor);
283-
}
284-
}
285-
286-
/**
287-
* Removes the {@link RequestProcessor}.
288-
*/
289-
public final void removeRequestProcessor(RequestProcessor processor) {
290-
m_requestProcessors.remove(processor);
291-
}
292-
293-
/**
294-
* @return the {@link Request} processed with registered {@link RequestProcessor}'s.
295-
*/
296-
protected final Request processRequestProcessors(Request request) {
297-
try {
298-
for (RequestProcessor processor : m_requestProcessors) {
299-
request = processor.process(this, request);
300-
}
301-
} catch (Throwable e) {
302-
}
303-
return request;
304-
}
305-
306270
////////////////////////////////////////////////////////////////////////////
307271
//
308272
// Request/Command
@@ -312,7 +276,6 @@ protected final Request processRequestProcessors(Request request) {
312276
* Returns the {@link Command} to perform the specified {@link Request} or <code>null</code>.
313277
*/
314278
public Command getCommand(Request request) {
315-
request = processRequestProcessors(request);
316279
for (EditPolicy editPolicy : getUnderstandingPolicies(request)) {
317280
Command command = editPolicy.getCommand(request);
318281
if (command != null) {
@@ -330,7 +293,6 @@ public Command getCommand(Request request) {
330293
* the call to its parent.
331294
*/
332295
public org.eclipse.gef.EditPart getTargetEditPart(Request request) {
333-
request = processRequestProcessors(request);
334296
org.eclipse.gef.EditPart target = null;
335297
// update target using any understanding EditPolicy
336298
for (EditPolicy editPolicy : getUnderstandingPolicies(request)) {
@@ -349,7 +311,6 @@ public org.eclipse.gef.EditPart getTargetEditPart(Request request) {
349311
* implementation forward request to all EditPolicies.
350312
*/
351313
public void performRequest(Request request) {
352-
request = processRequestProcessors(request);
353314
for (EditPolicy editPolicy : getEditPolicyIterable()) {
354315
((org.eclipse.wb.gef.core.policies.EditPolicy) editPolicy).performRequest(request);
355316
}
@@ -366,7 +327,6 @@ public void performRequest(Request request) {
366327
* location changing.
367328
*/
368329
public void showSourceFeedback(Request request) {
369-
request = processRequestProcessors(request);
370330
if (isActive()) {
371331
for (EditPolicy editPolicy : getUnderstandingPolicies(request)) {
372332
editPolicy.showSourceFeedback(request);
@@ -381,7 +341,6 @@ public void showSourceFeedback(Request request) {
381341
* {@link #showSourceFeedback(Request)}.
382342
*/
383343
public void eraseSourceFeedback(Request request) {
384-
request = processRequestProcessors(request);
385344
if (isActive()) {
386345
for (EditPolicy editPolicy : getUnderstandingPolicies(request)) {
387346
editPolicy.eraseSourceFeedback(request);
@@ -400,7 +359,6 @@ public void eraseSourceFeedback(Request request) {
400359
* location changing.
401360
*/
402361
public void showTargetFeedback(Request request) {
403-
request = processRequestProcessors(request);
404362
if (isActive()) {
405363
for (EditPolicy editPolicy : getUnderstandingPolicies(request)) {
406364
editPolicy.showTargetFeedback(request);
@@ -415,7 +373,6 @@ public void showTargetFeedback(Request request) {
415373
* {@link #showTargetFeedback(Request)}.
416374
*/
417375
public void eraseTargetFeedback(Request request) {
418-
request = processRequestProcessors(request);
419376
if (isActive()) {
420377
for (EditPolicy editPolicy : getUnderstandingPolicies(request)) {
421378
editPolicy.eraseTargetFeedback(request);
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2011, 2026 Google, Inc. and others.
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Eclipse Public License 2.0 which is available at
6+
* https://www.eclipse.org/legal/epl-2.0.
7+
*
8+
* SPDX-License-Identifier: EPL-2.0
9+
*
10+
* Contributors:
11+
* Google, Inc. - initial API and implementation
12+
*******************************************************************************/
13+
package org.eclipse.wb.gef.graphical;
14+
15+
import org.eclipse.wb.gef.core.RequestProcessor;
16+
17+
import org.eclipse.gef.EditPart;
18+
import org.eclipse.gef.Request;
19+
import org.eclipse.gef.commands.Command;
20+
21+
import java.util.ArrayList;
22+
import java.util.List;
23+
24+
/**
25+
* An edit part capable of pre-processing requests.
26+
*
27+
* @see {@link RequestProcessor}
28+
*/
29+
public abstract class DesignEditPart extends GraphicalEditPart {
30+
31+
////////////////////////////////////////////////////////////////////////////
32+
//
33+
// Request processors
34+
//
35+
////////////////////////////////////////////////////////////////////////////
36+
private final List<RequestProcessor> m_requestProcessors = new ArrayList<>();
37+
38+
/**
39+
* Adds the {@link RequestProcessor}, if not added yet.
40+
*/
41+
public final void addRequestProcessor(RequestProcessor processor) {
42+
if (!m_requestProcessors.contains(processor)) {
43+
m_requestProcessors.add(processor);
44+
}
45+
}
46+
47+
/**
48+
* Removes the {@link RequestProcessor}.
49+
*/
50+
public final void removeRequestProcessor(RequestProcessor processor) {
51+
m_requestProcessors.remove(processor);
52+
}
53+
54+
/**
55+
* @return the {@link Request} processed with registered
56+
* {@link RequestProcessor}'s.
57+
*/
58+
protected final Request processRequestProcessors(Request request) {
59+
try {
60+
for (RequestProcessor processor : m_requestProcessors) {
61+
request = processor.process(this, request);
62+
}
63+
} catch (Throwable e) {
64+
}
65+
return request;
66+
}
67+
68+
////////////////////////////////////////////////////////////////////////////
69+
//
70+
// Request/Command
71+
//
72+
////////////////////////////////////////////////////////////////////////////
73+
74+
@Override
75+
public Command getCommand(Request request) {
76+
return super.getCommand(processRequestProcessors(request));
77+
}
78+
79+
@Override
80+
public EditPart getTargetEditPart(Request request) {
81+
return super.getTargetEditPart(processRequestProcessors(request));
82+
}
83+
84+
@Override
85+
public void performRequest(Request request) {
86+
super.performRequest(processRequestProcessors(request));
87+
}
88+
89+
////////////////////////////////////////////////////////////////////////////
90+
//
91+
// Source Feedback
92+
//
93+
////////////////////////////////////////////////////////////////////////////
94+
95+
@Override
96+
public void showSourceFeedback(Request request) {
97+
super.showSourceFeedback(processRequestProcessors(request));
98+
}
99+
100+
@Override
101+
public void eraseSourceFeedback(Request request) {
102+
super.eraseSourceFeedback(processRequestProcessors(request));
103+
}
104+
105+
////////////////////////////////////////////////////////////////////////////
106+
//
107+
// Target Feedback
108+
//
109+
////////////////////////////////////////////////////////////////////////////
110+
111+
@Override
112+
public void showTargetFeedback(Request request) {
113+
super.showTargetFeedback(processRequestProcessors(request));
114+
}
115+
116+
@Override
117+
public void eraseTargetFeedback(Request request) {
118+
super.eraseTargetFeedback(processRequestProcessors(request));
119+
}
120+
}

0 commit comments

Comments
 (0)