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

The MouseOut event will now finish a current pan operation. flys-client/trunk@2067 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 07 Jun 2011 13:58:38 +0000
parents 13c7f90917fc
children ea2191b1299d
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 Canvas parent = chartTab.getChartPanel().getParentElement();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 parent.setOverflow(Overflow.HIDDEN);
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 start[0] = event.getX();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
91 start[1] = event.getY();
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 end[0] = start[0];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 end[1] = start[1];
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
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 * 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
100 * drag operation.
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 * @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
103 * the chart image position.
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 public void onMouseMove(MouseMoveEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
106 if (!isSelected() || start[0] == -1 || start[1] == -1) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 return;
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
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
110 int x = event.getX() - end[0];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 int y = event.getY() - end[1];
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
112
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
113 end[0] = end[0] + x;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
114 end[1] = end[1] + 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 Canvas c = chartTab.getChartPanel();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 c.moveBy(x, y);
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
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 * 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
123 * registered listeners.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 * @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
126 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
127 public void onMouseUp(MouseUpEvent event) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 if (!isSelected()) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 return;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132 end[0] = event.getX();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
133 end[1] = event.getY();
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 Canvas parent = chartTab.getChartPanel().getParentElement();
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
136 parent.setOverflow(Overflow.AUTO);
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 fireOnPan();
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 start[0] = -1;
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141 start[1] = -1;
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
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 * 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
147 *
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 * @param event The mouse out event.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150 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
151 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
152 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
153
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
154 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
155 return;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
156 }
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
157
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
158 Canvas parent = chartTab.getChartPanel().getParentElement();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
159 parent.setOverflow(Overflow.AUTO);
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 fireOnPan();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
162
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
163 start[0] = -1;
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
164 start[1] = -1;
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 /**
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
169 * 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
170 * 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
171 * 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
172 * manually.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
173 *
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
174 * @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
175 * @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
176 *
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
177 * @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
178 * false.
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
179 */
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
180 protected boolean isMouseOut(int x, int y) {
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
181 Canvas chart = chartTab.getChartPanel();
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
182
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
183 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
184 chart = chart.getParentElement();
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
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
187 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
188 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
189 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
190 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
191
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
192 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
193 return true;
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
c5fc3fa02edb The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 551
diff changeset
196 return false;
551
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 /**
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201 * 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
202 * operation has finished.
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 */
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204 protected void fireOnPan() {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 PanEvent event = new PanEvent(start, end);
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
207 for (PanHandler handler: handlers) {
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
208 handler.onPan(event);
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 }
13c7f90917fc Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org