Mercurial > dive4elements > river
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 : |