Statistics
| Revision:

svn-gvsig-desktop / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / layout / EventsHandler.java @ 3610

History | View | Annotate | Download (22.2 KB)

1
/*
2
 * Created on 27-jul-2004
3
 *
4
 */
5
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
6
 *
7
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
8
 *
9
 * This program is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU General Public License
11
 * as published by the Free Software Foundation; either version 2
12
 * of the License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program; if not, write to the Free Software
21
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
22
 *
23
 * For more information, contact:
24
 *
25
 *  Generalitat Valenciana
26
 *   Conselleria d'Infraestructures i Transport
27
 *   Av. Blasco Ib??ez, 50
28
 *   46010 VALENCIA
29
 *   SPAIN
30
 *
31
 *      +34 963862235
32
 *   gvsig@gva.es
33
 *      www.gvsig.gva.es
34
 *
35
 *    or
36
 *
37
 *   IVER T.I. S.A
38
 *   Salamanca 50
39
 *   46005 Valencia
40
 *   Spain
41
 *
42
 *   +34 963163400
43
 *   dac@iver.es
44
 */
45
package com.iver.cit.gvsig.gui.layout;
46

    
47
import java.awt.Cursor;
48
import java.awt.Point;
49
import java.awt.event.ActionEvent;
50
import java.awt.event.ActionListener;
51
import java.awt.event.ComponentEvent;
52
import java.awt.event.ComponentListener;
53
import java.awt.event.KeyEvent;
54
import java.awt.event.KeyListener;
55
import java.awt.event.MouseEvent;
56
import java.awt.event.MouseListener;
57
import java.awt.event.MouseMotionListener;
58
import java.awt.geom.Point2D;
59
import java.awt.geom.Rectangle2D;
60
import java.util.ArrayList;
61

    
62
import com.iver.andami.PluginServices;
63
import com.iver.cit.gvsig.gui.layout.fframes.IFFrame;
64
import com.iver.cit.gvsig.gui.layout.fframes.IFFrameEditable;
65

    
66

    
67
/**
68
 * Eventos que se realizan sobre el Layout.
69
 *
70
 * @author Vicente Caballero Navarro
71
 */
