Skip to content

Commit b807d33

Browse files
(v2) Remove internal browser bug fix.
1 parent 19c7fc6 commit b807d33

File tree

6 files changed

+18
-328
lines changed

6 files changed

+18
-328
lines changed

source/v2/phasereditor/phasereditor.canvas.ui/src/phasereditor/canvas/ui/editors/ObjectCanvas.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
import phasereditor.canvas.ui.shapes.BaseObjectControl;
5656
import phasereditor.canvas.ui.shapes.GroupControl;
5757
import phasereditor.canvas.ui.shapes.GroupNode;
58-
import phasereditor.ui.PhaserEditorUI;
5958

6059
/**
6160
* @author arian
@@ -117,7 +116,6 @@ public void init(CanvasEditor editor, CanvasModel model, PGrid grid, TreeViewer
117116
// just to force to select the default stuff in the property grid
118117
_selectionBehavior.setSelection(StructuredSelection.EMPTY);
119118

120-
PhaserEditorUI.fixInternalBrowserBug(this);
121119
}
122120

123121
public CanvasEditor getEditor() {
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,11 @@
11
package phasereditor.canvas.ui.editors;
22

3-
import javafx.application.Application;
43
import javafx.beans.property.DoubleProperty;
54
import javafx.beans.property.SimpleDoubleProperty;
6-
import javafx.event.EventHandler;
7-
import javafx.scene.Group;
8-
import javafx.scene.Node;
9-
import javafx.scene.Scene;
105
import javafx.scene.canvas.Canvas;
116
import javafx.scene.canvas.GraphicsContext;
12-
import javafx.scene.control.Label;
13-
import javafx.scene.input.MouseEvent;
14-
import javafx.scene.input.ScrollEvent;
157
import javafx.scene.layout.Pane;
168
import javafx.scene.paint.Color;
17-
import javafx.scene.shape.Circle;
18-
import javafx.scene.shape.Rectangle;
19-
import javafx.stage.Stage;
209

2110
class PannableCanvas extends Pane {
2211

@@ -77,267 +66,3 @@ public void setPivot( double x, double y) {
7766
}
7867

7968

80-
/**
81-
* Mouse drag context used for scene and nodes.
82-
*/
83-
class DragContext {
84-
85-
double mouseAnchorX;
86-
double mouseAnchorY;
87-
88-
double translateAnchorX;
89-
double translateAnchorY;
90-
91-
}
92-
93-
/**
94-
* Listeners for making the nodes draggable via left mouse button. Considers if parent is zoomed.
95-
*/
96-
@SuppressWarnings("all")
97-
class NodeGestures {
98-
99-
private DragContext nodeDragContext = new DragContext();
100-
101-
PannableCanvas canvas;
102-
103-
public NodeGestures( PannableCanvas canvas) {
104-
this.canvas = canvas;
105-
106-
}
107-
108-
public EventHandler<MouseEvent> getOnMousePressedEventHandler() {
109-
return onMousePressedEventHandler;
110-
}
111-
112-
public EventHandler<MouseEvent> getOnMouseDraggedEventHandler() {
113-
return onMouseDraggedEventHandler;
114-
}
115-
116-
private EventHandler<MouseEvent> onMousePressedEventHandler = new EventHandler<MouseEvent>() {
117-
118-
public void handle(MouseEvent event) {
119-
120-
// left mouse button => dragging
121-
if( !event.isPrimaryButtonDown())
122-
return;
123-
124-
nodeDragContext.mouseAnchorX = event.getSceneX();
125-
nodeDragContext.mouseAnchorY = event.getSceneY();
126-
127-
Node node = (Node) event.getSource();
128-
129-
nodeDragContext.translateAnchorX = node.getTranslateX();
130-
nodeDragContext.translateAnchorY = node.getTranslateY();
131-
132-
}
133-
134-
};
135-
136-
private EventHandler<MouseEvent> onMouseDraggedEventHandler = new EventHandler<MouseEvent>() {
137-
public void handle(MouseEvent event) {
138-
139-
// left mouse button => dragging
140-
if( !event.isPrimaryButtonDown())
141-
return;
142-
143-
double scale = canvas.getScale();
144-
145-
Node node = (Node) event.getSource();
146-
147-
node.setTranslateX(nodeDragContext.translateAnchorX + (( event.getSceneX() - nodeDragContext.mouseAnchorX) / scale));
148-
node.setTranslateY(nodeDragContext.translateAnchorY + (( event.getSceneY() - nodeDragContext.mouseAnchorY) / scale));
149-
150-
event.consume();
151-
152-
}
153-
};
154-
}
155-
156-
/**
157-
* Listeners for making the scene's canvas draggable and zoomable
158-
*/
159-
@SuppressWarnings("all")
160-
class SceneGestures {
161-
162-
private static final double MAX_SCALE = 10.0d;
163-
private static final double MIN_SCALE = .1d;
164-
165-
private DragContext sceneDragContext = new DragContext();
166-
167-
PannableCanvas canvas;
168-
169-
public SceneGestures( PannableCanvas canvas) {
170-
this.canvas = canvas;
171-
}
172-
173-
public EventHandler<MouseEvent> getOnMousePressedEventHandler() {
174-
return onMousePressedEventHandler;
175-
}
176-
177-
public EventHandler<MouseEvent> getOnMouseDraggedEventHandler() {
178-
return onMouseDraggedEventHandler;
179-
}
180-
181-
public EventHandler<ScrollEvent> getOnScrollEventHandler() {
182-
return onScrollEventHandler;
183-
}
184-
185-
private EventHandler<MouseEvent> onMousePressedEventHandler = new EventHandler<MouseEvent>() {
186-
187-
public void handle(MouseEvent event) {
188-
189-
// right mouse button => panning
190-
if( !event.isSecondaryButtonDown())
191-
return;
192-
193-
sceneDragContext.mouseAnchorX = event.getSceneX();
194-
sceneDragContext.mouseAnchorY = event.getSceneY();
195-
196-
sceneDragContext.translateAnchorX = canvas.getTranslateX();
197-
sceneDragContext.translateAnchorY = canvas.getTranslateY();
198-
199-
}
200-
201-
};
202-
203-
private EventHandler<MouseEvent> onMouseDraggedEventHandler = new EventHandler<MouseEvent>() {
204-
public void handle(MouseEvent event) {
205-
206-
// right mouse button => panning
207-
if( !event.isSecondaryButtonDown())
208-
return;
209-
210-
canvas.setTranslateX(sceneDragContext.translateAnchorX + event.getSceneX() - sceneDragContext.mouseAnchorX);
211-
canvas.setTranslateY(sceneDragContext.translateAnchorY + event.getSceneY() - sceneDragContext.mouseAnchorY);
212-
213-
event.consume();
214-
}
215-
};
216-
217-
/**
218-
* Mouse wheel handler: zoom to pivot point
219-
*/
220-
private EventHandler<ScrollEvent> onScrollEventHandler = new EventHandler<ScrollEvent>() {
221-
222-
@Override
223-
public void handle(ScrollEvent event) {
224-
225-
double delta = 1.2;
226-
227-
double scale = canvas.getScale(); // currently we only use Y, same value is used for X
228-
double oldScale = scale;
229-
230-
if (event.getDeltaY() < 0)
231-
scale /= delta;
232-
else
233-
scale *= delta;
234-
235-
scale = clamp( scale, MIN_SCALE, MAX_SCALE);
236-
237-
double f = (scale / oldScale)-1;
238-
239-
double dx = (event.getSceneX() - (canvas.getBoundsInParent().getWidth()/2 + canvas.getBoundsInParent().getMinX()));
240-
double dy = (event.getSceneY() - (canvas.getBoundsInParent().getHeight()/2 + canvas.getBoundsInParent().getMinY()));
241-
242-
canvas.setScale( scale);
243-
244-
// note: pivot value must be untransformed, i. e. without scaling
245-
canvas.setPivot(f*dx, f*dy);
246-
247-
event.consume();
248-
249-
}
250-
251-
};
252-
253-
254-
public static double clamp( double value, double min, double max) {
255-
256-
if( Double.compare(value, min) < 0)
257-
return min;
258-
259-
if( Double.compare(value, max) > 0)
260-
return max;
261-
262-
return value;
263-
}
264-
}
265-
266-
267-
268-
/**
269-
* An application with a zoomable and pannable canvas.
270-
*/
271-
@SuppressWarnings("all")
272-
public class ZoomAndScrollApplication extends Application {
273-
public static void main(String[] args) {
274-
launch(args);
275-
}
276-
277-
@Override
278-
public void start(Stage stage) {
279-
280-
Group group = new Group();
281-
282-
// create canvas
283-
PannableCanvas canvas = new PannableCanvas();
284-
285-
// we don't want the canvas on the top/left in this example => just
286-
// translate it a bit
287-
canvas.setTranslateX(100);
288-
canvas.setTranslateY(100);
289-
290-
// create sample nodes which can be dragged
291-
NodeGestures nodeGestures = new NodeGestures( canvas);
292-
293-
Label label1 = new Label("Draggable node 1");
294-
label1.setTranslateX(10);
295-
label1.setTranslateY(10);
296-
label1.addEventFilter( MouseEvent.MOUSE_PRESSED, nodeGestures.getOnMousePressedEventHandler());
297-
label1.addEventFilter( MouseEvent.MOUSE_DRAGGED, nodeGestures.getOnMouseDraggedEventHandler());
298-
299-
Label label2 = new Label("Draggable node 2");
300-
label2.setTranslateX(100);
301-
label2.setTranslateY(100);
302-
label2.addEventFilter( MouseEvent.MOUSE_PRESSED, nodeGestures.getOnMousePressedEventHandler());
303-
label2.addEventFilter( MouseEvent.MOUSE_DRAGGED, nodeGestures.getOnMouseDraggedEventHandler());
304-
305-
Label label3 = new Label("Draggable node 3");
306-
label3.setTranslateX(200);
307-
label3.setTranslateY(200);
308-
label3.addEventFilter( MouseEvent.MOUSE_PRESSED, nodeGestures.getOnMousePressedEventHandler());
309-
label3.addEventFilter( MouseEvent.MOUSE_DRAGGED, nodeGestures.getOnMouseDraggedEventHandler());
310-
311-
Circle circle1 = new Circle( 300, 300, 50);
312-
circle1.setStroke(Color.ORANGE);
313-
circle1.setFill(Color.ORANGE.deriveColor(1, 1, 1, 0.5));
314-
circle1.addEventFilter( MouseEvent.MOUSE_PRESSED, nodeGestures.getOnMousePressedEventHandler());
315-
circle1.addEventFilter( MouseEvent.MOUSE_DRAGGED, nodeGestures.getOnMouseDraggedEventHandler());
316-
317-
Rectangle rect1 = new Rectangle(100,100);
318-
rect1.setTranslateX(450);
319-
rect1.setTranslateY(450);
320-
rect1.setStroke(Color.BLUE);
321-
rect1.setFill(Color.BLUE.deriveColor(1, 1, 1, 0.5));
322-
rect1.addEventFilter( MouseEvent.MOUSE_PRESSED, nodeGestures.getOnMousePressedEventHandler());
323-
rect1.addEventFilter( MouseEvent.MOUSE_DRAGGED, nodeGestures.getOnMouseDraggedEventHandler());
324-
325-
canvas.getChildren().addAll(label1, label2, label3, circle1, rect1);
326-
327-
group.getChildren().add(canvas);
328-
329-
// create scene which can be dragged and zoomed
330-
Scene scene = new Scene(group, 1024, 768);
331-
332-
SceneGestures sceneGestures = new SceneGestures(canvas);
333-
scene.addEventFilter( MouseEvent.MOUSE_PRESSED, sceneGestures.getOnMousePressedEventHandler());
334-
scene.addEventFilter( MouseEvent.MOUSE_DRAGGED, sceneGestures.getOnMouseDraggedEventHandler());
335-
scene.addEventFilter( ScrollEvent.ANY, sceneGestures.getOnScrollEventHandler());
336-
337-
stage.setScene(scene);
338-
stage.show();
339-
340-
canvas.addGrid();
341-
342-
}
343-
}

