annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/PanControl.java @ 4205:0dd8963cec9c

Set also the width of the GaugeTree when resizing the GaugePanel GWT is no longer able to calculate and set the correct width of the GaugeTree since the GaugeTree is added via a Canvas wrapper. Therefore set the width manually when resizing the GaugeTree.
author Björn Ricks <bjoern.ricks@intevation.de>
date Mon, 22 Oct 2012 15:33:16 +0200
parents 80626c4a5bbf
children
rev   line source
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.client.client.ui.chart;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import java.util.ArrayList;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4 import java.util.List;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import com.google.gwt.core.client.GWT;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8 import com.smartgwt.client.types.SelectionType;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import com.smartgwt.client.widgets.Canvas;
553
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
10 import com.smartgwt.client.widgets.Img;
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import com.smartgwt.client.widgets.ImgButton;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import com.smartgwt.client.widgets.events.MouseDownEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import com.smartgwt.client.widgets.events.MouseDownHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import com.smartgwt.client.widgets.events.MouseMoveEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import com.smartgwt.client.widgets.events.MouseMoveHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import com.smartgwt.client.widgets.events.MouseOutEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import com.smartgwt.client.widgets.events.MouseOutHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import com.smartgwt.client.widgets.events.MouseUpEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import com.smartgwt.client.widgets.events.MouseUpHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 import de.intevation.flys.client.client.event.HasPanHandlers;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 import de.intevation.flys.client.client.event.PanEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import de.intevation.flys.client.client.event.PanHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 public class PanControl
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 extends ImgButton
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 implements MouseDownHandler, MouseMoveHandler, MouseUpHandler,
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 MouseOutHandler, HasPanHandlers
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 protected ChartOutputTab chartTab;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 protected List<PanHandler> handlers;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 protected int[] start;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 protected int[] end;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 public PanControl(ChartOutputTab chartTab, String imageUrl) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 super();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 this.chartTab = chartTab;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 this.handlers = new ArrayList<PanHandler>();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 this.start = new int[] { -1, -1 };
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 this.end = new int[] { -1, -1 };
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 String baseUrl = GWT.getHostPageBaseURL();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 setSrc(baseUrl + imageUrl);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 setActionType(SelectionType.CHECKBOX);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 setSize(20);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 setShowRollOver(false);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 setSelected(false);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 chartTab.getChartPanel().addMouseDownHandler(this);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 chartTab.getChartPanel().addMouseMoveHandler(this);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 chartTab.getChartPanel().addMouseUpHandler(this);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 chartTab.getChartPanel().addMouseOutHandler(this);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 * Method used to register a new PanHandler.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 * @param handler A new PanHandler.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 public void addPanHandler(PanHandler handler) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 if (handler != null) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 handlers.add(handler);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 * This event starts the dragging operation if the control is activated.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79 * @param event The mouse down event which contains the start coordinates.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 public void onMouseDown(MouseDownEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 if (!isSelected()) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 return;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 start[0] = event.getX();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 start[1] = event.getY();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 end[0] = start[0];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 end[1] = start[1];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
92
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
93
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 * This event is used to reposition the chart image based on the current
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 * drag operation.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 * @param event The move event which contains the new coordinates to update
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 * the chart image position.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 public void onMouseMove(MouseMoveEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 if (!isSelected() || start[0] == -1 || start[1] == -1) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 return;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
105
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 int x = event.getX() - end[0];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 int y = event.getY() - end[1];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109 end[0] = end[0] + x;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 end[1] = end[1] + y;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111
610
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
112 Canvas c = chartTab.getChartImg();
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 c.moveBy(x, y);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 * This event stops the dragging operation and fires a DragEnd event to the
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 * registered listeners.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121 * @param event The mouse up event which contains the end coordinates.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123 public void onMouseUp(MouseUpEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 if (!isSelected()) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 return;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 end[0] = event.getX();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 end[1] = event.getY();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130
610
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
131 Canvas c = chartTab.getChartImg();
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
132 c.setLeft(0);
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
133 c.setTop(0);
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
134
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135 fireOnPan();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137 start[0] = -1;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 start[1] = -1;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
140
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
142 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
143 * This event is used to cancel the current dragging operation.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
145 * @param event The mouse out event.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147 public void onMouseOut(MouseOutEvent event) {
553
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
148 int x = event.getX();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
149 int y = event.getY();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
150
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
151 if (!isSelected() || !isMouseOut(x, y) || start[0] == -1) {
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
152 return;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
153 }
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
154
610
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
155 Canvas c = chartTab.getChartImg();
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
156 c.setLeft(0);
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
157 c.setTop(0);
553
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
158
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
159 fireOnPan();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
160
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
161 start[0] = -1;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
162 start[1] = -1;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
163 }
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
164
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
165
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
166 /**
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
167 * This method is required to check manually if the mouse pointer really
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
168 * moves out the chart area. The MouseOutEvent is also fired if the mouse
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
169 * goes down which doesn't seem to be correct. So, we gonna check this
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
170 * manually.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
171 *
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
172 * @param x The x coordinate.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
173 * @param y The y coordinate.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
174 *
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
175 * @return true, if the mouse is really out of the chart area, otherwise
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
176 * false.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
177 */
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
178 protected boolean isMouseOut(int x, int y) {
610
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
179 Canvas chart = chartTab.getChartImg();
553
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
180
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
181 if (chart instanceof Img) {
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
182 chart = chart.getParentElement();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
183 }
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
184
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
185 int left = chart.getPageLeft();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
186 int right = chart.getPageRight();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
187 int top = chart.getPageTop();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
188 int bottom = chart.getPageBottom();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
189
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
190 if (x <= left || x >= right || y <= top || y >= bottom) {
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
191 return true;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
192 }
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
193
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
194 return false;
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
196
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
197
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
198 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199 * A pan event is fired to inform the registered listeners about a pan
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 * operation has finished.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 protected void fireOnPan() {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 PanEvent event = new PanEvent(start, end);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 for (PanHandler handler: handlers) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 handler.onPan(event);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
209 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
210 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org