svn-gvsig-desktop / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / layout / EventsHandler.java @ 4203
History | View | Annotate | Download (22.2 KB)
1 | 312 | fernando | /*
|
---|---|---|---|
2 | * Created on 27-jul-2004
|
||
3 | *
|
||
4 | */
|
||
5 | 1103 | fjp | /* 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 | 312 | fernando | 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 | 3550 | caballero | import java.awt.event.KeyEvent; |
54 | import java.awt.event.KeyListener; |
||
55 | 312 | fernando | 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 | 2423 | caballero | import com.iver.andami.PluginServices; |
63 | 2263 | vcaballero | import com.iver.cit.gvsig.gui.layout.fframes.IFFrame; |
64 | 3550 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.IFFrameEditable; |
65 | 312 | fernando | |
66 | 2263 | vcaballero | |
67 | 312 | fernando | /**
|
68 | * Eventos que se realizan sobre el Layout.
|
||
69 | *
|
||
70 | * @author Vicente Caballero Navarro
|
||
71 | */
|
||
72 | public class EventsHandler implements ActionListener, ComponentListener, |
||
73 | 3550 | caballero | 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 | 3575 | caballero | private static IFFrame[] selectFFrames; |
81 | 3550 | caballero | 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 | 394 | vcaballero | |
94 | 3550 | caballero | /**
|
95 | * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)
|
||
96 | */
|
||
97 | public void componentHidden(ComponentEvent arg0) { |
||
98 | } |
||
99 | 312 | fernando | |
100 | 3550 | caballero | /**
|
101 | * @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent)
|
||
102 | */
|
||
103 | public void componentMoved(ComponentEvent arg0) { |
||
104 | } |
||
105 | 312 | fernando | |
106 | 3550 | caballero | /**
|
107 | * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
|
||
108 | */
|
||
109 | public void componentResized(ComponentEvent arg0) { |
||
110 | layout.fullRect(); |
||
111 | } |
||
112 | 312 | fernando | |
113 | 3550 | caballero | /**
|
114 | * @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)
|
||
115 | */
|
||
116 | public void componentShown(ComponentEvent arg0) { |
||
117 | } |
||
118 | 312 | fernando | |
119 | 3550 | caballero | /**
|
120 | * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
|
||
121 | */
|
||
122 | public void actionPerformed(ActionEvent arg0) { |
||
123 | layout.repaint(); |
||
124 | } |
||
125 | 312 | fernando | |
126 | 3550 | caballero | /**
|
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 | 312 | fernando | |
147 | 3550 | caballero | /**
|
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 | 312 | fernando | |
162 | 3550 | caballero | 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 | 312 | fernando | |
180 | 3550 | caballero | /**
|
181 | * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
|
||
182 | */
|
||
183 | public void mouseClicked(MouseEvent E) { |
||
184 | 3575 | caballero | if ((E.getClickCount() == 2) && |
185 | 3550 | caballero | ((layout.getTool() == Layout.POLYLINE) || |
186 | (layout.getTool() == Layout.POLYGON))) { |
||
187 | 3575 | caballero | delLastPoint(); |
188 | 3550 | caballero | 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 | 312 | fernando | |
194 | 3550 | caballero | if (layout.getFFrames().length > 0) { |
195 | ArrayList listSelect = new ArrayList(); |
||
196 | 312 | fernando | |
197 | 3550 | caballero | 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 | 312 | fernando | |
204 | 3550 | caballero | 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 | 312 | fernando | |
209 | 3550 | caballero | break;
|
210 | } |
||
211 | } |
||
212 | 312 | fernando | |
213 | 3550 | caballero | if (!FLayoutUtilities.isEqualList(listSelect,
|
214 | lastSelect) || |
||
215 | (index > (listSelect.size() - 1))) {
|
||
216 | index = 0;
|
||
217 | } |
||
218 | 312 | fernando | |
219 | 3550 | caballero | for (int j = 0; j < layout.getFFrames().length; |
220 | j++) { |
||
221 | IFFrame fframe = (IFFrame) layout.getFFrame(j); |
||
222 | 312 | fernando | |
223 | 3550 | caballero | 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 | 312 | fernando | |
234 | 3550 | caballero | ((IFFrame) listSelect.get((listSelect.size() - 1 -
|
235 | index))).setSelected(true);
|
||
236 | index++; |
||
237 | lastSelect = listSelect; |
||
238 | } |
||
239 | 312 | fernando | |
240 | 3550 | caballero | layout.setStatus(Layout.SELECT); |
241 | layout.repaint(); |
||
242 | 312 | fernando | |
243 | 3550 | caballero | if (E.getClickCount() > 1) { |
244 | FLayoutGraphics flg = new FLayoutGraphics(layout);
|
||
245 | flg.openFFrameDialog(); |
||
246 | layout.setStatus(Layout.DESACTUALIZADO); |
||
247 | layout.repaint(); |
||
248 | 312 | fernando | |
249 | 3550 | caballero | //layout.setStatus(Layout.SELECT);
|
250 | } |
||
251 | } |
||
252 | 312 | fernando | |
253 | 3550 | caballero | PluginServices.getMainFrame().enableControls(); |
254 | } |
||
255 | } else if (E.getButton() == MouseEvent.BUTTON2) { |
||
256 | } |
||
257 | } |
||
258 | } |
||
259 | 312 | fernando | |
260 | 3550 | caballero | /**
|
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 | 312 | fernando | |
283 | 3550 | caballero | /**
|
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 | 312 | fernando | |
290 | 3550 | caballero | /**
|
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 | 312 | fernando | |
299 | 3550 | caballero | 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 | 3610 | caballero | (layout.getTool() == Layout.RECTANGLETEXT)|| |
308 | (layout.getTool() == Layout.RECTANGLEBOX)) { |
||
309 | 3550 | caballero | 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 | 312 | fernando | |
347 | 3550 | caballero | for (int i = 0; i < layout.getFFrames().length; i++) { |
348 | IFFrame fframe = ((IFFrame) layout.getFFrame(i)); |
||
349 | 394 | vcaballero | |
350 | 3550 | caballero | if (m_pointSelected != null) { |
351 | if (!E.isShiftDown()) {
|
||
352 | if ((fframe.getSelected() != IFFrame.NOSELECT)) {
|
||
353 | fframe.setSelected(m_pointSelected); |
||
354 | } |
||
355 | } |
||
356 | } |
||
357 | 312 | fernando | |
358 | 3550 | caballero | if (fframe.getSelected() != IFFrame.NOSELECT) {
|
359 | layout.setIsReSel(false);
|
||
360 | } |
||
361 | } |
||
362 | 312 | fernando | |
363 | 3550 | caballero | if ((layout.getLastPoint() != null) && |
364 | (layout.getFirstPoint() != null)) {
|
||
365 | layout.getLastPoint().setLocation(layout.getFirstPoint()); |
||
366 | } |
||
367 | 312 | fernando | |
368 | 3550 | caballero | 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 | 312 | fernando | |
375 | 3550 | caballero | for (int i = 0; i < layout.getFFrames().length; i++) { |
376 | IFFrame fframe = ((IFFrame) layout.getFFrame(i)); |
||
377 | 312 | fernando | |
378 | 3550 | caballero | 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 | 394 | vcaballero | |
397 | 3550 | caballero | /**
|
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 | 394 | vcaballero | |
405 | 3550 | caballero | 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 | 3610 | caballero | (layout.getTool() == Layout.RECTANGLENORTH)|| |
425 | (layout.getTool() == Layout.RECTANGLEBOX)) { |
||
426 | 3550 | caballero | 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 | 3575 | caballero | layout.refresh(); |
462 | } else if (layout.getTool() == Layout.PAN) { |
||
463 | layout.refresh(); |
||
464 | 3550 | caballero | } |
465 | 3575 | caballero | ///layout.refresh();
|
466 | 3550 | caballero | layout.setCancelDrawing(false);
|
467 | } else if (E.getButton() == MouseEvent.BUTTON3) { |
||
468 | } |
||
469 | |||
470 | |||
471 | } |
||
472 | 3575 | caballero | private void delLastPoint(){ |
473 | layout.getGeometryAdapter().delLastPoint(); |
||
474 | } |
||
475 | 3550 | caballero | /**
|
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 | 1074 | vcaballero | } |
503 | 3550 | caballero | 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 | 1074 | vcaballero | } |
514 | 3550 | caballero | }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 | 1074 | vcaballero | } |
539 | 312 | fernando | |
540 | 3550 | caballero | 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 | 3575 | caballero | 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 | 1074 | vcaballero | } |
570 | 3550 | caballero | }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 | 1074 | vcaballero | } |
590 | 3550 | caballero | difX=0;
|
591 | difY=0;
|
||
592 | |||
593 | } |
||
594 | 312 | fernando | |
595 | 3550 | caballero | public void keyTyped(KeyEvent arg0) { |
596 | // TODO Auto-generated method stub
|
||
597 | |||
598 | 1074 | vcaballero | } |
599 | 3550 | caballero | 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 | 312 | fernando | } |