Revision 33420 branches/v2_0_0_prep/applications/appgvSIG/src/org/gvsig/app/project/documents/layout/fframes/FFrameTable.java

View differences:

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