source/v2/phasereditor/phasereditor.canvas.ui/src/phasereditor/canvas/ui/editors/behaviors/MouseBehavior.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import javafx.geometry.Point2D;
2525
import javafx.scene.Node;
2626
import javafx.scene.Parent;
27+
import javafx.scene.Scene;
2728
import javafx.scene.input.MouseButton;
2829
import javafx.scene.input.MouseEvent;
2930
import javafx.scene.input.ScrollEvent;
@@ -47,57 +48,59 @@ public MouseBehavior(ObjectCanvas canvas) {
4748
super();
4849
_canvas = canvas;
4950

50-
_canvas.getScene().addEventHandler(MouseEvent.MOUSE_PRESSED, e -> {
51+
Scene scene = _canvas.getScene();
52+
53+
scene.addEventHandler(ScrollEvent.ANY, e -> {
5154
try {
52-
handleMousePressed(e);
55+
handleScroll(e);
5356
} catch (Exception ex) {
5457
ex.printStackTrace();
5558
}
5659
});
5760

58-
_canvas.getScene().addEventHandler(MouseEvent.MOUSE_RELEASED, e -> {
61+
scene.addEventHandler(MouseEvent.MOUSE_PRESSED, e -> {
5962
try {
60-
handleMouseReleased(e);
63+
handleMousePressed(e);
6164
} catch (Exception ex) {
6265
ex.printStackTrace();
6366
}
6467
});
6568

66-
_canvas.getScene().addEventHandler(MouseEvent.MOUSE_DRAGGED, e -> {
69+
scene.addEventHandler(MouseEvent.MOUSE_RELEASED, e -> {
6770
try {
68-
handleMouseDragged(e);
71+
handleMouseReleased(e);
6972
} catch (Exception ex) {
7073
ex.printStackTrace();
7174
}
7275
});
7376

74-
_canvas.getScene().addEventHandler(MouseEvent.DRAG_DETECTED, e -> {
77+
scene.addEventHandler(MouseEvent.MOUSE_DRAGGED, e -> {
7578
try {
76-
handleDragDetected(e);
79+
handleMouseDragged(e);
7780
} catch (Exception ex) {
7881
ex.printStackTrace();
7982
}
8083
});
8184

82-
_canvas.getScene().addEventHandler(MouseEvent.MOUSE_MOVED, e -> {
85+
scene.addEventHandler(MouseEvent.DRAG_DETECTED, e -> {
8386
try {
84-
handleMouseMoved(e);
87+
handleDragDetected(e);
8588
} catch (Exception ex) {
8689
ex.printStackTrace();
8790
}
8891
});
8992

90-
_canvas.getScene().addEventHandler(MouseEvent.MOUSE_EXITED, e -> {
93+
scene.addEventHandler(MouseEvent.MOUSE_MOVED, e -> {
9194
try {
92-
handleMouseExited(e);
95+
handleMouseMoved(e);
9396
} catch (Exception ex) {
9497
ex.printStackTrace();
9598
}
9699
});
97100

98-
_canvas.getScene().addEventHandler(ScrollEvent.ANY, e -> {
101+
scene.addEventHandler(MouseEvent.MOUSE_EXITED, e -> {
99102
try {
100-
handleScroll(e);
103+
handleMouseExited(e);
101104
} catch (Exception ex) {
102105
ex.printStackTrace();
103106
}

0 commit comments

Comments
 (0)