annotate flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/PanControl.java @ 610:ea2191b1299d

#170 Changed the DOM manipulation while zoom and drag operation. flys-client/trunk@2223 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 23 Jun 2011 17:46:08 +0000
parents c5fc3fa02edb
children 80626c4a5bbf
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.Overflow;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 import com.smartgwt.client.types.SelectionType;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 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
11 import com.smartgwt.client.widgets.Img;
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import com.smartgwt.client.widgets.ImgButton;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import com.smartgwt.client.widgets.events.MouseDownEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import com.smartgwt.client.widgets.events.MouseDownHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import com.smartgwt.client.widgets.events.MouseMoveEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16 import com.smartgwt.client.widgets.events.MouseMoveHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import com.smartgwt.client.widgets.events.MouseOutEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import com.smartgwt.client.widgets.events.MouseOutHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 import com.smartgwt.client.widgets.events.MouseUpEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 import com.smartgwt.client.widgets.events.MouseUpHandler;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 import de.intevation.flys.client.client.event.HasPanHandlers;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import de.intevation.flys.client.client.event.PanEvent;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 import de.intevation.flys.client.client.event.PanHandler;
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 * @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
29 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 public class PanControl
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 extends ImgButton
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 implements MouseDownHandler, MouseMoveHandler, MouseUpHandler,
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 MouseOutHandler, HasPanHandlers
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 protected ChartOutputTab chartTab;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 protected List<PanHandler> handlers;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 protected int[] start;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 protected int[] end;
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
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 public PanControl(ChartOutputTab chartTab, String imageUrl) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 super();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 this.chartTab = chartTab;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 this.handlers = new ArrayList<PanHandler>();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 this.start = new int[] { -1, -1 };
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 this.end = new int[] { -1, -1 };
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 String baseUrl = GWT.getHostPageBaseURL();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 setSrc(baseUrl + imageUrl);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 setActionType(SelectionType.CHECKBOX);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 setSize(20);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 setShowRollOver(false);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 setSelected(false);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 chartTab.getChartPanel().addMouseDownHandler(this);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 chartTab.getChartPanel().addMouseMoveHandler(this);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 chartTab.getChartPanel().addMouseUpHandler(this);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 chartTab.getChartPanel().addMouseOutHandler(this);
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 * Method used to register a new PanHandler.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 * @param handler A new PanHandler.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 public void addPanHandler(PanHandler handler) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 if (handler != null) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 handlers.add(handler);
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 * 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
79 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 * @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
81 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 public void onMouseDown(MouseDownEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 if (!isSelected()) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84 return;
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
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
87 start[0] = event.getX();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 start[1] = event.getY();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
90 end[0] = start[0];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 end[1] = start[1];
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 * 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
97 * drag operation.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 * @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
100 * the chart image position.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
101 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
102 public void onMouseMove(MouseMoveEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 if (!isSelected() || start[0] == -1 || start[1] == -1) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
104 return;
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
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 int x = event.getX() - end[0];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
108 int y = event.getY() - end[1];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
109
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 end[0] = end[0] + x;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 end[1] = end[1] + y;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112
610
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
113 Canvas c = chartTab.getChartImg();
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 c.moveBy(x, y);
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 * 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
120 * registered listeners.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 * @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
123 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 public void onMouseUp(MouseUpEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 if (!isSelected()) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
126 return;
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
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 end[0] = event.getX();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 end[1] = event.getY();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131
610
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
132 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
133 c.setLeft(0);
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
134 c.setTop(0);
551
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
135
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 fireOnPan();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
137
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
138 start[0] = -1;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
139 start[1] = -1;
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144 * 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
145 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
146 * @param event The mouse out event.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
147 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 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
149 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
150 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
151
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
152 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
153 return;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
154 }
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
155
610
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
156 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
157 c.setLeft(0);
ea2191b1299d #170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 553
diff changeset
158 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
159
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
160 fireOnPan();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
161
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
162 start[0] = -1;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
163 start[1] = -1;
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 /**
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
168 * 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
169 * 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
170 * 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
171 * manually.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
172 *
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
173 * @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
174 * @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
175 *
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
176 * @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
177 * false.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
178 */
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
179 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
180 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
181
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
182 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
183 chart = chart.getParentElement();
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
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
186 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
187 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
188 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
189 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
190
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
191 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
192 return true;
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
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
195 return false;
551
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 * 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
201 * operation has finished.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 protected void fireOnPan() {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204 PanEvent event = new PanEvent(start, end);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 for (PanHandler handler: handlers) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 handler.onPan(event);
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 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
211 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org