Skip to content

Commit fd4ae90

Browse files
committed
[GEF] Harmonize CreateRequest with GEF class
In the GEF CreateRequest, the factory needs to be explicitly set via the `setFactory(CreationFactory)` method, rather than as a constructor argument. Additionally, the distinction between new and selected object is not needed and thus can be removed.
1 parent 8f8a47e commit fd4ae90

10 files changed

Lines changed: 84 additions & 72 deletions

File tree

‎org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/AbstractCreateRequest.java‎

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
package org.eclipse.wb.gef.core.requests;
1414

1515
import org.eclipse.draw2d.geometry.Dimension;
16-
import org.eclipse.gef.Request;
1716
import org.eclipse.gef.requests.DropRequest;
1817
import org.eclipse.gef.requests.LocationRequest;
1918

@@ -54,19 +53,4 @@ public Dimension getSize() {
5453
public void setSize(Dimension size) {
5554
m_size = size;
5655
}
57-
58-
////////////////////////////////////////////////////////////////////////////
59-
//
60-
// State
61-
//
62-
////////////////////////////////////////////////////////////////////////////
63-
/**
64-
* Copies state from given {@link Request} into this one.
65-
*/
66-
public void copyStateFrom(Request _source) {
67-
if (_source instanceof AbstractCreateRequest source) {
68-
setLocation(source.getLocation());
69-
setSize(source.getSize());
70-
}
71-
}
7256
}