72
public class EventsHandler implements ActionListener, ComponentListener,
73
    MouseMotionListener, MouseListener, KeyListener {
74
    private Layout layout = null;
75
    private Point2D.Double m_pointSelected = null;
76
    private int index = 0;
77
    private ArrayList lastSelect = new ArrayList();
78
    private FLayoutFunctions events = null;
79
    private FLayoutZooms zooms = null;
80
    private static IFFrame[] selectFFrames;
81
    private int difX;
82
    private int difY;
83
    /**
84
     * Crea un nuevo EventsHandler.
85
     *
86
     * @param l Referencia al Layout.
87
     */
88
    public EventsHandler(Layout l) {
89
        layout = l;
90
        events = new FLayoutFunctions(layout);
91
        zooms = new FLayoutZooms(layout);
92
    }
93

    
94
    /**
95
     * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)
96
     */
97
    public void componentHidden(ComponentEvent arg0) {
98
    }
99

    
100
    /**
101
     * @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent)
102
     */
103
    public void componentMoved(ComponentEvent arg0) {
104
    }
105

    
106
    /**
107
     * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
108
     */
109
    public void componentResized(ComponentEvent arg0) {
110
        layout.fullRect();
111
    }
112

    
113
    /**
114
     * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)
115
     */
116
    public void componentShown(ComponentEvent arg0) {
117
    }
118

    
119
    /**
120
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
121
     */
122
    public void actionPerformed(ActionEvent arg0) {
123
        layout.repaint();
124
    }
125

    
126
    /**
127
     * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
128
     */
129
    public void mouseDragged(MouseEvent e) {
130
        if (e.getButton() != MouseEvent.BUTTON3) {
131
            layout.setLastPoint(e.getPoint());
132
            layout.repaint();
133
        } 
134
        if (layout.getTool() == Layout.EDIT){
135
                for (int i=0;i<layout.getFFrames().length;i++){
136
                        IFFrame frame=(IFFrame)layout.getFFrame(i);
137
                        if (frame instanceof IFFrameEditable){
138
                                ((IFFrameEditable)frame).pointDragged(FLayoutUtilities.toSheetPoint(e.getPoint(),layout.getAT()));
139
                                layout.setStatus(Layout.GRAPHICS);
140
                                
141
                        }
142
                }
143
                
144
        }
145
    }
146

    
147
    /**
148
     * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
149
     */
150
    public void mouseMoved(MouseEvent E) {
151
       if ((layout.getTool() == Layout.POLYLINE) ||
152
                (layout.getTool() == Layout.POLYGON) ||
153
                (layout.getTool() == Layout.LINE) ||
154
                (layout.getTool() == Layout.CIRCLE) ||
155
                (layout.getTool() == Layout.RECTANGLESIMPLE)) {
156
            layout.getGeometryAdapter().pointPosition(FLayoutUtilities.toSheetPoint(
157
                    E.getPoint(), layout.getAT()));
158
            layout.setStatus(Layout.GRAPHICS);
159
            layout.repaint();
160
        }
161

    
162
        if (layout.getTool() == Layout.SELECT) {
163
            Cursor cursor = null;
164
            Point2D.Double p = new Point2D.Double(E.getX(), E.getY());
165
            IFFrame[] fframes=layout.getFFrameSelected();
166
            for (int i = 0; i < fframes.length; i++) {
167
                if (fframes[i].getContains(p)!=IFFrame.NOSELECT){
168
                        cursor=fframes[i].getMapCursor(p);
169
                }
170
                if (cursor != null) {
171
                    layout.setMapCursor(cursor);
172
                } else {
173
                    layout.setMapCursor(Layout.icrux);
174
                }
175
            }
176
            ///layout.setStatus(Layout.SELECT);
177
        }
178
    }
179

    
180
    /**
181
     * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
182
     */
183
    public void mouseClicked(MouseEvent E) {
184
            if ((E.getClickCount() == 2) &&
185
                ((layout.getTool() == Layout.POLYLINE) ||
186
                (layout.getTool() == Layout.POLYGON))) {
187
                    delLastPoint();
188
            endGraphic();
189
        } else {
190
            if (E.getButton() == MouseEvent.BUTTON1) {
191
                if (layout.getTool() == Layout.SELECT) {
192
                    m_pointSelected = new Point2D.Double(E.getX(), E.getY());
193

    
194
                    if (layout.getFFrames().length > 0) {
195
                        ArrayList listSelect = new ArrayList();
196

    
197
                        for (int j = 0; j < layout.getFFrames().length; j++) {
198
                            if (((IFFrame) layout.getFFrame(j)).getContains(
199
                                        m_pointSelected) != IFFrame.NOSELECT) {
200
                                listSelect.add((IFFrame) layout.getFFrame(j));
201
                            }
202
                        }
203

    
204
                        if (listSelect.size() > 0) {
205
                            for (int k = 0; k < listSelect.size(); k++) {
206
                                if (((IFFrame) listSelect.get(k)).getSelected() != IFFrame.NOSELECT) {
207
                                    index = listSelect.size() - k;
208

    
209
                                    break;
210
                                }
211
                            }
212

    
213
                            if (!FLayoutUtilities.isEqualList(listSelect,
214
                                        lastSelect) ||
215
                                    (index > (listSelect.size() - 1))) {
216
                                index = 0;
217
                            }
218

    
219
                            for (int j = 0; j < layout.getFFrames().length;
220
                                    j++) {
221
                                IFFrame fframe = (IFFrame) layout.getFFrame(j);
222

    
223
                                if (!E.isShiftDown()) {
224
                                    fframe.setSelected(false);
225
                                } else {
226
                                    if (fframe.getSelected() != IFFrame.NOSELECT) {
227
                                        if (fframe.getContains(m_pointSelected) != IFFrame.NOSELECT) {
228
                                            fframe.setSelected(false);
229
                                        }
230
                                    }
231
                                }
232
                            }
233

    
234
                            ((IFFrame) listSelect.get((listSelect.size() - 1 -
235
                                index))).setSelected(true);
236
                            index++;
237
                            lastSelect = listSelect;
238
                        }
239

    
240
                        layout.setStatus(Layout.SELECT);
241
                        layout.repaint();
242

    
243
                        if (E.getClickCount() > 1) {
244
                            FLayoutGraphics flg = new FLayoutGraphics(layout);
245
                            flg.openFFrameDialog();
246
                            layout.setStatus(Layout.DESACTUALIZADO);
247
                            layout.repaint();
248

    
249
                            //layout.setStatus(Layout.SELECT);
250
                        }
251
                    }
252

    
253
                    PluginServices.getMainFrame().enableControls();
254
                }
255
            } else if (E.getButton() == MouseEvent.BUTTON2) {
256
            }
257
        }
258
    }
259

    
260
    /**
261
     * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
262
     */
263
    public void mouseEntered(MouseEvent arg0) {
264
        /* TODO        PluginServices.getMainFrame().getStatusBar().setMessage("0",
265
           layout.getAtributes().getNameUnit());
266
         
267
        if (layout.getTool() == Layout.PAN) {
268
            layout.setMapCursor(Layout.iLayoutpan);
269
        } else if (layout.getTool() == Layout.ZOOM_MAS) {
270
            layout.setMapCursor(Layout.iLayoutzoomin);
271
        } else if (layout.getTool() == Layout.ZOOM_MENOS) {
272
            layout.setMapCursor(Layout.iLayoutzoomout);
273
        } else if (layout.getTool() == Layout.VIEW_PAN) {
274
            layout.setMapCursor(Layout.ipan);
275
        } else if (layout.getTool() == Layout.VIEW_ZOOMIN) {
276
            layout.setMapCursor(Layout.izoomin);
277
        } else if (layout.getTool() == Layout.VIEW_ZOOMOUT) {
278
            layout.setMapCursor(Layout.izoomout);
279
        }
280
        */
281
    }
282

    
283
    /**
284
     * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
285
     */
286
    public void mouseExited(MouseEvent arg0) {
287
        ///TODO        PluginServices.getMainFrame().getStatusBar().setMessage("0", "");
288
    }
289

    
290
    /**
291
     * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
292
     */
293
    public void mousePressed(MouseEvent E) {
294
        if (E.getButton() == MouseEvent.BUTTON1) {
295
            Point pScreen = new Point(E.getX(), E.getY());
296
            layout.setPointAnt(pScreen);
297
            layout.setFirstPoint(layout.getPointAnt());
298

    
299
            if ((layout.getTool() == Layout.ZOOM_MAS) ||
300
                    (layout.getTool() == Layout.VIEW_ZOOMIN)) {
301
                layout.setStatus(Layout.ZOOM_MAS);
302
            } else if ((layout.getTool() == Layout.RECTANGLEVIEW) ||
303
                    (layout.getTool() == Layout.RECTANGLEPICTURE) ||
304
                    (layout.getTool() == Layout.RECTANGLESCALEBAR) ||
305
                    (layout.getTool() == Layout.RECTANGLELEGEND) ||
306
                    (layout.getTool() == Layout.RECTANGLENORTH) ||
307
                    (layout.getTool() == Layout.RECTANGLETEXT)||
308
                    (layout.getTool() == Layout.RECTANGLEBOX)) {
309
                layout.setStatus(Layout.RECTANGLE);
310
            } else if ((layout.getTool() == Layout.POINT) ) {
311
                    layout.getGeometryAdapter().addPoint(FLayoutUtilities.toSheetPoint(
312
                        E.getPoint(), layout.getAT()));
313
                    endGraphic();
314
                //layout.setStatus(Layout.GRAPHICS);
315
            } else if ((layout.getTool() == Layout.POLYLINE) ||
316
                    (layout.getTool() == Layout.POLYGON)) {
317
                layout.getGeometryAdapter().addPoint(FLayoutUtilities.toSheetPoint(
318
                        E.getPoint(), layout.getAT()));
319
                layout.setStatus(Layout.GRAPHICS);
320
            } else if ((layout.getTool() == Layout.LINE) ||
321
                    (layout.getTool() == Layout.CIRCLE) ||
322
                    (layout.getTool() == Layout.RECTANGLESIMPLE)) {
323
                if (layout.getGeometryAdapter().addPoint(FLayoutUtilities.toSheetPoint(
324
                                E.getPoint(), layout.getAT())) == 2) {
325
                    endGraphic();
326
                    layout.setStatus(Layout.DESACTUALIZADO);
327
                } else {
328
                    layout.setStatus(Layout.GRAPHICS);
329
                }
330
            } else if (layout.getTool() == Layout.PAN) {
331
                layout.getRectOrigin().setLocation(layout.getRect().x,
332
                    layout.getRect().y);
333
                layout.setStatus(Layout.PAN);
334
            } else if (layout.getTool() == Layout.VIEW_PAN) {
335
                /*        layout.getRectOrigin().setLocation(layout.getRect().x,
336
                   layout.getRect().y);
337
                 */
338
                layout.setStatus(Layout.VIEW_PAN);
339
            } else if (layout.getTool() == Layout.ZOOM_MENOS) {
340
                layout.setCancelDrawing(true);
341
            } else if ((layout.getTool() == Layout.ZOOM_MAS) ||
342
                    (layout.getTool() == Layout.PAN)) {
343
                layout.setCancelDrawing(true);
344
            } else if (layout.getTool() == Layout.SELECT) {
345
                m_pointSelected = new Point2D.Double(E.getX(), E.getY());
346

    
347
                for (int i = 0; i < layout.getFFrames().length; i++) {
348
                    IFFrame fframe = ((IFFrame) layout.getFFrame(i));
349

    
350
                    if (m_pointSelected != null) {
351
                        if (!E.isShiftDown()) {
352
                            if ((fframe.getSelected() != IFFrame.NOSELECT)) {
353
                                fframe.setSelected(m_pointSelected);
354
                            }
355
                        }
356
                    }
357

    
358
                    if (fframe.getSelected() != IFFrame.NOSELECT) {
359
                        layout.setIsReSel(false);
360
                    }
361
                }
362

    
363
                if ((layout.getLastPoint() != null) &&
364
                        (layout.getFirstPoint() != null)) {
365
                    layout.getLastPoint().setLocation(layout.getFirstPoint());
366
                }
367

    
368
                if (E.getClickCount() < 2) {
369
                    layout.setStatus(Layout.SELECT);
370
                    layout.repaint();
371
                }
372
            } else if (layout.getTool() == Layout.SET_TAG) {
373
                m_pointSelected = new Point2D.Double(E.getX(), E.getY());
374

    
375
                for (int i = 0; i < layout.getFFrames().length; i++) {
376
                    IFFrame fframe = ((IFFrame) layout.getFFrame(i));
377

    
378
                    if (m_pointSelected != null) {
379
                        if (fframe.contains(m_pointSelected)) {
380
                            fframe.openTag();
381
                        }
382
                    }
383
                }
384
            } else if (layout.getTool() == Layout.EDIT){
385
                    for (int i=0;i<layout.getFFrames().length;i++){
386
                            IFFrame frame=(IFFrame)layout.getFFrame(i);
387
                            if (frame instanceof IFFrameEditable){
388
                                    ((IFFrameEditable)frame).pointPressed(FLayoutUtilities.toSheetPoint(E.getPoint(),layout.getAT()));
389
                            }
390
                    }
391
            }
392
        } else if (E.getButton() == MouseEvent.BUTTON3) {
393
            new Popupmenu(layout, E.getPoint());
394
        }
395
    }
396

    
397
    /**
398
     * @see java.awt.event.MouseListener#mouseReleassed(java.awt.event.MouseEvent)
399
     */
400
    public void mouseReleased(MouseEvent E) {
401
        if (E.getButton() != MouseEvent.BUTTON3) {
402
            layout.setLastPoint(E.getPoint());
403
        }
404

    
405
        if (E.getButton() == MouseEvent.BUTTON1) {
406
            Point p1 = layout.getFirstPoint();
407
            Point p2 = new Point(E.getX(), E.getY());
408

    
409
            if (layout.getTool() == Layout.ZOOM_MAS) {
410
                zooms.setZoomIn(p1, p2);
411
                layout.refresh();
412
            } else if ((layout.getTool() == Layout.ZOOM_MENOS) ||
413
                    (E.getButton() == MouseEvent.BUTTON3)) {
414
                zooms.setZoomOut(p2);
415
                layout.refresh();
416
            } else if (layout.getTool() == Layout.SELECT) {
417
                events.setSelect();
418
                layout.refresh();
419
            } else if ((layout.getTool() == Layout.RECTANGLEVIEW) ||
420
                    (layout.getTool() == Layout.RECTANGLEPICTURE) ||
421
                    (layout.getTool() == Layout.RECTANGLESCALEBAR) ||
422
                    (layout.getTool() == Layout.RECTANGLELEGEND) ||
423
                    (layout.getTool() == Layout.RECTANGLETEXT) ||
424
                    (layout.getTool() == Layout.RECTANGLENORTH)||
425
                    (layout.getTool() == Layout.RECTANGLEBOX)) {
426
                events.setFFrame();
427
                PluginServices.getMainFrame().enableControls();
428
                layout.refresh();
429
            } else if (layout.getTool() == Layout.VIEW_ZOOMIN) {
430
                zooms.setViewZoomIn(p1, p2);
431
                layout.refresh();
432
            } else if (layout.getTool() == Layout.VIEW_ZOOMOUT) {
433
                zooms.setViewZoomOut(p2);
434
                layout.refresh();
435
            } else if (layout.getTool() == Layout.VIEW_PAN) {
436
                events.setViewPan(p1, p2);
437
                layout.refresh();
438
            } else if ((layout.getTool() == Layout.POLYLINE) ||
439
                    (layout.getTool() == Layout.POLYGON)) {
440
                layout.setStatus(Layout.GRAPHICS);
441
                layout.repaint();
442
            } else if (layout.getTool() == Layout.EDIT){
443
                    for (int i=0;i<layout.getFFrames().length;i++){
444
                            IFFrame frame=(IFFrame)layout.getFFrame(i);
445
                            if (frame instanceof IFFrameEditable){
446
                                    if (frame.getSelected()!=IFFrame.NOSELECT && ((IFFrameEditable)frame).isEditing()){
447
                                            /*IFFrame fframeAux=frame.cloneFFrame(layout);
448
                                            //((IFFrameEditable)fframeAux).startEditing();
449
                                            ((IFFrameEditable)fframeAux).pointReleased(FLayoutUtilities.toSheetPoint(E.getPoint(),layout.getAT()));
450
                                            layout.getEFS().modifyFFrame(frame,fframeAux);
451
                                            layout.updateFFrames();*/
452
                                            IFFrame fframeAux=frame.cloneFFrame(layout);
453
                                            ((IFFrameEditable)fframeAux).startEditing();
454
                                            ((IFFrameEditable)fframeAux).pointReleased(FLayoutUtilities.toSheetPoint(E.getPoint(),layout.getAT()),((IFFrameEditable)frame).getGeometry());
455
                                            layout.getEFS().modifyFFrame(frame,fframeAux);
456
                                            fframeAux.getBoundingBox(layout.getAT());
457
                                            layout.updateFFrames();
458
                                    }
459
                            }
460
                    }
461
                    layout.refresh();
462
            } else if (layout.getTool() == Layout.PAN) {
463
                layout.refresh();
464
            }
465
            ///layout.refresh();
466
            layout.setCancelDrawing(false);
467
        } else if (E.getButton() == MouseEvent.BUTTON3) {
468
        }
469

    
470
      
471
    }
472
    private void delLastPoint(){
473
            layout.getGeometryAdapter().delLastPoint();
474
    }
475
    /**
476
     * DOCUMENT ME!
477
     */
478
    private void endGraphic() {
479
        if ((layout.getTool() == Layout.LINE) ||
480
                (layout.getTool() == Layout.POLYLINE) ||
481
                (layout.getTool() == Layout.POLYGON) ||
482
                (layout.getTool() == Layout.CIRCLE) ||
483
                (layout.getTool() == Layout.RECTANGLESIMPLE) ||
484
                (layout.getTool() == Layout.POINT)) {
485
            layout.getGeometryAdapter().end();
486
            PluginServices.getMainFrame().enableControls();
487
            events.setFFrame();
488
            layout.initGeometryAdapter();
489
            layout.refresh();
490
        }
491
    }
492

    
493
        public void keyPressed(KeyEvent arg0) {
494
                IFFrame[] fframes=layout.getFFrameSelected();
495
                int dif=10;
496
                if (arg0.getModifiers()==KeyEvent.CTRL_MASK){
497
                switch(arg0.getKeyCode()){
498
                case (KeyEvent.VK_C):
499
                        selectFFrames=new IFFrame[fframes.length];
500
                        for (int i=0;i<fframes.length;i++){
501
                                selectFFrames[i]=fframes[i].cloneFFrame(layout);
502
                        }
503
                        break;
504
                case KeyEvent.VK_X:
505
                        selectFFrames=new IFFrame[fframes.length];
506
                        for (int i=0;i<fframes.length;i++){
507
                                selectFFrames[i]=fframes[i].cloneFFrame(layout);
508
                        }
509
                        layout.delFFrameSelected();
510
                        layout.refresh();
511
                        break;
512
                
513
                }
514
                }else{
515
                switch (arg0.getKeyCode()) {
516
                case KeyEvent.VK_LEFT:
517
                        difX=difX-dif;
518
                        break;
519
                case KeyEvent.VK_RIGHT:
520
                        difX=difX+dif;
521
                        break;
522
                case KeyEvent.VK_UP:
523
                        difY=difY-dif;
524
                        break;
525
                case KeyEvent.VK_DOWN:
526
                        difY=difY+dif;
527
                        break;
528
                }
529
        /*        if (isFirst){
530
                        layout.setFirstPoint(new Point((int)fframes[0].getBoundingBox(layout.getAT()).getX(),(int)fframes[0].getBoundingBox(layout.getAT()).getY()));
531
                        isFirst=false;
532
                }
533
                layout.setLastPoint(new Point((int)layout.getFirstPoint().getX()+difX,(int)layout.getFirstPoint().getY()+difY));
534
                layout.setStatus(Layout.SELECT);
535
                layout.repaint();
536
                */
537
                }
538
        }
539

    
540
        public void keyReleased(KeyEvent arg0) {
541
                IFFrame[] fframes=layout.getFFrameSelected();
542
                if (arg0.getModifiers()==KeyEvent.CTRL_MASK){
543
                        switch(arg0.getKeyCode()){
544
                        case KeyEvent.VK_V:
545
                                IFFrame copyFFrame=null;
546
                                layout.getEFS().startComplexCommand();
547
                                for (int i=0;i<selectFFrames.length;i++){
548
                                        copyFFrame=selectFFrames[i].cloneFFrame(layout);
549
                                        if (i==0)
550
                                                layout.addFFrame(copyFFrame,true,true);
551
                                        else
552
                                                layout.addFFrame(copyFFrame,false,true);
553
                                }
554
                                layout.getEFS().endComplexCommand();
555
                                layout.refresh();
556
                                break;
557
                        case KeyEvent.VK_Z:
558
                                layout.getEFS().undo();
559
                                layout.updateFFrames();
560
                                layout.refresh();
561
                                PluginServices.getMainFrame().enableControls();
562
                                break;
563
                        case KeyEvent.VK_Y:
564
                                layout.getEFS().redo();
565
                                layout.updateFFrames();
566
                                layout.refresh();
567
                                PluginServices.getMainFrame().enableControls();
568
                                break;
569
                        }
570
                }else{
571
                        switch (arg0.getKeyCode()) {
572
                        case KeyEvent.VK_LEFT:
573
                        case KeyEvent.VK_RIGHT:
574
                        case KeyEvent.VK_UP:
575
                        case KeyEvent.VK_DOWN:
576
                                
577
                                layout.getEFS().startComplexCommand();
578
                                for (int i=0;i<fframes.length;i++){
579
                                        IFFrame fframeAux=fframes[i].cloneFFrame(layout);
580
                                        Rectangle2D r=getRectMove(fframes[i].getBoundingBox(layout.getAT()),difX,difY);
581
                                        fframeAux.setBoundBox(FLayoutUtilities.toSheetRect(r,layout.getAT()));
582
                                        layout.getEFS().modifyFFrame(fframes[i],fframeAux);
583
                                }
584
                                layout.getEFS().endComplexCommand();
585
                                layout.updateFFrames();
586
                                layout.refresh();
587
                                break;
588
                        }
589
                }
590
                        difX=0;
591
                        difY=0;
592
                
593
        }
594

    
595
        public void keyTyped(KeyEvent arg0) {
596
                // TODO Auto-generated method stub
597
                
598
        }
599
        private Rectangle2D getRectMove(Rectangle2D r,int difX,int difY) {
600
                Rectangle2D rectMove=new Rectangle2D.Double();
601
                rectMove.setRect(r.getX()+difX,r.getY()+difY,r.getWidth(),r.getHeight());
602
                return rectMove;
603
        }
604
}