annotate src/de/mpg/mpiwg/itgroup/digilib/digiImage/DigiImageController.java @ 20:2f47c136b8a6

added property view
author dwinter
date Tue, 04 Jan 2011 16:35:41 +0100
parents e63a64652f4d
children 1a7940ac5169
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
1 package de.mpg.mpiwg.itgroup.digilib.digiImage;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
2
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
3 import java.util.ArrayList;
20
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
4 import java.util.HashMap;
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
5 import java.util.List;
20
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
6 import java.util.Map;
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
7
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
8 import org.apache.commons.lang.StringUtils;
20
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
9 import org.eclipse.jface.viewers.ISelection;
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
10 import org.eclipse.jface.viewers.ISelectionChangedListener;
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
11 import org.eclipse.jface.viewers.ISelectionProvider;
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
12 import org.eclipse.jface.viewers.SelectionChangedEvent;
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
13 import org.eclipse.jface.viewers.StructuredSelection;
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
14 import org.eclipse.swt.graphics.Point;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
15
20
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
16
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
17 /** Contains methods to manipulate an digilib image @see {#link de.mpiwg.itgroup.digilib.digiImage.Digimage}.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
18 * The parameters are documented at the digilib pages @see {@link http://developer.berlios.de/docman/display_doc.php?docid=106&group_id=251}.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
19 *
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
20 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
21
20
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
22 public class DigiImageController{
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
23
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
24 public static String VMIR="vmir"; // vertical mirroring
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
25 public static String HMIR="hmir"; // horizontal mirroring
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
26
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
27 public DigiImage digiImage; // the image to be controlled.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
28 //private DigiImageParameter parameter;
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
29
20
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
30
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
31 protected DigiImageController(){}
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
32
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
33 /** Create a new controller on the image object.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
34 *
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
35 * @param di
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
36 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
37 public DigiImageController(DigiImage di){
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
38 this.digiImage=di;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
39 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
40
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
41
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
42
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
43 /** Mirrors the image
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
44 * @param modes can be @see {@value #VMIR} or {@link #HMIR}.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
45 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
46 public void mir(String mode) {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
47
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
48 DigiImageParameter dp = digiImage.getParameter();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
49
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
50 String parameter = dp.getMo();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
51
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
52
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
53 // mo kann mehrere durch komma getrennte parameter haben
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
54 String[] splittmo= parameter.split(",");
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
55 Boolean hasMir = false;
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
56 List<String> newmo = new ArrayList<String>();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
57 for(String m: splittmo){
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
58 if (m.equals(mode)){
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
59 hasMir=true;
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
60 } else {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
61 newmo.add(m);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
62 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
63 }
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
64 if(!hasMir){ // kein hmir dann dazufuegen
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
65 newmo.add(mode);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
66 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
67 String newmoString = StringUtils.join(newmo,",");
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
68
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
69 dp.setMo(newmoString);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
70
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
71
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
72 digiImage.setParameter(dp);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
73 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
74 }
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
75
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
76
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
77 public void vmir() {
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
78 mir(VMIR);
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
79
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
80 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
81
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
82 public void hmir() {
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
83 mir(HMIR);
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
84
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
85 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
86
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
87 public void rotate(float rotateValue) {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
88 digiImage.getParameter().setRot(rotateValue);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
89 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
90 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
91
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
92
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
93
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
94
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
95 /** Zoom the area given by the rectangle (x,y), (x2,y2). Alle point are given in absolute coordinates.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
96 * @param x
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
97 * @param y
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
98 * @param x2
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
99 * @param y2
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
100 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
101 public void zoomArea(int x, int y, int x2, int y2) {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
102
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
103 Point size = digiImage.getLabel().getSize();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
104
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
105 float relx = new Float(x)/new Float(size.x);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
106 float rely = new Float(y)/new Float(size.y);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
107
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
108 float relx2 = new Float(x2)/new Float(size.x);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
109 float rely2 = new Float(y2)/new Float(size.y);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
110
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
111 DigiImageParameter dp = digiImage.getParameter();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
112
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
113 float Ww = dp.getWw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
114 float Wh = dp.getWh();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
115
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
116 float Wx = dp.getWx();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
117 float Wy = dp.getWy();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
118
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
119
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
120 float nWx = relx*Ww+Wx;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
121 float nWy = rely*Wh+Wy;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
122
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
123 float nWw = (relx2-relx)*Ww;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
124 float nWh = (rely2-rely)*Wh;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
125
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
126
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
127
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
128 dp.setWx(nWx);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
129 dp.setWy(nWy);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
130 dp.setWw(nWw);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
131 dp.setWh(nWh);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
132 digiImage.setParameter(dp);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
133 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
134
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
135
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
136 // setRot(rotateValue);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
137 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
138
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
139 /**
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
140 * Show the whole image.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
141 *
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
142 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
143 public void zoomFull(){
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
144 DigiImageParameter dp = digiImage.getParameter();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
145 dp.setWw(1);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
146 dp.setWh(1);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
147
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
148 dp.setWx(0);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
149 dp.setWy(0);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
150
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
151 digiImage.setParameter(dp);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
152 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
153 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
154
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
155 /**
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
156 * scales the image down (ws --> ws-1)
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
157 *
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
158 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
159 public void scaleDown() {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
160 DigiImageParameter dp = digiImage.getParameter();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
161 float ws = dp.getWs();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
162 if (ws>1){
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
163 dp.setWs(ws-1);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
164 digiImage.setParameter(dp);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
165 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
166
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
167 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
168
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
169 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
170
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
171 /**
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
172 * scales the image up (ws --> ws+1)
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
173 *
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
174 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
175 public void scaleUp() {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
176 DigiImageParameter dp = digiImage.getParameter();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
177 float ws = dp.getWs();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
178
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
179 dp.setWs(ws+1);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
180 digiImage.setParameter(dp);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
181 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
182
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
183
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
184
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
185
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
186 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
187
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
188 /**
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
189 * If the image object points to a folder the previous image in the folder is displayed.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
190 *
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
191 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
192 public void prevPage() {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
193 DigiImageParameter dp = digiImage.getParameter();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
194 int pn = dp.getPn();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
195 if (pn>1)
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
196 pn=pn-1;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
197 dp.setPn(pn);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
198 digiImage.setParameter(dp);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
199 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
200
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
201 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
202
9
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
203 /**
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
204 * If the image object points to a folder the next image in the folder is displayed.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
205 * TODO currently no check is made if we are already on the last image in the folder.
e63a64652f4d added comments
dwinter
parents: 1
diff changeset
206 */
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
207 public void nextPage() {
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
208 DigiImageParameter dp = digiImage.getParameter();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
209 int pn = dp.getPn();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
210
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
211 pn=pn+1;
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
212 dp.setPn(pn);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
213 digiImage.setParameter(dp);
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
214 digiImage.redraw();
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
215
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
216
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
217 }
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
218
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
219
20
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
220
2f47c136b8a6 added property view
dwinter
parents: 9
diff changeset
221
1
83c58ea33792 first release (continued)
dwinter
parents:
diff changeset
222 }