‎org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/requests/CreateRequest.java‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@
2323
*/
2424
public class CreateRequest extends AbstractCreateRequest {
2525
private static final int SNAP_TO = 16;
26-
private final CreationFactory m_factory;
26+
private CreationFactory m_factory;
2727
private Object m_newObject;
28-
private Object m_selectObject;
2928
private int m_flags = 0;
3029

3130
////////////////////////////////////////////////////////////////////////////
@@ -36,9 +35,8 @@ public class CreateRequest extends AbstractCreateRequest {
3635
/**
3736
* Constructs a {@link CreateRequest} with the specified <i>type</i> and <i>factory</i>.
3837
*/
39-
public CreateRequest(CreationFactory factory) {
38+
public CreateRequest() {
4039
super(RequestConstants.REQ_CREATE);
41-
m_factory = factory;
4240
}
4341

4442
////////////////////////////////////////////////////////////////////////////
@@ -52,24 +50,26 @@ public CreateRequest(CreationFactory factory) {
5250
public Object getNewObject() {
5351
if (m_newObject == null) {
5452
m_newObject = m_factory.getNewObject();
55-
m_selectObject = m_newObject;
5653
}
5754
return m_newObject;
5855
}
5956

6057
/**
61-
* @return the object that should be selected after finishing create operation. By default return
62-
* same as {@link #getNewObject()}.
58+
* Returns the CreationFactory for this request.
59+
*
60+
* @return the CreationFactory
6361
*/
64-
public Object getSelectObject() {
65-
return m_selectObject;
62+
protected CreationFactory getFactory() {
63+
return m_factory;
6664
}
6765

6866
/**
69-
* Sets the object that should be selected after finishing create operation.
67+
* Sets the factory to be used when creating the new object.
68+
*
69+
* @param factory the factory
7070
*/
71-
public void setSelectObject(Object object) {
72-
m_selectObject = object;
71+
public void setFactory(CreationFactory factory) {
72+
m_factory = factory;
7373
}
7474

7575
////////////////////////////////////////////////////////////////////////////

‎org.eclipse.wb.core/src-gef/org/eclipse/wb/gef/core/tools/CreationTool.java‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ public final CreationFactory getFactory() {
7575
*/
7676
@Override
7777
protected Request createTargetRequest() {
78-
return new CreateRequest(m_factory);
78+
CreateRequest request = new CreateRequest();
79+
request.setFactory(getFactory());
80+
return request;
7981
}
8082

8183
@Override
@@ -91,7 +93,7 @@ protected String getCommandName() {
9193
@Override
9294
protected void selectAddedObjects() {
9395
CreateRequest request = (CreateRequest) getTargetRequest();
94-
Object model = request.getSelectObject();
96+
Object model = request.getNewObject();
9597
if (model != null) {
9698
EditPartViewer viewer = getCurrentViewer();
9799
if (viewer != null) {

‎org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/jface/FieldEditorDropRequestProcessor.java‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,16 @@ public Request process(EditPart editPart, Request request) throws Exception {
5353
if (editorCreateRequest.getNewObject() instanceof FieldEditorInfo) {
5454
final FieldEditorInfo editor = (FieldEditorInfo) editorCreateRequest.getNewObject();
5555
final CompositeInfo composite = page.schedule_CREATE(editor);
56-
// after CREATE select "composite"
57-
editorCreateRequest.setSelectObject(composite);
5856
// prepare CreateRequest, that creates our ActionInfo
59-
CreateRequest createRequest = new CreateRequest(new SimpleFactory<>(CompositeInfo.class) {
57+
CreateRequest createRequest = new CreateRequest();
58+
createRequest.setFactory(new SimpleFactory<>(CompositeInfo.class) {
6059
@Override
6160
public CompositeInfo getNewObject() {
6261
return composite;
6362
}
6463
});
65-
createRequest.copyStateFrom(editorCreateRequest);
64+
createRequest.setLocation(editorCreateRequest.getLocation());
65+
createRequest.setSize(editorCreateRequest.getSize());
6666
return createRequest;
6767
}
6868
}

‎org.eclipse.wb.rcp/src/org/eclipse/wb/internal/rcp/gef/policy/jface/action/ActionDropRequestProcessor.java‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,16 @@ public Request process(final EditPart editPart, Request request) throws Exceptio
5656
final ActionInfo action = actionDropRequest.getAction();
5757
scheduleActionItemSelection(actionDropRequest);
5858
// prepare CreateRequest, that creates our ActionInfo
59-
CreateRequest createRequest = new CreateRequest(new SimpleFactory<>(ActionInfo.class) {
59+
CreateRequest createRequest = new CreateRequest();
60+
createRequest.setFactory(new SimpleFactory<>(ActionInfo.class) {
6061
@Override
6162
public ActionInfo getNewObject() {
6263
return action;
6364
}
6465
});
6566
// OK, we have CreateRequest
66-
createRequest.copyStateFrom(actionDropRequest);
67+
createRequest.setLocation(actionDropRequest.getLocation());
68+
createRequest.setSize(actionDropRequest.getSize());
6769
return createRequest;
6870
}
6971
// no, we don't know this request

‎org.eclipse.wb.tests/src/org/eclipse/wb/tests/designer/editor/validator/AbstractLayoutRequestValidatorTest.java‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.eclipse.gef.EditPart;
2323
import org.eclipse.gef.requests.ChangeBoundsRequest;
24+
import org.eclipse.gef.requests.SimpleFactory;
2425

2526
import static org.mockito.Mockito.mock;
2627
import static org.mockito.Mockito.verify;
@@ -82,12 +83,14 @@ protected static void assert_validateCreateRequest(ILayoutRequestValidator valid
8283
boolean expected,
8384
EditPart host,
8485
final Object child) {
85-
assertEquals(expected, validator.validateCreateRequest(host, new CreateRequest(null) {
86+
CreateRequest request = new CreateRequest();
87+
request.setFactory(new SimpleFactory<>(Object.class) {
8688
@Override
8789
public Object getNewObject() {
8890
return child;
8991
}
90-
}));
92+
});
93+
assertEquals(expected, validator.validateCreateRequest(host, request));
9194
}
9295

9396
protected static void assert_validatePasteRequest(ILayoutRequestValidator validator,

‎org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/AbstractCreationToolTest.java‎

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011, 2023 Google, Inc.
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
@@ -12,11 +12,10 @@
1212
*******************************************************************************/
1313
package org.eclipse.wb.tests.gef;
1414

15-
import org.eclipse.wb.gef.core.requests.AbstractCreateRequest;
16-
import org.eclipse.wb.gef.core.tools.AbstractCreationTool;
17-
1815
import org.eclipse.draw2d.geometry.Dimension;
1916
import org.eclipse.draw2d.geometry.Point;
17+
import org.eclipse.gef.Request;
18+
import org.eclipse.gef.tools.TargetingTool;
2019

2120
import org.junit.jupiter.api.BeforeEach;
2221
import org.junit.jupiter.api.Test;
@@ -26,8 +25,8 @@
2625
*
2726
*/
2827
public abstract class AbstractCreationToolTest extends RequestTestCase {
29-
protected AbstractCreateRequest m_request;
30-
protected AbstractCreationTool m_tool;
28+
protected Request m_request;
29+
protected TargetingTool m_tool;
3130

3231
////////////////////////////////////////////////////////////////////////////
3332
//
@@ -44,6 +43,10 @@ public void setUp() throws Exception {
4443

4544
protected abstract void configureTestCase();
4645

46+
protected abstract void setSize(Dimension d);
47+
48+
protected abstract void setLocation(Point p);
49+
4750
////////////////////////////////////////////////////////////////////////////
4851
//
4952
// Tests
@@ -70,7 +73,7 @@ public void test_Move_DND() throws Exception {
7073
// enter in "editPart"
7174
{
7275
m_sender.moveTo(60, 60);
73-
m_request.setLocation(new Point(60, 60));
76+
setLocation(new Point(60, 60));
7477
//
7578
expectedLogger.log(editPart, new String[]{
7679
"getTargetEditPart",
@@ -83,7 +86,7 @@ public void test_Move_DND() throws Exception {
8386
// exit from "editPart" and enter in "childEditPart1"
8487
{
8588
m_sender.moveTo(120, 120);
86-
m_request.setLocation(new Point(120, 120));
89+
setLocation(new Point(120, 120));
8790
//
8891
expectedLogger.log(
8992
childEditPart1,
@@ -100,7 +103,7 @@ public void test_Move_DND() throws Exception {
100103
{
101104
m_sender.moveTo(130, 130);
102105
//
103-
m_request.setLocation(new Point(130, 130));
106+
setLocation(new Point(130, 130));
104107
//
105108
expectedLogger.log(childEditPart1, new String[]{
106109
"getTargetEditPart",
@@ -118,8 +121,8 @@ public void test_Move_DND() throws Exception {
118121
{
119122
m_sender.dragTo(200, 200);
120123
//
121-
m_request.setLocation(new Point(130, 130));
122-
m_request.setSize(new Dimension(70, 70));
124+
setLocation(new Point(130, 130));
125+
setSize(new Dimension(70, 70));
123126
//
124127
expectedLogger.log(
125128
childEditPart1,
@@ -129,8 +132,8 @@ public void test_Move_DND() throws Exception {
129132
////////////////////////////////////////////////////////////////
130133
m_sender.dragTo(330, 140);
131134
//
132-
m_request.setLocation(new Point(130, 130));
133-
m_request.setSize(new Dimension(200, 10));
135+
setLocation(new Point(130, 130));
136+
setSize(new Dimension(200, 10));
134137
//
135138
expectedLogger.log(
136139
childEditPart1,
@@ -142,8 +145,8 @@ public void test_Move_DND() throws Exception {
142145
{
143146
m_sender.endDrag();
144147
//
145-
m_request.setLocation(new Point(130, 130));
146-
m_request.setSize(new Dimension(200, 10));
148+
setLocation(new Point(130, 130));
149+
setSize(new Dimension(200, 10));
147150
//
148151
expectedLogger.log(childEditPart1, "eraseTargetFeedback", m_request);
149152
expectedLogger.log(childEditPart2, new String[]{
@@ -178,7 +181,7 @@ public void test_Move_DND_InvalidInput() throws Exception {
178181
{
179182
m_sender.moveTo(70, 70);
180183
//
181-
m_request.setLocation(new Point(70, 70));
184+
setLocation(new Point(70, 70));
182185
//
183186
expectedLogger.log(editPart, new String[]{
184187
"getTargetEditPart",
@@ -192,7 +195,7 @@ public void test_Move_DND_InvalidInput() throws Exception {
192195
{
193196
m_sender.click(70, 70, 2);
194197
//
195-
m_request.setLocation(new Point(70, 70));
198+
setLocation(new Point(70, 70));
196199
//
197200
expectedLogger.log(editPart, "eraseTargetFeedback", m_request);
198201
assertLoggers(expectedLogger, actualLogger);
@@ -207,7 +210,7 @@ public void test_Move_DND_InvalidInput() throws Exception {
207210
m_domain.setActiveTool(m_tool);
208211
m_sender.moveTo(90, 90);
209212
//
210-
m_request.setLocation(new Point(90, 90));
213+
setLocation(new Point(90, 90));
211214
//
212215
expectedLogger.log(editPart, new String[]{
213216
"getTargetEditPart",
@@ -226,17 +229,17 @@ public void test_Move_DND_InvalidInput() throws Exception {
226229
{
227230
m_sender.dragTo(100, 100);
228231
//
229-
m_request.setLocation(new Point(90, 90));
230-
m_request.setSize(new Dimension(10, 10));
232+
setLocation(new Point(90, 90));
233+
setSize(new Dimension(10, 10));
231234
//
232235
expectedLogger.log(editPart, new String[]{"showTargetFeedback", "getCommand"}, m_request);
233236
assertLoggers(expectedLogger, actualLogger);
234237
}
235238
// click invalid button during drag process
236239
{
237240
m_sender.click(100, 100, 3);
238-
m_request.setLocation(new Point(90, 90));
239-
m_request.setSize(new Dimension(10, 10));
241+
setLocation(new Point(90, 90));
242+
setSize(new Dimension(10, 10));
240243
//
241244
expectedLogger.log(editPart, "eraseTargetFeedback", m_request);
242245
assertLoggers(expectedLogger, actualLogger);

‎org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/CreationToolTest.java‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import org.eclipse.wb.gef.core.requests.CreateRequest;
1616
import org.eclipse.wb.gef.core.tools.CreationTool;
1717

18+
import org.eclipse.draw2d.geometry.Dimension;
19+
import org.eclipse.draw2d.geometry.Point;
1820
import org.eclipse.gef.requests.CreationFactory;
1921
import org.eclipse.gef.requests.SimpleFactory;
2022

@@ -47,6 +49,17 @@ public String toString() {
4749
m_tool = new CreationTool(factory);
4850
m_domain.setActiveTool(m_tool);
4951
// create request
50-
m_request = new CreateRequest(factory);
52+
m_request = new CreateRequest();
53+
((CreateRequest) m_request).setFactory(factory);
54+
}
55+
56+
@Override
57+
protected void setSize(Dimension d) {
58+
((CreateRequest) m_request).setSize(d);
59+
}
60+
61+
@Override
62+
protected void setLocation(Point p) {
63+
((CreateRequest) m_request).setLocation(p);
5164
}
5265
}

‎org.eclipse.wb.tests/src/org/eclipse/wb/tests/gef/PasteToolTest.java‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2011 Google, Inc.
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
@@ -15,6 +15,9 @@
1515
import org.eclipse.wb.gef.core.requests.PasteRequest;
1616
import org.eclipse.wb.gef.core.tools.PasteTool;
1717

18+
import org.eclipse.draw2d.geometry.Dimension;
19+
import org.eclipse.draw2d.geometry.Point;
20+
1821
/**
1922
* @author lobas_av
2023
*
@@ -39,4 +42,14 @@ protected void selectAddedObjects() {
3942
// create request
4043
m_request = new PasteRequest(memento);
4144
}
45+
46+
@Override
47+
protected void setSize(Dimension d) {
48+
((PasteRequest) m_request).setSize(d);
49+
}
50+
51+
@Override
52+
protected void setLocation(Point p) {
53+
((PasteRequest) m_request).setLocation(p);
54+
}
4255
}

0 commit comments

Comments
 (0)