Mercurial > dive4elements > river
annotate gwt-client/src/main/java/org/dive4elements/river/client/client/ui/chart/PanControl.java @ 7597:fca46ce8e4f5
(issue1225) Implement Magic labels.
There is now a new value in the chartsettings "Suggested Label" which
is hidden in the property editor. A suggested label is the label that
combines the label's of all processors that wrote data to an axis.
This suggested label is set as the label when the user has not
overwritten the label.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 25 Nov 2013 14:58:14 +0100 |
parents | ea9eef426962 |
children |
rev | line source |
---|---|
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5993
ea9eef426962
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5993
ea9eef426962
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5835
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
9 package org.dive4elements.river.client.client.ui.chart; |
551
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 import java.util.ArrayList; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 import java.util.List; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import com.google.gwt.core.client.GWT; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 import com.smartgwt.client.types.SelectionType; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 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
|
18 import com.smartgwt.client.widgets.Img; |
551
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 import com.smartgwt.client.widgets.ImgButton; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 import com.smartgwt.client.widgets.events.MouseDownEvent; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 import com.smartgwt.client.widgets.events.MouseDownHandler; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 import com.smartgwt.client.widgets.events.MouseMoveEvent; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 import com.smartgwt.client.widgets.events.MouseMoveHandler; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 import com.smartgwt.client.widgets.events.MouseOutEvent; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 import com.smartgwt.client.widgets.events.MouseOutHandler; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 import com.smartgwt.client.widgets.events.MouseUpEvent; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 import com.smartgwt.client.widgets.events.MouseUpHandler; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 |
5835
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
29 import org.dive4elements.river.client.client.event.HasPanHandlers; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
30 import org.dive4elements.river.client.client.event.PanEvent; |
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
31 import org.dive4elements.river.client.client.event.PanHandler; |
551
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
33 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
34 /** |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
35 * @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
|
36 */ |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
37 public class PanControl |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
38 extends ImgButton |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
39 implements MouseDownHandler, MouseMoveHandler, MouseUpHandler, |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 MouseOutHandler, HasPanHandlers |
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 protected ChartOutputTab chartTab; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 protected List<PanHandler> handlers; |
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 protected int[] start; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 protected int[] end; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 public PanControl(ChartOutputTab chartTab, String imageUrl) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
51 super(); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 this.chartTab = chartTab; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 this.handlers = new ArrayList<PanHandler>(); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 this.start = new int[] { -1, -1 }; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 this.end = new int[] { -1, -1 }; |
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 String baseUrl = GWT.getHostPageBaseURL(); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 setSrc(baseUrl + imageUrl); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
60 setActionType(SelectionType.CHECKBOX); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
61 setSize(20); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 setShowRollOver(false); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 setSelected(false); |
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 chartTab.getChartPanel().addMouseDownHandler(this); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
66 chartTab.getChartPanel().addMouseMoveHandler(this); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
67 chartTab.getChartPanel().addMouseUpHandler(this); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
68 chartTab.getChartPanel().addMouseOutHandler(this); |
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 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
71 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
72 /** |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
73 * Method used to register a new PanHandler. |
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 * @param handler A new PanHandler. |
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 public void addPanHandler(PanHandler handler) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 if (handler != null) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 handlers.add(handler); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
80 } |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
81 } |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
82 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
83 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
84 /** |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
85 * 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
|
86 * |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 * @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
|
88 */ |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 public void onMouseDown(MouseDownEvent event) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 if (!isSelected()) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 return; |
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 start[0] = event.getX(); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 start[1] = event.getY(); |
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 end[0] = start[0]; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
98 end[1] = start[1]; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
99 } |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 /** |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 * 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
|
104 * drag operation. |
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 * @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
|
107 * the chart image position. |
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 public void onMouseMove(MouseMoveEvent event) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 if (!isSelected() || start[0] == -1 || start[1] == -1) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
111 return; |
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 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
114 int x = event.getX() - end[0]; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
115 int y = event.getY() - end[1]; |
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 end[0] = end[0] + x; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 end[1] = end[1] + y; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
119 |
610
ea2191b1299d
#170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
553
diff
changeset
|
120 Canvas c = chartTab.getChartImg(); |
551
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 c.moveBy(x, y); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 } |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
123 |
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 /** |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
126 * 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
|
127 * registered listeners. |
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 * @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
|
130 */ |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 public void onMouseUp(MouseUpEvent event) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 if (!isSelected()) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
133 return; |
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 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
136 end[0] = event.getX(); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
137 end[1] = event.getY(); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
138 |
610
ea2191b1299d
#170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
553
diff
changeset
|
139 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
|
140 c.setLeft(0); |
ea2191b1299d
#170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
553
diff
changeset
|
141 c.setTop(0); |
551
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 fireOnPan(); |
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 start[0] = -1; |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 start[1] = -1; |
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 |
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 /** |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
151 * 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
|
152 * |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
153 * @param event The mouse out event. |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
154 */ |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
155 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
|
156 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
|
157 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
|
158 |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
159 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
|
160 return; |
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 |
610
ea2191b1299d
#170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
553
diff
changeset
|
163 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
|
164 c.setLeft(0); |
ea2191b1299d
#170 Changed the DOM manipulation while zoom and drag operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
553
diff
changeset
|
165 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
|
166 |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
167 fireOnPan(); |
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 start[0] = -1; |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
170 start[1] = -1; |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
171 } |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
172 |
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 /** |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
175 * 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
|
176 * 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
|
177 * 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
|
178 * manually. |
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 * @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
|
181 * @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
|
182 * |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
183 * @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
|
184 * false. |
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 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
|
187 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
|
188 |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
189 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
|
190 chart = chart.getParentElement(); |
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 |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
193 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
|
194 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
|
195 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
|
196 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
|
197 |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
198 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
|
199 return true; |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
200 } |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
201 |
c5fc3fa02edb
The MouseOut event will now finish a current pan operation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
551
diff
changeset
|
202 return false; |
551
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 |
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 /** |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
207 * 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
|
208 * operation has finished. |
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 protected void fireOnPan() { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
211 PanEvent event = new PanEvent(start, end); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
212 |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
213 for (PanHandler handler: handlers) { |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
214 handler.onPan(event); |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
215 } |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
216 } |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
217 } |
13c7f90917fc
Added a PanControl to pan charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
218 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |