Revision 33420 branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/layout/fframes/FFrameTable.java
FFrameTable.java | ||
---|---|---|
101 | 101 |
import org.gvsig.app.project.documents.layout.fframes.gui.dialogs.IFFrameDialog; |
102 | 102 |
import org.gvsig.app.project.documents.layout.gui.LayoutPanel; |
103 | 103 |
import org.gvsig.fmap.dal.exception.ReadException; |
104 |
import org.gvsig.tools.ToolsLocator; |
|
105 |
import org.gvsig.tools.dynobject.DynStruct; |
|
106 |
import org.gvsig.tools.persistence.PersistenceManager; |
|
107 |
import org.gvsig.tools.persistence.PersistentState; |
|
108 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
|
104 | 109 |
import org.gvsig.utils.XMLEntity; |
105 | 110 |
|
106 | 111 |
|
... | ... | |
111 | 116 |
* @author Vicente Caballero Navarro |
112 | 117 |
*/ |
113 | 118 |
public class FFrameTable extends FFrameGroup implements IFFrameGroupSelectable{ |
114 |
private int numColumns = 2; |
|
115 |
private int numRows = 2; |
|
116 |
private static AffineTransform identity=new AffineTransform(); |
|
117 |
private boolean selectFFrameBasic=false; |
|
118 |
private static final Image iMove = PluginServices.getIconTheme(). |
|
119 |
get("move-icon").getImage(); |
|
119 |
public static final String PERSISTENCE_DEFINITION_NAME = "FFrameTable"; |
|
120 | 120 |
|
121 |
private static final String NUMCOLUMNS_FIELD = "numColumns"; |
|
122 |
private static final String NUMROWS_FIELD = "numRows"; |
|
121 | 123 |
|
122 |
/** |
|
123 |
* DOCUMENT ME! |
|
124 |
* |
|
125 |
* @param g DOCUMENT ME! |
|
126 |
* @param at DOCUMENT ME! |
|
127 |
* @param rv DOCUMENT ME! |
|
128 |
* @param imgBase DOCUMENT ME! |
|
129 |
*/ |
|
130 |
public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv, |
|
131 |
BufferedImage imgBase) { |
|
132 |
Rectangle2D.Double r = getBoundingBox(at); |
|
133 |
g.setColor(Color.black); |
|
134 |
g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), |
|
135 |
r.y + (r.height / 2)); |
|
136 |
drawRectangles(g,at,rv,imgBase); |
|
137 |
g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), |
|
138 |
r.y + (r.height / 2)); |
|
139 |
super.draw(g,at,rv,imgBase); |
|
140 |
} |
|
124 |
private int numColumns = 2; |
|
125 |
private int numRows = 2; |
|
126 |
private static AffineTransform identity=new AffineTransform(); |
|
127 |
private boolean selectFFrameBasic=false; |
|
128 |
private static final Image iMove = PluginServices.getIconTheme(). |
|
129 |
get("move-icon").getImage(); |
|
141 | 130 |
|
142 |
private void drawRectangles(Graphics2D g, AffineTransform at,Rectangle2D rv,BufferedImage imgBase) { |
|
143 |
IFFrame[] fframes=getFFrames(); |
|
144 |
for (int i =0;i<fframes.length;i++){ |
|
145 |
FFrameBasic basic=(FFrameBasic)fframes[i]; |
|
146 |
basic.draw(g,at,rv,imgBase); |
|
147 |
} |
|
148 |
} |
|
149 | 131 |
|
150 |
/** |
|
151 |
* DOCUMENT ME! |
|
152 |
* |
|
153 |
* @param r DOCUMENT ME! |
|
154 |
* @param g DOCUMENT ME! |
|
155 |
*/ |
|
156 |
public void drawBox(Rectangle2D r, Graphics2D g) { |
|
157 |
calculateTable(r); |
|
158 |
IFFrame[] fframes=getFFrames(); |
|
159 |
for (int i =0;i<fframes.length;i++){ |
|
160 |
FFrameBasic basic=(FFrameBasic)fframes[i]; |
|
161 |
basic.draw(g,identity,null,null); |
|
162 |
} |
|
163 |
} |
|
132 |
/** |
|
133 |
* DOCUMENT ME! |
|
134 |
* |
|
135 |
* @param g DOCUMENT ME! |
|
136 |
* @param at DOCUMENT ME! |
|
137 |
* @param rv DOCUMENT ME! |
|
138 |
* @param imgBase DOCUMENT ME! |
|
139 |
*/ |
|
140 |
public void draw(Graphics2D g, AffineTransform at, Rectangle2D rv, |
|
141 |
BufferedImage imgBase) { |
|
142 |
Rectangle2D.Double r = getBoundingBox(at); |
|
143 |
g.setColor(Color.black); |
|
144 |
g.rotate(Math.toRadians(getRotation()), r.x + (r.width / 2), |
|
145 |
r.y + (r.height / 2)); |
|
146 |
drawRectangles(g,at,rv,imgBase); |
|
147 |
g.rotate(Math.toRadians(-getRotation()), r.x + (r.width / 2), |
|
148 |
r.y + (r.height / 2)); |
|
149 |
super.draw(g,at,rv,imgBase); |
|
150 |
} |
|
164 | 151 |
|
165 |
/** |
|
166 |
* DOCUMENT ME! |
|
167 |
* |
|
168 |
* @param g DOCUMENT ME! |
|
169 |
* @param at DOCUMENT ME! |
|
170 |
* |
|
171 |
* @throws ReadDriverException |
|
172 |
*/ |
|
173 |
public void print(Graphics2D g, AffineTransform at) |
|
174 |
throws ReadException { |
|
175 |
draw(g, at, null, null); |
|
176 |
} |
|
152 |
private void drawRectangles(Graphics2D g, AffineTransform at,Rectangle2D rv,BufferedImage imgBase) { |
|
153 |
IFFrame[] fframes=getFFrames(); |
|
154 |
for (int i =0;i<fframes.length;i++){ |
|
155 |
FFrameBasic basic=(FFrameBasic)fframes[i]; |
|
156 |
basic.draw(g,at,rv,imgBase); |
|
157 |
} |
|
158 |
} |
|
177 | 159 |
|
178 |
/** |
|
179 |
* DOCUMENT ME! |
|
180 |
* |
|
181 |
* @return DOCUMENT ME! |
|
182 |
* |
|
183 |
* @throws SaveException DOCUMENT ME! |
|
184 |
*/ |
|
185 |
public XMLEntity getXMLEntity() throws SaveException { |
|
186 |
XMLEntity xml = super.getXMLEntity(); |
|
187 |
xml.putProperty("numColumns",numColumns); |
|
188 |
xml.putProperty("numRows",numRows); |
|
189 |
return xml; |
|
190 |
} |
|
160 |
/** |
|
161 |
* DOCUMENT ME! |
|
162 |
* |
|
163 |
* @param r DOCUMENT ME! |
|
164 |
* @param g DOCUMENT ME! |
|
165 |
*/ |
|
166 |
public void drawBox(Rectangle2D r, Graphics2D g) { |
|
167 |
calculateTable(r); |
|
168 |
IFFrame[] fframes=getFFrames(); |
|
169 |
for (int i =0;i<fframes.length;i++){ |
|
170 |
FFrameBasic basic=(FFrameBasic)fframes[i]; |
|
171 |
basic.draw(g,identity,null,null); |
|
172 |
} |
|
173 |
} |
|
191 | 174 |
|
192 |
/** |
|
193 |
* DOCUMENT ME! |
|
194 |
* |
|
195 |
* @param xml DOCUMENT ME! |
|
196 |
*/ |
|
197 |
public void setXMLEntity(XMLEntity xml) { |
|
198 |
super.setXMLEntity(xml); |
|
199 |
numColumns=xml.getIntProperty("numColumns"); |
|
200 |
numRows=xml.getIntProperty("numRows"); |
|
201 |
} |
|
175 |
/** |
|
176 |
* DOCUMENT ME! |
|
177 |
* |
|
178 |
* @param g DOCUMENT ME! |
|
179 |
* @param at DOCUMENT ME! |
|
180 |
* |
|
181 |
* @throws ReadDriverException |
|
182 |
*/ |
|
183 |
public void print(Graphics2D g, AffineTransform at) |
|
184 |
throws ReadException { |
|
185 |
draw(g, at, null, null); |
|
186 |
} |
|
202 | 187 |
|
203 |
/** |
|
204 |
* DOCUMENT ME! |
|
205 |
* |
|
206 |
* @param xml DOCUMENT ME! |
|
207 |
* @param l DOCUMENT ME! |
|
208 |
*/ |
|
209 |
public void setXMLEntity03(XMLEntity xml, LayoutPanel l) { |
|
210 |
// TODO Auto-generated method stub |
|
211 |
} |
|
188 |
/** |
|
189 |
* DOCUMENT ME! |
|
190 |
* |
|
191 |
* @return DOCUMENT ME! |
|
192 |
* |
|
193 |
* @throws SaveException DOCUMENT ME! |
|
194 |
*/ |
|
195 |
public XMLEntity getXMLEntity() throws SaveException { |
|
196 |
XMLEntity xml = super.getXMLEntity(); |
|
197 |
xml.putProperty("numColumns",numColumns); |
|
198 |
xml.putProperty("numRows",numRows); |
|
199 |
return xml; |
|
200 |
} |
|
212 | 201 |
|
213 |
/** |
|
214 |
* DOCUMENT ME! |
|
215 |
* |
|
216 |
* @return DOCUMENT ME! |
|
217 |
*/ |
|
218 |
public String getNameFFrame() { |
|
219 |
return PluginServices.getText(this, "box") + num; |
|
220 |
} |
|
202 |
/** |
|
203 |
* DOCUMENT ME! |
|
204 |
* |
|
205 |
* @param xml DOCUMENT ME! |
|
206 |
*/ |
|
207 |
public void setXMLEntity(XMLEntity xml) { |
|
208 |
super.setXMLEntity(xml); |
|
209 |
numColumns=xml.getIntProperty("numColumns"); |
|
210 |
numRows=xml.getIntProperty("numRows"); |
|
211 |
} |
|
221 | 212 |
|
222 |
/** |
|
223 |
* DOCUMENT ME! |
|
224 |
* |
|
225 |
* @return DOCUMENT ME! |
|
226 |
*/ |
|
227 |
public int getNumColumns() { |
|
228 |
return numColumns; |
|
229 |
} |
|
213 |
/** |
|
214 |
* DOCUMENT ME! |
|
215 |
* |
|
216 |
* @param xml DOCUMENT ME! |
|
217 |
* @param l DOCUMENT ME! |
|
218 |
*/ |
|
219 |
public void setXMLEntity03(XMLEntity xml, LayoutPanel l) { |
|
220 |
// TODO Auto-generated method stub |
|
221 |
} |
|
230 | 222 |
|
231 |
/**
|
|
232 |
* DOCUMENT ME!
|
|
233 |
*
|
|
234 |
* @param numColumns DOCUMENT ME!
|
|
235 |
*/
|
|
236 |
public void setNumColumns(int numColumns) {
|
|
237 |
this.numColumns = numColumns;
|
|
238 |
}
|
|
223 |
/**
|
|
224 |
* DOCUMENT ME!
|
|
225 |
*
|
|
226 |
* @return DOCUMENT ME!
|
|
227 |
*/
|
|
228 |
public String getNameFFrame() {
|
|
229 |
return PluginServices.getText(this, "box") + num;
|
|
230 |
}
|
|
239 | 231 |
|
240 |
/**
|
|
241 |
* DOCUMENT ME!
|
|
242 |
*
|
|
243 |
* @return DOCUMENT ME!
|
|
244 |
*/
|
|
245 |
public int getNumRows() {
|
|
246 |
return numRows;
|
|
247 |
}
|
|
232 |
/**
|
|
233 |
* DOCUMENT ME!
|
|
234 |
*
|
|
235 |
* @return DOCUMENT ME!
|
|
236 |
*/
|
|
237 |
public int getNumColumns() {
|
|
238 |
return numColumns;
|
|
239 |
}
|
|
248 | 240 |
|
249 |
/**
|
|
250 |
* DOCUMENT ME!
|
|
251 |
*
|
|
252 |
* @param numRows DOCUMENT ME!
|
|
253 |
*/
|
|
254 |
public void setNumRows(int numRows) {
|
|
255 |
this.numRows = numRows;
|
|
256 |
}
|
|
241 |
/**
|
|
242 |
* DOCUMENT ME!
|
|
243 |
*
|
|
244 |
* @param numColumns DOCUMENT ME!
|
|
245 |
*/
|
|
246 |
public void setNumColumns(int numColumns) {
|
|
247 |
this.numColumns = numColumns;
|
|
248 |
}
|
|
257 | 249 |
|
258 |
public void calculateTable(Rectangle2D r) { |
|
259 |
double wC = r.getWidth() / numColumns; |
|
260 |
double hR = r.getHeight() / numRows; |
|
261 |
int rows = numRows; |
|
262 |
clearFFrames(); |
|
263 |
for (int i = 0; i < numColumns; i++) { |
|
264 |
for (int j = 0; j < rows; j++) { |
|
265 |
double x=r.getX() + (wC * i); |
|
266 |
double y=r.getY() + (hR * j); |
|
267 |
double w=wC; |
|
268 |
double h=hR; |
|
269 |
Rectangle2D rBasic=new Rectangle2D.Double(x,y,w,h); |
|
270 |
FFrameBasic basic=(FFrameBasic)FrameFactory.createFrameFromName(FFrameBasicFactory.registerName); |
|
271 |
basic.setRectangle(rBasic); |
|
272 |
basic.setLayout(getLayout()); |
|
273 |
addFFrame(basic); |
|
274 |
} |
|
275 |
} |
|
276 |
} |
|
250 |
/** |
|
251 |
* DOCUMENT ME! |
|
252 |
* |
|
253 |
* @return DOCUMENT ME! |
|
254 |
*/ |
|
255 |
public int getNumRows() { |
|
256 |
return numRows; |
|
257 |
} |
|
277 | 258 |
|
278 |
public void selectFFrame(boolean b) { |
|
279 |
selectFFrameBasic=b; |
|
280 |
} |
|
259 |
/** |
|
260 |
* DOCUMENT ME! |
|
261 |
* |
|
262 |
* @param numRows DOCUMENT ME! |
|
263 |
*/ |
|
264 |
public void setNumRows(int numRows) { |
|
265 |
this.numRows = numRows; |
|
266 |
} |
|
281 | 267 |
|
282 |
public IFFrame joinFFrame() { |
|
283 |
IFFrame[] fframes=this.getFFrames(); |
|
284 |
Rectangle2D r=null; |
|
268 |
public void calculateTable(Rectangle2D r) { |
|
269 |
double wC = r.getWidth() / numColumns; |
|
270 |
double hR = r.getHeight() / numRows; |
|
271 |
int rows = numRows; |
|
272 |
clearFFrames(); |
|
273 |
for (int i = 0; i < numColumns; i++) { |
|
274 |
for (int j = 0; j < rows; j++) { |
|
275 |
double x=r.getX() + (wC * i); |
|
276 |
double y=r.getY() + (hR * j); |
|
277 |
double w=wC; |
|
278 |
double h=hR; |
|
279 |
Rectangle2D rBasic=new Rectangle2D.Double(x,y,w,h); |
|
280 |
FFrameBasic basic=(FFrameBasic)FrameFactory.createFrameFromName(FFrameBasicFactory.registerName); |
|
281 |
basic.setRectangle(rBasic); |
|
282 |
basic.setLayout(getLayout()); |
|
283 |
addFFrame(basic); |
|
284 |
} |
|
285 |
} |
|
286 |
} |
|
285 | 287 |
|
286 |
for (int i=fframes.length-1;i>=0;i--){ |
|
287 |
if (fframes[i].getSelected()!=IFFrame.NOSELECT){ |
|
288 |
if (r==null){ |
|
289 |
r=(Rectangle2D)fframes[i].getBoundBox().clone(); |
|
290 |
}else{ |
|
291 |
r.add(fframes[i].getBoundBox()); |
|
292 |
} |
|
293 |
this.removeFFrame(i); |
|
294 |
} |
|
288 |
public void selectFFrame(boolean b) { |
|
289 |
selectFFrameBasic=b; |
|
290 |
} |
|
295 | 291 |
|
296 |
//removeFFrame(fframes[i]); |
|
297 |
} |
|
298 |
if (r!=null){ |
|
299 |
//Layout layout=(Layout)PluginServices.getMDIManager().getActiveView(); |
|
300 |
FFrameBasic basic=(FFrameBasic)FrameFactory.createFrameFromName(FFrameBasicFactory.registerName); |
|
301 |
basic.setRectangle(r); |
|
302 |
basic.setLayout(getLayout()); |
|
303 |
this.addFFrame(basic); |
|
304 |
return this; |
|
305 |
} |
|
292 |
public IFFrame joinFFrame() { |
|
293 |
IFFrame[] fframes=this.getFFrames(); |
|
294 |
Rectangle2D r=null; |
|
306 | 295 |
|
307 |
return null; |
|
308 |
} |
|
296 |
for (int i=fframes.length-1;i>=0;i--){ |
|
297 |
if (fframes[i].getSelected()!=IFFrame.NOSELECT){ |
|
298 |
if (r==null){ |
|
299 |
r=(Rectangle2D)fframes[i].getBoundBox().clone(); |
|
300 |
}else{ |
|
301 |
r.add(fframes[i].getBoundBox()); |
|
302 |
} |
|
303 |
this.removeFFrame(i); |
|
304 |
} |
|
309 | 305 |
|
310 |
/* |
|
306 |
//removeFFrame(fframes[i]); |
|
307 |
} |
|
308 |
if (r!=null){ |
|
309 |
//Layout layout=(Layout)PluginServices.getMDIManager().getActiveView(); |
|
310 |
FFrameBasic basic=(FFrameBasic)FrameFactory.createFrameFromName(FFrameBasicFactory.registerName); |
|
311 |
basic.setRectangle(r); |
|
312 |
basic.setLayout(getLayout()); |
|
313 |
this.addFFrame(basic); |
|
314 |
return this; |
|
315 |
} |
|
316 |
|
|
317 |
return null; |
|
318 |
} |
|
319 |
|
|
320 |
/* |
|
311 | 321 |
public int getSelected() { |
312 | 322 |
// if (!selectFFrameBasic) |
313 | 323 |
return super.getSelected(); |
... | ... | |
321 | 331 |
// return 0; |
322 | 332 |
|
323 | 333 |
} |
324 |
*/ |
|
325 |
public void setSelected(Point2D p,MouseEvent e) {
|
|
326 |
if (!selectFFrameBasic) {
|
|
334 |
*/
|
|
335 |
public void setSelected(Point2D p,MouseEvent e) {
|
|
336 |
if (!selectFFrameBasic) {
|
|
327 | 337 |
super.setSelected(p,e); |
328 | 338 |
} else{ |
329 |
setSelectedGroup(p,e);
|
|
330 |
}
|
|
331 |
}
|
|
339 |
setSelectedGroup(p,e);
|
|
340 |
}
|
|
341 |
}
|
|
332 | 342 |
|
333 |
public boolean contains(Point2D p) {
|
|
334 |
if (!selectFFrameBasic) {
|
|
343 |
public boolean contains(Point2D p) {
|
|
344 |
if (!selectFFrameBasic) {
|
|
335 | 345 |
return super.contains(p); |
336 | 346 |
} |
337 |
return contains(p);
|
|
338 |
}
|
|
347 |
return contains(p);
|
|
348 |
}
|
|
339 | 349 |
|
340 |
public void drawHandlers(Graphics2D g) {
|
|
341 |
if (!selectFFrameBasic) {
|
|
350 |
public void drawHandlers(Graphics2D g) {
|
|
351 |
if (!selectFFrameBasic) {
|
|
342 | 352 |
super.drawHandlers(g); |
343 | 353 |
} else{ |
344 |
drawHandlersGroup(g);
|
|
354 |
drawHandlersGroup(g);
|
|
345 | 355 |
|
346 |
}
|
|
347 |
}
|
|
356 |
}
|
|
357 |
}
|
|
348 | 358 |
|
349 |
public int getContains(Point2D p) {
|
|
350 |
if (!selectFFrameBasic) {
|
|
359 |
public int getContains(Point2D p) {
|
|
360 |
if (!selectFFrameBasic) {
|
|
351 | 361 |
return super.getContains(p); |
352 | 362 |
} |
353 |
return getContainsGroup(p);
|
|
354 |
}
|
|
363 |
return getContainsGroup(p);
|
|
364 |
}
|
|
355 | 365 |
|
356 |
public Rectangle2D getMovieRect(int difx, int dify) {
|
|
357 |
//TODO Esto de momento lo dejo que no se pueda mover
|
|
358 |
//cuando se tiene seleccionada la herramienta de selecci�n de un FFrameBasic.
|
|
359 |
Rectangle2D r= super.getMovieRect(difx,dify);
|
|
360 |
if (!selectFFrameBasic) {
|
|
366 |
public Rectangle2D getMovieRect(int difx, int dify) {
|
|
367 |
//TODO Esto de momento lo dejo que no se pueda mover
|
|
368 |
//cuando se tiene seleccionada la herramienta de selecci�n de un FFrameBasic.
|
|
369 |
Rectangle2D r= super.getMovieRect(difx,dify);
|
|
370 |
if (!selectFFrameBasic) {
|
|
361 | 371 |
return r; |
362 | 372 |
} |
363 |
r= super.getMovieRect(0,0);
|
|
364 |
return r;
|
|
365 |
}
|
|
373 |
r= super.getMovieRect(0,0);
|
|
374 |
return r;
|
|
375 |
}
|
|
366 | 376 |
|
367 |
public Rectangle2D getMovieRectGroup(int difX, int difY) {
|
|
368 |
Rectangle2D r=null;
|
|
369 |
IFFrame[] fframes = getFFrames();
|
|
370 |
ArrayList selected=new ArrayList();
|
|
371 |
for (int i = 0; i < fframes.length; i++) {
|
|
372 |
IFFrame fframe = fframes[i];
|
|
373 |
if (fframe.getSelected()!=IFFrame.NOSELECT){
|
|
374 |
selected.add(fframe);
|
|
375 |
}
|
|
376 |
}
|
|
377 |
public Rectangle2D getMovieRectGroup(int difX, int difY) {
|
|
378 |
Rectangle2D r=null;
|
|
379 |
IFFrame[] fframes = getFFrames();
|
|
380 |
ArrayList selected=new ArrayList();
|
|
381 |
for (int i = 0; i < fframes.length; i++) {
|
|
382 |
IFFrame fframe = fframes[i];
|
|
383 |
if (fframe.getSelected()!=IFFrame.NOSELECT){
|
|
384 |
selected.add(fframe);
|
|
385 |
}
|
|
386 |
}
|
|
377 | 387 |
|
378 |
for (int i = 0; i < selected.size(); i++) {
|
|
388 |
for (int i = 0; i < selected.size(); i++) {
|
|
379 | 389 |
|
380 |
if (i==0){
|
|
381 |
r=((IFFrame)selected.get(i)).getMovieRect(difX,difY);
|
|
382 |
} else {
|
|
390 |
if (i==0){
|
|
391 |
r=((IFFrame)selected.get(i)).getMovieRect(difX,difY);
|
|
392 |
} else {
|
|
383 | 393 |
r.add(((IFFrame)selected.get(i)).getMovieRect(difX,difY)); |
384 | 394 |
} |
385 |
}
|
|
386 |
return r;
|
|
387 |
}
|
|
395 |
}
|
|
396 |
return r;
|
|
397 |
}
|
|
388 | 398 |
|
389 |
public int getContainsGroup(Point2D p) {
|
|
390 |
ArrayList selected=new ArrayList();
|
|
391 |
IFFrame[] fframes = getFFrames();
|
|
392 |
for (int i = 0; i < fframes.length; i++) {
|
|
393 |
IFFrame fframe = fframes[i];
|
|
394 |
int contains=fframe.getContains(p);
|
|
395 |
if (contains != IFFrame.NOSELECT) {
|
|
396 |
if (contains == IFFrame.RECT){
|
|
397 |
selected.add(fframe);
|
|
398 |
}else{
|
|
399 |
return contains;
|
|
400 |
}
|
|
401 |
}
|
|
402 |
}
|
|
403 |
if (selected.size()>0){
|
|
404 |
return ((IFFrame)selected.get(0)).getContains(p);
|
|
405 |
}
|
|
406 |
return 0;
|
|
407 |
}
|
|
399 |
public int getContainsGroup(Point2D p) {
|
|
400 |
ArrayList selected=new ArrayList();
|
|
401 |
IFFrame[] fframes = getFFrames();
|
|
402 |
for (int i = 0; i < fframes.length; i++) {
|
|
403 |
IFFrame fframe = fframes[i];
|
|
404 |
int contains=fframe.getContains(p);
|
|
405 |
if (contains != IFFrame.NOSELECT) {
|
|
406 |
if (contains == IFFrame.RECT){
|
|
407 |
selected.add(fframe);
|
|
408 |
}else{
|
|
409 |
return contains;
|
|
410 |
}
|
|
411 |
}
|
|
412 |
}
|
|
413 |
if (selected.size()>0){
|
|
414 |
return ((IFFrame)selected.get(0)).getContains(p);
|
|
415 |
}
|
|
416 |
return 0;
|
|
417 |
}
|
|
408 | 418 |
|
409 |
/**
|
|
410 |
* Dibuja los handlers sobre el boundingBox en el graphics que se pasa como
|
|
411 |
* par�metro.
|
|
412 |
*
|
|
413 |
* @param g Graphics sobre el que dibujar.
|
|
414 |
*/
|
|
415 |
public void drawHandlersGroup(Graphics2D g) {
|
|
416 |
int size = 8;
|
|
417 |
g.setColor(Color.gray);
|
|
418 |
IFFrame[] fframes=getFFrames();
|
|
419 |
for (int i = 0; i < fframes.length; i++) {
|
|
420 |
IFFrame fframe = fframes[i];
|
|
421 |
if (fframe.getSelected()!=IFFrame.NOSELECT){
|
|
422 |
Rectangle2D r = fframe.getBoundingBox(null);
|
|
423 |
Point2D p = new Point2D.Double();
|
|
424 |
g.rotate(Math.toRadians(getRotation()), r.getX() + (r.getWidth() / 2),
|
|
425 |
r.getY() + (r.getHeight() / 2));
|
|
419 |
/**
|
|
420 |
* Dibuja los handlers sobre el boundingBox en el graphics que se pasa como
|
|
421 |
* par�metro.
|
|
422 |
*
|
|
423 |
* @param g Graphics sobre el que dibujar.
|
|
424 |
*/
|
|
425 |
public void drawHandlersGroup(Graphics2D g) {
|
|
426 |
int size = 8;
|
|
427 |
g.setColor(Color.gray);
|
|
428 |
IFFrame[] fframes=getFFrames();
|
|
429 |
for (int i = 0; i < fframes.length; i++) {
|
|
430 |
IFFrame fframe = fframes[i];
|
|
431 |
if (fframe.getSelected()!=IFFrame.NOSELECT){
|
|
432 |
Rectangle2D r = fframe.getBoundingBox(null);
|
|
433 |
Point2D p = new Point2D.Double();
|
|
434 |
g.rotate(Math.toRadians(getRotation()), r.getX() + (r.getWidth() / 2),
|
|
435 |
r.getY() + (r.getHeight() / 2));
|
|
426 | 436 |
|
427 |
AffineTransform atRotate = new AffineTransform();
|
|
428 |
atRotate.rotate(Math.toRadians(getRotation()),
|
|
429 |
r.getX() + (r.getWidth() / 2), r.getY() + (r.getHeight() / 2));
|
|
437 |
AffineTransform atRotate = new AffineTransform();
|
|
438 |
atRotate.rotate(Math.toRadians(getRotation()),
|
|
439 |
r.getX() + (r.getWidth() / 2), r.getY() + (r.getHeight() / 2));
|
|
430 | 440 |
|
431 |
g.fillRect((int) r.getX() - size/2, (int) r.getY() - size/2, size, size);
|
|
432 |
atRotate.transform(new Point2D.Double(r.getX() - size/2, r.getY() - size/2),
|
|
433 |
p);
|
|
434 |
no.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
441 |
g.fillRect((int) r.getX() - size/2, (int) r.getY() - size/2, size, size);
|
|
442 |
atRotate.transform(new Point2D.Double(r.getX() - size/2, r.getY() - size/2),
|
|
443 |
p);
|
|
444 |
no.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
435 | 445 |
|
436 |
g.fillRect((int) r.getMaxX()- size/2, (int) r.getY() - size/2, size, size);
|
|
437 |
atRotate.transform(new Point2D.Double(r.getMaxX()-size/2, r.getY() - size/2), p);
|
|
438 |
ne.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
446 |
g.fillRect((int) r.getMaxX()- size/2, (int) r.getY() - size/2, size, size);
|
|
447 |
atRotate.transform(new Point2D.Double(r.getMaxX()-size/2, r.getY() - size/2), p);
|
|
448 |
ne.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
439 | 449 |
|
440 |
g.fillRect((int) r.getX() - size/2, (int) r.getMaxY()-size/2, size, size);
|
|
441 |
atRotate.transform(new Point2D.Double(r.getX() - size/2, r.getMaxY()-size/2), p);
|
|
442 |
so.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
450 |
g.fillRect((int) r.getX() - size/2, (int) r.getMaxY()-size/2, size, size);
|
|
451 |
atRotate.transform(new Point2D.Double(r.getX() - size/2, r.getMaxY()-size/2), p);
|
|
452 |
so.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
443 | 453 |
|
444 |
g.fillRect((int) r.getMaxX()-size/2, (int) r.getMaxY()-size/2, size, size);
|
|
445 |
atRotate.transform(new Point2D.Double(r.getMaxX()-size/2, r.getMaxY()-size/2), p);
|
|
446 |
se.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
454 |
g.fillRect((int) r.getMaxX()-size/2, (int) r.getMaxY()-size/2, size, size);
|
|
455 |
atRotate.transform(new Point2D.Double(r.getMaxX()-size/2, r.getMaxY()-size/2), p);
|
|
456 |
se.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
447 | 457 |
|
448 |
g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getY() - size/2,
|
|
449 |
size, size);
|
|
450 |
atRotate.transform(new Point2D.Double(r.getCenterX() - (size / 2),
|
|
451 |
r.getY() - size/2), p);
|
|
452 |
n.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
458 |
g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getY() - size/2,
|
|
459 |
size, size);
|
|
460 |
atRotate.transform(new Point2D.Double(r.getCenterX() - (size / 2),
|
|
461 |
r.getY() - size/2), p);
|
|
462 |
n.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
453 | 463 |
|
454 |
g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getMaxY()-size/2, size,
|
|
455 |
size);
|
|
456 |
atRotate.transform(new Point2D.Double(r.getCenterX() - (size / 2),
|
|
457 |
r.getMaxY()-size/2), p);
|
|
458 |
s.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
464 |
g.fillRect((int) r.getCenterX() - (size / 2), (int) r.getMaxY()-size/2, size,
|
|
465 |
size);
|
|
466 |
atRotate.transform(new Point2D.Double(r.getCenterX() - (size / 2),
|
|
467 |
r.getMaxY()-size/2), p);
|
|
468 |
s.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
459 | 469 |
|
460 |
g.fillRect((int) r.getX() - size/2, (int) r.getCenterY() - (size / 2),
|
|
461 |
size, size);
|
|
462 |
atRotate.transform(new Point2D.Double(r.getX() - size/2,
|
|
463 |
r.getCenterY() - (size / 2)), p);
|
|
464 |
o.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
470 |
g.fillRect((int) r.getX() - size/2, (int) r.getCenterY() - (size / 2),
|
|
471 |
size, size);
|
|
472 |
atRotate.transform(new Point2D.Double(r.getX() - size/2,
|
|
473 |
r.getCenterY() - (size / 2)), p);
|
|
474 |
o.setRect((int) p.getX(), (int) p.getY(), size, size);
|
|
465 | 475 |
|
466 |
g.fillRect((int) r.getMaxX()-size/2, (int) r.getCenterY() - (size / 2), size,
|
|
467 |
size);
|
|
468 |
atRotate.transform(new Point2D.Double(r.getMaxX()-size/2,
|
|
469 |
r.getCenterY() - (size / 2)), p);
|
|
470 |
e.setRect((int) p.getX()-size/2, (int) p.getY()-size/2, size, size);
|
|
471 |
g.rotate(Math.toRadians(-getRotation()), r.getX() + (r.getWidth() / 2),
|
|
472 |
r.getY() + (r.getHeight() / 2));
|
|
473 |
}
|
|
474 |
}
|
|
476 |
g.fillRect((int) r.getMaxX()-size/2, (int) r.getCenterY() - (size / 2), size,
|
|
477 |
size);
|
|
478 |
atRotate.transform(new Point2D.Double(r.getMaxX()-size/2,
|
|
479 |
r.getCenterY() - (size / 2)), p);
|
|
480 |
e.setRect((int) p.getX()-size/2, (int) p.getY()-size/2, size, size);
|
|
481 |
g.rotate(Math.toRadians(-getRotation()), r.getX() + (r.getWidth() / 2),
|
|
482 |
r.getY() + (r.getHeight() / 2));
|
|
483 |
}
|
|
484 |
}
|
|
475 | 485 |
|
476 |
}
|
|
486 |
}
|
|
477 | 487 |
|
478 |
/* public void drawHandlersGroup(Graphics2D g) {
|
|
488 |
/* public void drawHandlersGroup(Graphics2D g) {
|
|
479 | 489 |
g.setColor(Color.gray); |
480 | 490 |
IFFrame[] fframes=getFFrames(); |
481 | 491 |
for (int i = 0; i < fframes.length; i++) { |
... | ... | |
485 | 495 |
} |
486 | 496 |
} |
487 | 497 |
} |
488 |
*/ |
|
489 |
public boolean containsGroup(Point2D p) {
|
|
490 |
IFFrame[] fframes=getFFrames();
|
|
491 |
for (int i = 0; i < fframes.length; i++) {
|
|
492 |
IFFrame fframe = fframes[i];
|
|
493 |
if (fframe.contains(p)){
|
|
494 |
return true;
|
|
495 |
}
|
|
496 |
}
|
|
497 |
return false;
|
|
498 |
}
|
|
498 |
*/
|
|
499 |
public boolean containsGroup(Point2D p) {
|
|
500 |
IFFrame[] fframes=getFFrames();
|
|
501 |
for (int i = 0; i < fframes.length; i++) {
|
|
502 |
IFFrame fframe = fframes[i];
|
|
503 |
if (fframe.contains(p)){
|
|
504 |
return true;
|
|
505 |
}
|
|
506 |
}
|
|
507 |
return false;
|
|
508 |
}
|
|
499 | 509 |
|
500 |
public void setSelectedGroup(Point2D p, MouseEvent e) {
|
|
501 |
IFFrame[] fframes = getFFrames();
|
|
502 |
if (!e.isShiftDown()) {
|
|
503 |
for (int j = 0; j < fframes.length; j++) {
|
|
504 |
fframes[j].setSelected(false);
|
|
505 |
}
|
|
506 |
for (int i = 0; i < fframes.length; i++) {
|
|
507 |
IFFrame fframe = fframes[i];
|
|
508 |
//if ((fframe.getSelected() == IFFrame.NOSELECT)) {
|
|
509 |
fframe.setSelected(p, e);
|
|
510 |
//}
|
|
511 |
}
|
|
512 |
}else{
|
|
513 |
for (int i = 0; i < fframes.length; i++) {
|
|
514 |
IFFrame fframe = fframes[i];
|
|
515 |
if (fframe.contains(p)) {
|
|
510 |
public void setSelectedGroup(Point2D p, MouseEvent e) {
|
|
511 |
IFFrame[] fframes = getFFrames();
|
|
512 |
if (!e.isShiftDown()) {
|
|
513 |
for (int j = 0; j < fframes.length; j++) {
|
|
514 |
fframes[j].setSelected(false);
|
|
515 |
}
|
|
516 |
for (int i = 0; i < fframes.length; i++) {
|
|
517 |
IFFrame fframe = fframes[i];
|
|
518 |
//if ((fframe.getSelected() == IFFrame.NOSELECT)) {
|
|
519 |
fframe.setSelected(p, e);
|
|
520 |
//}
|
|
521 |
}
|
|
522 |
}else{
|
|
523 |
for (int i = 0; i < fframes.length; i++) {
|
|
524 |
IFFrame fframe = fframes[i];
|
|
525 |
if (fframe.contains(p)) {
|
|
516 | 526 |
if ((fframe.getSelected() == IFFrame.NOSELECT)) { |
517 | 527 |
fframe.setSelected(p, e); |
518 | 528 |
} else { |
519 | 529 |
fframe.setSelected(false); |
520 | 530 |
} |
521 | 531 |
} |
522 |
}
|
|
523 |
}
|
|
524 |
}
|
|
532 |
}
|
|
533 |
}
|
|
534 |
}
|
|
525 | 535 |
|
526 |
public int getSelectedGroup() {
|
|
527 |
return 0;
|
|
528 |
}
|
|
536 |
public int getSelectedGroup() {
|
|
537 |
return 0;
|
|
538 |
}
|
|
529 | 539 |
|
530 | 540 |
public Image getMapCursor(Point2D p) { |
531 | 541 |
if (!selectFFrameBasic) { |
532 | 542 |
return super.getMapCursor(p); |
533 | 543 |
} |
534 |
return getMapCursorGroup(p);
|
|
535 |
}
|
|
544 |
return getMapCursorGroup(p);
|
|
545 |
}
|
|
536 | 546 |
public Image getMapCursorGroup(Point2D p){ |
537 |
int select = getContains(p);
|
|
538 |
switch (select) {
|
|
539 |
case (RECT):
|
|
540 |
return iMove;
|
|
541 |
}
|
|
542 |
return null;
|
|
547 |
int select = getContains(p); |
|
548 |
switch (select) {
|
|
549 |
case (RECT):
|
|
550 |
return iMove;
|
|
551 |
}
|
|
552 |
return null;
|
|
543 | 553 |
} |
544 | 554 |
|
545 | 555 |
public IFFrameDialog getPropertyDialog() { |
546 | 556 |
return new FFrameBoxDialog(getLayout(),this); |
547 | 557 |
} |
548 | 558 |
public IFFrame cloneFFrame(LayoutPanel layout) { |
549 |
// Project p = ((ProjectExtension) PluginServices.getExtension(ProjectExtension.class)).getProject(); |
|
550 |
Project p = ProjectManager.getInstance().getCurrentProject();
|
|
551 |
IFFrame frame = null;
|
|
559 |
// Project p = ((ProjectExtension) PluginServices.getExtension(ProjectExtension.class)).getProject();
|
|
560 |
Project p = ProjectManager.getInstance().getCurrentProject();
|
|
561 |
IFFrame frame = null;
|
|
552 | 562 |
|
553 |
try {
|
|
554 |
frame = createFromXML(this.getXMLEntity(), p,layout);
|
|
555 |
} catch (OpenException e) {
|
|
556 |
e.showError();
|
|
557 |
} catch (SaveException e) {
|
|
558 |
e.showError();
|
|
559 |
}
|
|
560 |
frame.setLayout(layout);
|
|
563 |
try {
|
|
564 |
frame = createFromXML(this.getXMLEntity(), p,layout);
|
|
565 |
} catch (OpenException e) {
|
|
566 |
e.showError();
|
|
567 |
} catch (SaveException e) {
|
|
568 |
e.showError();
|
|
569 |
}
|
|
570 |
frame.setLayout(layout);
|
|
561 | 571 |
|
562 |
if (frame instanceof IFFrameViewDependence) { |
|
563 |
((IFFrameViewDependence) frame).initDependence(layout.getLayoutContext().getAllFFrames()); |
|
564 |
} |
|
565 |
frame.setFrameLayoutFactory(factory); |
|
566 |
cloneActions(frame); |
|
567 |
return frame; |
|
568 |
} |
|
572 |
if (frame instanceof IFFrameViewDependence) { |
|
573 |
((IFFrameViewDependence) frame).initDependence(layout.getLayoutContext().getAllFFrames()); |
|
574 |
} |
|
575 |
frame.setFrameLayoutFactory(factory); |
|
576 |
cloneActions(frame); |
|
577 |
return frame; |
|
578 |
} |
|
579 |
|
|
580 |
public static void registerPersistent() { |
|
581 |
PersistenceManager manager = ToolsLocator.getPersistenceManager(); |
|
582 |
if( manager.getDefinition(PERSISTENCE_DEFINITION_NAME)==null ) { |
|
583 |
DynStruct definition = manager.addDefinition( |
|
584 |
FFrameTable.class, |
|
585 |
PERSISTENCE_DEFINITION_NAME, |
|
586 |
"FFrameTable persistence definition", |
|
587 |
null, |
|
588 |
null |
|
589 |
); |
|
590 |
|
|
591 |
definition.extend(manager.getDefinition(FFrameGroup.PERSISTENCE_DEFINITION_NAME)); |
|
592 |
|
|
593 |
definition.addDynFieldInt(NUMCOLUMNS_FIELD).setMandatory(true); |
|
594 |
definition.addDynFieldInt(NUMROWS_FIELD).setMandatory(true); |
|
595 |
} |
|
596 |
} |
|
597 |
|
|
598 |
@Override |
|
599 |
public void loadFromState(PersistentState state) |
|
600 |
throws PersistenceException { |
|
601 |
super.loadFromState(state); |
|
602 |
numColumns = state.getInt(NUMCOLUMNS_FIELD); |
|
603 |
numRows = state.getInt(NUMROWS_FIELD); |
|
604 |
} |
|
605 |
|
|
606 |
@Override |
|
607 |
public void saveToState(PersistentState state) throws PersistenceException { |
|
608 |
super.saveToState(state); |
|
609 |
state.set(NUMCOLUMNS_FIELD, numColumns); |
|
610 |
state.set(NUMROWS_FIELD, numRows); |
|
611 |
} |
|
569 | 612 |
} |
Also available in: Unified diff