root / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / layout / Layout.java @ 6117
History | View | Annotate | Download (45 KB)
1 | 312 | fernando | /*
|
---|---|---|---|
2 | * Created on 20-feb-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.Color; |
||
48 | 2342 | vcaballero | import java.awt.Component; |
49 | 312 | fernando | import java.awt.Cursor; |
50 | import java.awt.Graphics; |
||
51 | import java.awt.Graphics2D; |
||
52 | import java.awt.Image; |
||
53 | import java.awt.Point; |
||
54 | import java.awt.Rectangle; |
||
55 | import java.awt.Toolkit; |
||
56 | import java.awt.event.ActionEvent; |
||
57 | import java.awt.event.KeyEvent; |
||
58 | import java.awt.geom.AffineTransform; |
||
59 | import java.awt.geom.Rectangle2D; |
||
60 | import java.awt.image.BufferedImage; |
||
61 | import java.awt.print.PageFormat; |
||
62 | import java.awt.print.Printable; |
||
63 | import java.awt.print.PrinterException; |
||
64 | import java.awt.print.PrinterJob; |
||
65 | 1406 | fernando | import java.beans.PropertyChangeEvent; |
66 | import java.beans.PropertyChangeListener; |
||
67 | 2342 | vcaballero | import java.io.File; |
68 | 312 | fernando | import java.util.ArrayList; |
69 | 396 | vcaballero | import java.util.Hashtable; |
70 | 312 | fernando | |
71 | import javax.print.Doc; |
||
72 | import javax.print.DocFlavor; |
||
73 | import javax.print.DocPrintJob; |
||
74 | import javax.print.PrintException; |
||
75 | import javax.print.PrintService; |
||
76 | import javax.print.PrintServiceLookup; |
||
77 | import javax.print.ServiceUI; |
||
78 | import javax.print.SimpleDoc; |
||
79 | import javax.print.attribute.PrintRequestAttributeSet; |
||
80 | import javax.print.event.PrintJobAdapter; |
||
81 | import javax.print.event.PrintJobEvent; |
||
82 | import javax.print.event.PrintJobListener; |
||
83 | import javax.swing.AbstractAction; |
||
84 | import javax.swing.Action; |
||
85 | import javax.swing.ImageIcon; |
||
86 | 2342 | vcaballero | import javax.swing.JFileChooser; |
87 | 2475 | caballero | import javax.swing.JOptionPane; |
88 | 312 | fernando | import javax.swing.JPanel; |
89 | import javax.swing.KeyStroke; |
||
90 | 2342 | vcaballero | import javax.swing.filechooser.FileFilter; |
91 | 312 | fernando | |
92 | 3106 | caballero | import org.apache.log4j.Logger; |
93 | 312 | fernando | |
94 | 3106 | caballero | import com.iver.andami.PluginServices; |
95 | import com.iver.andami.messages.NotificationManager; |
||
96 | import com.iver.andami.ui.mdiManager.SingletonView; |
||
97 | import com.iver.andami.ui.mdiManager.ViewInfo; |
||
98 | import com.iver.andami.ui.mdiManager.ViewListener; |
||
99 | import com.iver.cit.gvsig.AddLayer; |
||
100 | import com.iver.cit.gvsig.fmap.ColorEvent; |
||
101 | import com.iver.cit.gvsig.fmap.DriverException; |
||
102 | import com.iver.cit.gvsig.fmap.ExtentEvent; |
||
103 | 5939 | jmvivo | import com.iver.cit.gvsig.fmap.ProjectionEvent; |
104 | 3106 | caballero | import com.iver.cit.gvsig.fmap.ViewPortListener; |
105 | 3548 | caballero | import com.iver.cit.gvsig.fmap.core.adapter.CircleAdapter; |
106 | import com.iver.cit.gvsig.fmap.core.adapter.GeometryAdapter; |
||
107 | import com.iver.cit.gvsig.fmap.core.adapter.PointAdapter; |
||
108 | import com.iver.cit.gvsig.fmap.core.adapter.PolyLineAdapter; |
||
109 | import com.iver.cit.gvsig.fmap.core.adapter.PolygonAdapter; |
||
110 | import com.iver.cit.gvsig.fmap.core.adapter.RectangleAdapter; |
||
111 | 4120 | caballero | import com.iver.cit.gvsig.fmap.edition.commands.CommandListener; |
112 | 3106 | caballero | import com.iver.cit.gvsig.fmap.layers.XMLException; |
113 | 3548 | caballero | import com.iver.cit.gvsig.gui.layout.commands.DefaultEditableFeatureSource; |
114 | import com.iver.cit.gvsig.gui.layout.commands.EditableFeatureSource; |
||
115 | 3106 | caballero | import com.iver.cit.gvsig.gui.layout.dialogs.FConfigLayoutDialog; |
116 | import com.iver.cit.gvsig.gui.layout.fframes.FFrame; |
||
117 | 4775 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.FFrameTable; |
118 | 3106 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.FFrameGraphics; |
119 | import com.iver.cit.gvsig.gui.layout.fframes.FFrameGroup; |
||
120 | import com.iver.cit.gvsig.gui.layout.fframes.FFrameLegend; |
||
121 | import com.iver.cit.gvsig.gui.layout.fframes.FFrameNorth; |
||
122 | import com.iver.cit.gvsig.gui.layout.fframes.FFramePicture; |
||
123 | import com.iver.cit.gvsig.gui.layout.fframes.FFrameScaleBar; |
||
124 | import com.iver.cit.gvsig.gui.layout.fframes.FFrameText; |
||
125 | import com.iver.cit.gvsig.gui.layout.fframes.FFrameView; |
||
126 | import com.iver.cit.gvsig.gui.layout.fframes.IFFrame; |
||
127 | 4845 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.IFFrameEditableVertex; |
128 | 3548 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.IFFrameLayoutDependence; |
129 | 3680 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.IFFrameUseFMap; |
130 | 3135 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.IFFrameViewDependence; |
131 | 3610 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameBoxDialog; |
132 | 3106 | caballero | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameGraphicsDialog; |
133 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameGroupDialog; |
||
134 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameLegendDialog; |
||
135 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameNorthDialog; |
||
136 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFramePictureDialog; |
||
137 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameScaleBarDialog; |
||
138 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameTextDialog; |
||
139 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.FFrameViewDialog; |
||
140 | import com.iver.cit.gvsig.gui.layout.fframes.dialogs.IFFrameDialog; |
||
141 | import com.iver.cit.gvsig.gui.project.MapProperties; |
||
142 | 3185 | caballero | import com.iver.cit.gvsig.gui.project.OpenException; |
143 | import com.iver.cit.gvsig.gui.project.SaveException; |
||
144 | 3106 | caballero | import com.iver.cit.gvsig.project.Project; |
145 | import com.iver.cit.gvsig.project.ProjectMap; |
||
146 | import com.iver.utiles.GenericFileFilter; |
||
147 | import com.iver.utiles.XMLEntity; |
||
148 | |||
149 | 312 | fernando | /**
|
150 | * Mapa.
|
||
151 | 5446 | fjp | *
|
152 | 312 | fernando | * @author Vicente Caballero Navarro
|
153 | */
|
||
154 | 1074 | vcaballero | public class Layout extends JPanel implements SingletonView, ViewPortListener, |
155 | 5729 | caballero | ViewListener, CommandListener { |
156 | private static Logger logger = Logger.getLogger(Layout.class.getName()); |
||
157 | 4120 | caballero | |
158 | 5729 | caballero | public static final int ZOOM_MAS = 1; |
159 | 4120 | caballero | |
160 | 5729 | caballero | public static final int ZOOM_MENOS = 2; |
161 | 4120 | caballero | |
162 | 5729 | caballero | public static final int PAN = 3; |
163 | 4120 | caballero | |
164 | 5729 | caballero | public static final int DESACTUALIZADO = 4; |
165 | 4120 | caballero | |
166 | 5729 | caballero | public static final int ACTUALIZADO = 5; |
167 | 4775 | caballero | |
168 | 5729 | caballero | public static final int SELECT = 6; |
169 | 4775 | caballero | |
170 | 5729 | caballero | public static final int RECTANGLE = 10; |
171 | 4120 | caballero | |
172 | 5729 | caballero | public static final int RECTANGLEVIEW = 11; |
173 | 312 | fernando | |
174 | 5729 | caballero | public static final int RECTANGLEPICTURE = 12; |
175 | 312 | fernando | |
176 | 5729 | caballero | public static final int RECTANGLESCALEBAR = 13; |
177 | 312 | fernando | |
178 | 5729 | caballero | public static final int RECTANGLELEGEND = 14; |
179 | 312 | fernando | |
180 | 5729 | caballero | public static final int RECTANGLETEXT = 15; |
181 | 312 | fernando | |
182 | 5729 | caballero | public static final int RECTANGLEGROUP = 16; |
183 | 312 | fernando | |
184 | 5729 | caballero | public static final int RECTANGLESYMBOL = 17; |
185 | 312 | fernando | |
186 | 5729 | caballero | public static final int RECTANGLENORTH = 18; |
187 | 312 | fernando | |
188 | 5729 | caballero | public static final int RECTANGLEBOX = 19; |
189 | 312 | fernando | |
190 | 5729 | caballero | public static final int GRAPHICS = 20; |
191 | 5474 | caballero | |
192 | 5729 | caballero | public static final int POINT = 21; |
193 | 312 | fernando | |
194 | 5729 | caballero | public static final int LINE = 22; |
195 | 312 | fernando | |
196 | 5729 | caballero | public static final int POLYLINE = 23; |
197 | 312 | fernando | |
198 | 5729 | caballero | public static final int RECTANGLESIMPLE = 24; |
199 | 312 | fernando | |
200 | 5729 | caballero | public static final int CIRCLE = 25; |
201 | 312 | fernando | |
202 | 5729 | caballero | public static final int POLYGON = 26; |
203 | 312 | fernando | |
204 | 5729 | caballero | public static final int VIEW_ZOOMIN = 30; |
205 | 312 | fernando | |
206 | 5729 | caballero | public static final int VIEW_ZOOMOUT = 31; |
207 | 312 | fernando | |
208 | 5729 | caballero | public static final int VIEW_FULL = 32; |
209 | 312 | fernando | |
210 | 5729 | caballero | public static final int VIEW_PAN = 33; |
211 | 312 | fernando | |
212 | 5729 | caballero | public static final int SET_TAG = 34; |
213 | 312 | fernando | |
214 | 5729 | caballero | public static final int EDIT = 40; |
215 | 312 | fernando | |
216 | 5729 | caballero | public static final Image iLayoutpan = new ImageIcon(AddLayer.class |
217 | .getClassLoader().getResource("images/LayoutHand.gif")).getImage();
|
||
218 | 312 | fernando | |
219 | 5729 | caballero | public static final Image ipan = new ImageIcon(AddLayer.class |
220 | .getClassLoader().getResource("images/Hand.gif")).getImage();
|
||
221 | 1550 | vcaballero | |
222 | 5729 | caballero | public static final Image iLayoutzoomin = new ImageIcon(AddLayer.class |
223 | .getClassLoader().getResource("images/LayoutZoomInCursor.gif"))
|
||
224 | .getImage(); |
||
225 | 1550 | vcaballero | |
226 | 5729 | caballero | public static final Image izoomin = new ImageIcon(AddLayer.class |
227 | .getClassLoader().getResource("images/ZoomInCursor.gif"))
|
||
228 | .getImage(); |
||
229 | 1550 | vcaballero | |
230 | 5729 | caballero | public static final Image iLayoutzoomout = new ImageIcon(AddLayer.class |
231 | .getClassLoader().getResource("images/LayoutZoomOutCursor.gif"))
|
||
232 | .getImage(); |
||
233 | 1550 | vcaballero | |
234 | 5729 | caballero | public static final Image izoomout = new ImageIcon(AddLayer.class |
235 | .getClassLoader().getResource("images/ZoomOutCursor.gif"))
|
||
236 | .getImage(); |
||
237 | 312 | fernando | |
238 | 5729 | caballero | public static final Image iinfo = new ImageIcon(AddLayer.class |
239 | .getClassLoader().getResource("images/InfoCursor.gif")).getImage();
|
||
240 | 1550 | vcaballero | |
241 | 5729 | caballero | public static final Image icrux = new ImageIcon(AddLayer.class |
242 | .getClassLoader().getResource("images/CruxCursor.png")).getImage();
|
||
243 | 312 | fernando | |
244 | 5729 | caballero | public static final Image itag = new ImageIcon(AddLayer.class |
245 | .getClassLoader().getResource("images/tagCursor.gif")).getImage();
|
||
246 | 312 | fernando | |
247 | 5729 | caballero | public static final Image iPoint = new ImageIcon(AddLayer.class |
248 | .getClassLoader().getResource("images/PointCursor.png")).getImage();
|
||
249 | 312 | fernando | |
250 | 5729 | caballero | public static final Image iRect = new ImageIcon(AddLayer.class |
251 | .getClassLoader().getResource("images/RectCursor.png")).getImage();
|
||
252 | 312 | fernando | |
253 | 5729 | caballero | public static final Image iLine = new ImageIcon(AddLayer.class |
254 | .getClassLoader().getResource("images/LineCursor.png")).getImage();
|
||
255 | 312 | fernando | |
256 | 5729 | caballero | public static final Image iRectangle = new ImageIcon(AddLayer.class |
257 | .getClassLoader().getResource("images/RectangleCursor.png"))
|
||
258 | .getImage(); |
||
259 | 1281 | fjp | |
260 | 5729 | caballero | public static final Image iCircle = new ImageIcon(AddLayer.class |
261 | .getClassLoader().getResource("images/CircleCursor.png"))
|
||
262 | .getImage(); |
||
263 | 312 | fernando | |
264 | 5729 | caballero | public static final Image iPoligon = new ImageIcon(AddLayer.class |
265 | .getClassLoader().getResource("images/PoligonCursor.png"))
|
||
266 | .getImage(); |
||
267 | 312 | fernando | |
268 | 5729 | caballero | public static Hashtable nums = new Hashtable(); |
269 | 312 | fernando | |
270 | 5729 | caballero | private Point origin = new Point(50, 50); |
271 | 312 | fernando | |
272 | 5729 | caballero | private Point rectOrigin = new Point(origin); |
273 | 312 | fernando | |
274 | 5729 | caballero | private Rectangle2D.Double rect = new Rectangle2D.Double(rectOrigin.x, |
275 | rectOrigin.y, 400, 300); |
||
276 | 312 | fernando | |
277 | 5729 | caballero | private Point m_FirstPoint = new Point(0, 0); |
278 | 312 | fernando | |
279 | 5729 | caballero | private Point m_PointAnt = new Point(0, 0); |
280 | 312 | fernando | |
281 | 5729 | caballero | private Point m_LastPoint = new Point(0, 0); |
282 | 312 | fernando | |
283 | 5729 | caballero | private EventsHandler events;
|
284 | 312 | fernando | |
285 | 5729 | caballero | private int tool = ZOOM_MAS; |
286 | 312 | fernando | |
287 | 5729 | caballero | private int status = DESACTUALIZADO; |
288 | 312 | fernando | |
289 | 5729 | caballero | private BufferedImage img = null; |
290 | 312 | fernando | |
291 | 5729 | caballero | private BufferedImage imgRuler = null; |
292 | 312 | fernando | |
293 | 5729 | caballero | private AffineTransform m_MatrizTransf; |
294 | 312 | fernando | |
295 | 5729 | caballero | private Rectangle2D rectVisible; |
296 | 312 | fernando | |
297 | 5729 | caballero | private IFFrameDialog fframedialog = null; |
298 | 312 | fernando | |
299 | 5729 | caballero | private IFFrame[] fframes; |
300 | 312 | fernando | |
301 | 5729 | caballero | private MapProperties m_propertiesLayout = null; |
302 | 1550 | vcaballero | |
303 | 5729 | caballero | private Attributes m_attributes = null; |
304 | 4120 | caballero | |
305 | 5729 | caballero | private PrintService[] m_cachePrintServices = null; |
306 | 312 | fernando | |
307 | 5729 | caballero | private PrintService m_cachePrintService = null; |
308 | 312 | fernando | |
309 | 5729 | caballero | private boolean m_bCancelDrawing = false; |
310 | 312 | fernando | |
311 | 5729 | caballero | private boolean isCuadricula = false; |
312 | 312 | fernando | |
313 | 5729 | caballero | private boolean initial = true; |
314 | 312 | fernando | |
315 | 5729 | caballero | private ProjectMap map = null; |
316 | 2342 | vcaballero | |
317 | 5729 | caballero | private Rectangle reSel = null; |
318 | 4120 | caballero | |
319 | 5729 | caballero | private boolean isReSel = true; |
320 | 2342 | vcaballero | |
321 | 5729 | caballero | private boolean m_showRuler = true; |
322 | 4775 | caballero | |
323 | 5729 | caballero | private FLayoutDraw layoutDraw = null; |
324 | 1550 | vcaballero | |
325 | 5729 | caballero | private boolean isDrawCuadricula = true; |
326 | 312 | fernando | |
327 | 5729 | caballero | private Doc doc = null; |
328 | 4120 | caballero | |
329 | 5729 | caballero | private PrintRequestAttributeSet att = null; |
330 | 312 | fernando | |
331 | 5729 | caballero | private GeometryAdapter geometryAdapter = new PolyLineAdapter(); |
332 | 4120 | caballero | |
333 | 5729 | caballero | private DefaultEditableFeatureSource efs;
|
334 | 1550 | vcaballero | |
335 | 5729 | caballero | private boolean isEditable = true; |
336 | 4120 | caballero | |
337 | 5729 | caballero | private ViewInfo m_viewInfo = null; |
338 | 312 | fernando | |
339 | 5729 | caballero | private int numBefore = 0; |
340 | 312 | fernando | |
341 | 5729 | caballero | private int numBehind = 0; |
342 | 4120 | caballero | |
343 | 5729 | caballero | /**
|
344 | * Lo usamos cuando estamos haciendo una ficha y asignando tags Se pone en
|
||
345 | * modo debug cuando hacemos un VIEW_TAGS
|
||
346 | */
|
||
347 | private boolean bModeDebug = false; |
||
348 | 4120 | caballero | |
349 | 5729 | caballero | private boolean editGroup; |
350 | 312 | fernando | |
351 | 5729 | caballero | /**
|
352 | * Creates a new Layout object.
|
||
353 | */
|
||
354 | public Layout() {
|
||
355 | efs = new DefaultEditableFeatureSource();
|
||
356 | updateFFrames(); |
||
357 | this.setLayout(null); |
||
358 | events = new EventsHandler(this); |
||
359 | layoutDraw = new FLayoutDraw(this); |
||
360 | addComponentListener(events); |
||
361 | addMouseMotionListener(events); |
||
362 | addMouseListener(events); |
||
363 | addKeyListener(events); |
||
364 | m_MatrizTransf = new AffineTransform(); |
||
365 | m_MatrizTransf.setToIdentity(); |
||
366 | this.initComponents();
|
||
367 | } |
||
368 | 1281 | fjp | |
369 | 5729 | caballero | /**
|
370 | * Rellena el ProjectMap del Layout.
|
||
371 | *
|
||
372 | * @param m
|
||
373 | * ProjectMap.
|
||
374 | */
|
||
375 | public void setProjectMap(ProjectMap m) { |
||
376 | map = m; |
||
377 | this.setName(m.getName());
|
||
378 | map.addPropertyChangeListener(new PropertyChangeListener() { |
||
379 | public void propertyChange(PropertyChangeEvent evt) { |
||
380 | if (evt.getPropertyName().equals("name")) { |
||
381 | PluginServices.getMDIManager().getViewInfo(Layout.this) |
||
382 | .setTitle( |
||
383 | PluginServices.getText(this, "Mapa") |
||
384 | + " : "
|
||
385 | + (String) evt.getNewValue());
|
||
386 | } |
||
387 | } |
||
388 | }); |
||
389 | } |
||
390 | 1550 | vcaballero | |
391 | 5729 | caballero | /**
|
392 | * Devuelve el rect?ngulo de selecci?n por rect?ngulo.
|
||
393 | *
|
||
394 | * @return Rect?ngulo de selecci?n.
|
||
395 | */
|
||
396 | public Rectangle getReSel() { |
||
397 | return reSel;
|
||
398 | } |
||
399 | 312 | fernando | |
400 | 5729 | caballero | /**
|
401 | * Devuelve true si se debe dibujar el rect?ngulo de selecci?n y realizar la
|
||
402 | * sellecci?n.
|
||
403 | *
|
||
404 | * @return true si se realiza la selecci?n por rect?ngulo.
|
||
405 | */
|
||
406 | public boolean isReSel() { |
||
407 | return isReSel;
|
||
408 | } |
||
409 | 312 | fernando | |
410 | 5729 | caballero | /**
|
411 | * Rellena con true si se debe de dibujar y seleccionar por rect?ngulo de
|
||
412 | * selecci?n.
|
||
413 | *
|
||
414 | * @param b
|
||
415 | * boolean.
|
||
416 | */
|
||
417 | public void setIsReSel(boolean b) { |
||
418 | isReSel = b; |
||
419 | } |
||
420 | 312 | fernando | |
421 | 5729 | caballero | /**
|
422 | * Devuelve true si el dibujado ha sido cancelado.
|
||
423 | *
|
||
424 | * @return true si el dibujado ha sido cancelado.
|
||
425 | */
|
||
426 | public synchronized boolean isDrawingCancelled() { |
||
427 | return m_bCancelDrawing;
|
||
428 | } |
||
429 | 312 | fernando | |
430 | 5729 | caballero | /**
|
431 | * Pone el dibuja a cancelado o no seg?n se quiera.
|
||
432 | *
|
||
433 | * @param b
|
||
434 | * true si se quiere cancelar el dibujado.
|
||
435 | */
|
||
436 | public synchronized void setCancelDrawing(boolean b) { |
||
437 | m_bCancelDrawing = b; |
||
438 | 312 | fernando | |
439 | 5729 | caballero | for (int i = 0; i < getFFrames().length; i++) { |
440 | IFFrame fframe = (IFFrame) getFFrame(i); |
||
441 | 312 | fernando | |
442 | 5729 | caballero | if (fframe instanceof IFFrameUseFMap |
443 | && (((IFFrameUseFMap) fframe).getFMap() != null)) {
|
||
444 | // //TODO((FFrameView)
|
||
445 | // getFFrames().get(i)).getFMap().setCancelDrawing(b);
|
||
446 | } |
||
447 | } |
||
448 | } |
||
449 | 312 | fernando | |
450 | 5729 | caballero | /**
|
451 | * Obtiene el ArrayList con todos los FFrames que se han a?adido al Layout.
|
||
452 | *
|
||
453 | * @return Array con todos los fframes que contiene el Layout.
|
||
454 | */
|
||
455 | public IFFrame[] getFFrames() { |
||
456 | return fframes;
|
||
457 | } |
||
458 | 312 | fernando | |
459 | 5729 | caballero | public IFFrame getFFrame(int i) { |
460 | return fframes[i];
|
||
461 | } |
||
462 | 312 | fernando | |
463 | 5729 | caballero | public void updateFFrames() { |
464 | ArrayList frames = new ArrayList(); |
||
465 | IFFrame[] auxfframes = efs.getFFrames();
|
||
466 | for (int j = numBehind; j <= numBefore; j++) { |
||
467 | for (int i = 0; i < auxfframes.length; i++) { |
||
468 | if (auxfframes[i].getLevel() == j) {
|
||
469 | frames.add(auxfframes[i]); |
||
470 | continue;
|
||
471 | } |
||
472 | } |
||
473 | } |
||
474 | fframes = (IFFrame[]) frames.toArray(new IFFrame[0]); |
||
475 | } |
||
476 | 312 | fernando | |
477 | 5729 | caballero | /**
|
478 | * Obtiene el rect que se ajusta al tama?o de la ventana, para ver el folio
|
||
479 | * entero.
|
||
480 | */
|
||
481 | public void fullRect() { |
||
482 | rect.setRect(origin.x, origin.y, getWidth() - (origin.x * 2),
|
||
483 | getHeight() - (origin.x * 2));
|
||
484 | 312 | fernando | |
485 | 5729 | caballero | if (m_attributes.isLandSpace()) {
|
486 | rect = m_attributes.getRectangleLandscape(rect, getWidth(), |
||
487 | getHeight()); |
||
488 | } else {
|
||
489 | rect = m_attributes.getRectanglePortrait(rect, getWidth(), |
||
490 | getHeight()); |
||
491 | } |
||
492 | refresh(); |
||
493 | } |
||
494 | 312 | fernando | |
495 | 5729 | caballero | /**
|
496 | * M?todo para imprimir el Layout sin modificar la matriz de transformaci?n.
|
||
497 | *
|
||
498 | * @param g2
|
||
499 | */
|
||
500 | public void drawLayoutPrint(Graphics2D g2) { |
||
501 | setCancelDrawing(false);
|
||
502 | 312 | fernando | |
503 | 5729 | caballero | setCursor(Cursor.getDefaultCursor());
|
504 | 312 | fernando | |
505 | 5729 | caballero | double scale = 0; |
506 | scale = rect.height / m_attributes.m_sizePaper.getAlto() * 1;
|
||
507 | AffineTransform escalado = new AffineTransform(); |
||
508 | AffineTransform translacion = new AffineTransform(); |
||
509 | translacion.setToTranslation(rect.getMinX(), rect.getMinY()); |
||
510 | escalado.setToScale(scale, scale); |
||
511 | m_MatrizTransf.setToIdentity(); |
||
512 | m_MatrizTransf.concatenate(translacion); |
||
513 | m_MatrizTransf.concatenate(escalado); |
||
514 | m_attributes.setDistanceUnitX(rect); |
||
515 | m_attributes.setDistanceUnitY(rect); |
||
516 | 312 | fernando | |
517 | 5729 | caballero | for (int i = 0; i < getFFrames().length; i++) { |
518 | try {
|
||
519 | ((IFFrame) getFFrame(i)).print(g2, getAT()); |
||
520 | } catch (DriverException e) {
|
||
521 | NotificationManager.addError(e.getMessage(), e); |
||
522 | } |
||
523 | } |
||
524 | 312 | fernando | |
525 | 5729 | caballero | // TODO Esto es para ver el rect?ngulo que representa el folio en la
|
526 | // impresi?n.
|
||
527 | g2.drawRect(0, 0, (int) rect.getWidth(), (int) rect.getHeight()); |
||
528 | // setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||
529 | } |
||
530 | 312 | fernando | |
531 | 5729 | caballero | /**
|
532 | * Clip sobre el rect?ngulo visible.
|
||
533 | *
|
||
534 | * @param g2d
|
||
535 | * Graphics sobre el que hacer el clip.
|
||
536 | */
|
||
537 | private void clipVisibleRect(Graphics2D g2d) { |
||
538 | rectVisible = this.getVisibleRect();
|
||
539 | g2d.clipRect((int) rectVisible.getMinX(), (int) rectVisible.getMinY(), |
||
540 | (int) rectVisible.getWidth(), (int) rectVisible.getHeight()); |
||
541 | } |
||
542 | 312 | fernando | |
543 | 5729 | caballero | /**
|
544 | * Inicializa los componentes.
|
||
545 | */
|
||
546 | private void initComponents() { |
||
547 | m_attributes = new Attributes(); |
||
548 | m_attributes.setDistanceUnitX(rect); |
||
549 | m_attributes.setDistanceUnitY(rect); |
||
550 | actionDelFFrame(); |
||
551 | setDoubleBuffered(true);
|
||
552 | } |
||
553 | 312 | fernando | |
554 | 5729 | caballero | /**
|
555 | * Crea un ActionEvent para controlar las teclas que se pulsen cuando este
|
||
556 | * el Layout Focusable a true.
|
||
557 | */
|
||
558 | private void actionDelFFrame() { |
||
559 | Action doNothing = new AbstractAction() { |
||
560 | public void actionPerformed(ActionEvent e) { |
||
561 | delFFrameSelected(); |
||
562 | refresh(); |
||
563 | } |
||
564 | }; |
||
565 | 312 | fernando | |
566 | 5729 | caballero | this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), |
567 | "doNothing");
|
||
568 | this.getInputMap().put(
|
||
569 | KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), "doNothing"); |
||
570 | this.getActionMap().put("doNothing", doNothing); |
||
571 | } |
||
572 | 312 | fernando | |
573 | 5729 | caballero | /**
|
574 | * paintComponent del Layout.
|
||
575 | *
|
||
576 | * @param g
|
||
577 | * Graphics del Layout.
|
||
578 | */
|
||
579 | protected void paintComponent(Graphics g) { |
||
580 | super.paintComponent(g);
|
||
581 | 312 | fernando | |
582 | 5729 | caballero | clipVisibleRect((Graphics2D) g);
|
583 | 312 | fernando | |
584 | 5729 | caballero | Rectangle rClip = g.getClipBounds();
|
585 | 312 | fernando | |
586 | 5729 | caballero | if (rClip == null) { |
587 | System.err.println("clip = null"); |
||
588 | } |
||
589 | 312 | fernando | |
590 | 5729 | caballero | switch (status) {
|
591 | case ZOOM_MAS:
|
||
592 | logger.debug("zoom mas");
|
||
593 | layoutDraw.drawRectangle((Graphics2D) g);
|
||
594 | 312 | fernando | |
595 | 5729 | caballero | g.drawImage(img, 0, 0, this); |
596 | 312 | fernando | |
597 | 5729 | caballero | g.setClip(rClip); |
598 | g.drawImage(imgRuler, 0, 0, this); |
||
599 | g.setColor(Color.black);
|
||
600 | g.setXORMode(Color.white);
|
||
601 | 312 | fernando | |
602 | 5729 | caballero | Rectangle r = new Rectangle(); |
603 | 312 | fernando | |
604 | 5729 | caballero | r.setFrameFromDiagonal(m_FirstPoint, m_LastPoint); |
605 | g.drawRect(r.x, r.y, r.width, r.height); |
||
606 | 312 | fernando | |
607 | 5729 | caballero | break;
|
608 | 312 | fernando | |
609 | 5729 | caballero | case RECTANGLE:
|
610 | logger.debug("rectangle");
|
||
611 | layoutDraw.drawRectangle((Graphics2D) g);
|
||
612 | 312 | fernando | |
613 | 5729 | caballero | g.drawImage(img, 0, 0, this); |
614 | 312 | fernando | |
615 | 5729 | caballero | g.setClip(rClip); |
616 | g.drawImage(imgRuler, 0, 0, this); |
||
617 | g.setColor(Color.black);
|
||
618 | g.setXORMode(Color.white);
|
||
619 | 312 | fernando | |
620 | 5729 | caballero | Rectangle re = new Rectangle(); |
621 | re.setFrameFromDiagonal(m_FirstPoint, m_LastPoint); |
||
622 | 312 | fernando | |
623 | 5729 | caballero | if (isCuadricula()) {
|
624 | FLayoutUtilities.setRectGrid(re, m_attributes |
||
625 | .getUnitInPixelsX(), m_attributes.getUnitInPixelsY(), |
||
626 | m_MatrizTransf); |
||
627 | } |
||
628 | 312 | fernando | |
629 | 5729 | caballero | g.drawRect(re.x, re.y, re.width, re.height); |
630 | 312 | fernando | |
631 | 5729 | caballero | break;
|
632 | 312 | fernando | |
633 | 5729 | caballero | case PAN:
|
634 | logger.debug("pan");
|
||
635 | 312 | fernando | |
636 | 5729 | caballero | rect.x = rectOrigin.x + (m_LastPoint.x - m_PointAnt.x); |
637 | rect.y = rectOrigin.y + (m_LastPoint.y - m_PointAnt.y); |
||
638 | 396 | vcaballero | |
639 | 5729 | caballero | layoutDraw.drawRectangle((Graphics2D) g);
|
640 | 312 | fernando | |
641 | 5729 | caballero | if (img != null) { |
642 | g.drawImage(img, (getLastPoint().x - getPointAnt().x), |
||
643 | (getLastPoint().y - getPointAnt().y), this);
|
||
644 | } |
||
645 | 312 | fernando | |
646 | 5729 | caballero | g.setClip(rClip); |
647 | layoutDraw.drawGrid((Graphics2D) g);
|
||
648 | layoutDraw.drawRuler((Graphics2D) g, Color.black); |
||
649 | break;
|
||
650 | 312 | fernando | |
651 | 5729 | caballero | case VIEW_PAN:
|
652 | 312 | fernando | |
653 | 5729 | caballero | logger.debug("View pan");
|
654 | layoutDraw.drawRectangle((Graphics2D) g);
|
||
655 | 312 | fernando | |
656 | 5729 | caballero | for (int i = 0; i < getFFrames().length; i++) { |
657 | if (getFFrame(i) instanceof IFFrameUseFMap) { |
||
658 | IFFrameUseFMap fframe = (IFFrameUseFMap) getFFrame(i); |
||
659 | 312 | fernando | |
660 | 5729 | caballero | if (((IFFrame) fframe).getSelected() != IFFrame.NOSELECT) {
|
661 | Rectangle2D.Double rec = ((IFFrame) fframe)
|
||
662 | .getBoundingBox(getAT()); |
||
663 | 3610 | caballero | |
664 | 5729 | caballero | if (img != null) { |
665 | rec = (Rectangle2D.Double) rec
|
||
666 | .createIntersection(getVisibleRect()); |
||
667 | } |
||
668 | 312 | fernando | |
669 | 5729 | caballero | if (fframe.getBufferedImage() != null) { |
670 | layoutDraw |
||
671 | .drawHandlers((Graphics2D) g, Color.black); |
||
672 | g.clipRect((int) rec.x, (int) rec.y, |
||
673 | (int) rec.width, (int) rec.height); |
||
674 | 312 | fernando | |
675 | 5729 | caballero | layoutDraw.drawRectangle((Graphics2D) g);
|
676 | layoutDraw.drawRuler((Graphics2D) g, Color.black); |
||
677 | Rectangle2D.Double r1 = ((IFFrame) fframe)
|
||
678 | .getBoundingBox(getAT()); |
||
679 | g.drawImage(fframe.getBufferedImage(), (int) r1
|
||
680 | .getX() |
||
681 | + m_LastPoint.x - m_PointAnt.x, (int) r1
|
||
682 | .getY() |
||
683 | + m_LastPoint.y - m_PointAnt.y, this);
|
||
684 | 312 | fernando | |
685 | 5729 | caballero | fframe.refresh(); |
686 | } |
||
687 | } |
||
688 | } |
||
689 | } |
||
690 | 312 | fernando | |
691 | 5729 | caballero | g.setClip(rClip); |
692 | g.drawImage(imgRuler, 0, 0, this); |
||
693 | 312 | fernando | |
694 | 5729 | caballero | break;
|
695 | 312 | fernando | |
696 | 5729 | caballero | case SELECT:
|
697 | logger.debug("select");
|
||
698 | layoutDraw.drawRectangle((Graphics2D) g);
|
||
699 | 312 | fernando | |
700 | 5729 | caballero | g.drawImage(img, 0, 0, this); |
701 | 312 | fernando | |
702 | 5729 | caballero | if (isReSel) {
|
703 | reSel = new Rectangle(); |
||
704 | reSel.setFrameFromDiagonal(m_FirstPoint, m_LastPoint); |
||
705 | g.drawRect(reSel.x, reSel.y, reSel.width, reSel.height); |
||
706 | } |
||
707 | IFFrame[] frames = getFFrameSelected();
|
||
708 | for (int i = 0; i < frames.length; i++) { |
||
709 | g.setColor(Color.black);
|
||
710 | frames[i].drawHandlers((Graphics2D) g);
|
||
711 | int difx = (m_LastPoint.x - m_FirstPoint.x);
|
||
712 | int dify = (m_LastPoint.y - m_FirstPoint.y);
|
||
713 | if ((Math.abs(difx) > 3) || (Math.abs(dify) > 3)) { |
||
714 | Rectangle2D rectangle = frames[i].getMovieRect(difx, dify);
|
||
715 | if (rectangle == null) |
||
716 | return;
|
||
717 | ((Graphics2D) g).rotate(Math.toRadians(frames[i] |
||
718 | .getRotation()), rectangle.getX() |
||
719 | + (rectangle.getWidth() / 2), rectangle.getY()
|
||
720 | + (rectangle.getHeight() / 2));
|
||
721 | 312 | fernando | |
722 | 5729 | caballero | if (rectangle != null) { |
723 | if (isCuadricula) {
|
||
724 | FLayoutUtilities.setRectGrid(rectangle, |
||
725 | m_attributes.getUnitInPixelsX(), |
||
726 | m_attributes.getUnitInPixelsY(), |
||
727 | m_MatrizTransf); |
||
728 | } |
||
729 | 312 | fernando | |
730 | 5729 | caballero | g.drawRect((int) rectangle.getMinX(), (int) rectangle |
731 | .getMinY(), (int) rectangle.getWidth(),
|
||
732 | (int) rectangle.getHeight());
|
||
733 | } |
||
734 | 312 | fernando | |
735 | 5729 | caballero | ((Graphics2D) g).rotate(Math.toRadians(-frames[i] |
736 | .getRotation()), rectangle.getX() |
||
737 | + (rectangle.getWidth() / 2), rectangle.getY()
|
||
738 | + (rectangle.getHeight() / 2));
|
||
739 | 312 | fernando | |
740 | 5729 | caballero | } |
741 | } |
||
742 | 312 | fernando | |
743 | 5729 | caballero | g.setClip(rClip); |
744 | g.drawImage(imgRuler, 0, 0, this); |
||
745 | 312 | fernando | |
746 | 5729 | caballero | break;
|
747 | case GRAPHICS:
|
||
748 | logger.debug("graphics");
|
||
749 | layoutDraw.drawRectangle((Graphics2D) g);
|
||
750 | g.drawImage(img, 0, 0, this); |
||
751 | g.setClip(rClip); |
||
752 | layoutDraw.drawHandlers((Graphics2D) g, Color.black); |
||
753 | 312 | fernando | |
754 | 5729 | caballero | if (getTool() == EDIT) {
|
755 | IFFrame[] fframeSelect = getFFrameSelected();
|
||
756 | for (int i = 0; i < fframeSelect.length; i++) { |
||
757 | if (fframeSelect[i] instanceof IFFrameEditableVertex) { |
||
758 | ((IFFrameEditableVertex) fframeSelect[i]).paint( |
||
759 | (Graphics2D) g, getAT());
|
||
760 | } |
||
761 | } |
||
762 | } else {
|
||
763 | geometryAdapter.paint((Graphics2D) g, getAT(), true); |
||
764 | } |
||
765 | g.drawImage(imgRuler, 0, 0, this); |
||
766 | break;
|
||
767 | 312 | fernando | |
768 | 5729 | caballero | case DESACTUALIZADO:
|
769 | logger.debug("desactualizado");
|
||
770 | img = new BufferedImage(getWidth(), getHeight(), |
||
771 | BufferedImage.TYPE_INT_ARGB);
|
||
772 | imgRuler = new BufferedImage(getWidth(), getHeight(), |
||
773 | BufferedImage.TYPE_INT_ARGB);
|
||
774 | Graphics gimag = img.getGraphics();
|
||
775 | Graphics gimgRuler = imgRuler.getGraphics();
|
||
776 | 312 | fernando | |
777 | 5729 | caballero | clipVisibleRect((Graphics2D) gimag);
|
778 | 312 | fernando | |
779 | 5729 | caballero | if (initial) {
|
780 | fullRect(); |
||
781 | initial = false;
|
||
782 | } |
||
783 | 312 | fernando | |
784 | 5729 | caballero | try {
|
785 | layoutDraw.drawLayout((Graphics2D) gimag, img);
|
||
786 | } catch (DriverException e) {
|
||
787 | e.printStackTrace(); |
||
788 | } |
||
789 | 312 | fernando | |
790 | 5729 | caballero | g.setClip(rClip); |
791 | layoutDraw.drawRectangle((Graphics2D) g);
|
||
792 | 312 | fernando | |
793 | 5729 | caballero | g.drawImage(img, 0, 0, this); |
794 | g.setClip(rClip); |
||
795 | 312 | fernando | |
796 | 5729 | caballero | layoutDraw.drawHandlers((Graphics2D) g, Color.black); |
797 | layoutDraw.drawGrid((Graphics2D) gimgRuler);
|
||
798 | layoutDraw.drawRuler((Graphics2D) gimgRuler, Color.black); |
||
799 | g.drawImage(imgRuler, 0, 0, this); |
||
800 | 312 | fernando | |
801 | 5729 | caballero | break;
|
802 | 4120 | caballero | |
803 | 5729 | caballero | case ACTUALIZADO:
|
804 | logger.debug("actualizado");
|
||
805 | layoutDraw.drawRectangle((Graphics2D) g);
|
||
806 | |||
807 | g.drawImage(img, 0, 0, this); |
||
808 | |||
809 | g.setClip(rClip); |
||
810 | layoutDraw.drawHandlers((Graphics2D) g, Color.black); |
||
811 | g.drawImage(imgRuler, 0, 0, this); |
||
812 | } |
||
813 | } |
||
814 | |||
815 | /**
|
||
816 | * A?ade un fframe al Arraylist m_fframes.
|
||
817 | *
|
||
818 | * @param frame
|
||
819 | * fframe a a?adir.
|
||
820 | * @param clearSelection
|
||
821 | * para que se quede seleccionado ?nicamente el que a?adimos y
|
||
822 | * false si lo que se pretende es que no se deseleccionen lo que
|
||
823 | * ya est?n seleccionados.
|
||
824 | * @param select
|
||
825 | * Booleano que indica si se tiene que quedar seleccionado el
|
||
826 | * FFrame que se a?ade o no.
|
||
827 | */
|
||
828 | public void addFFrame(IFFrame frame, boolean clearSelection, boolean select) { |
||
829 | IFFrame[] fframes = getFFrames();
|
||
830 | if (clearSelection) {
|
||
831 | for (int i = fframes.length - 1; i >= 0; i--) { |
||
832 | IFFrame fframe1 = fframes[i]; |
||
833 | fframe1.setSelected(false);
|
||
834 | } |
||
835 | } |
||
836 | |||
837 | if (nums.containsKey(frame.getClass())) {
|
||
838 | nums.put(frame.getClass(), new Integer(Integer.parseInt(nums.get( |
||
839 | frame.getClass()).toString()) + 1));
|
||
840 | } else {
|
||
841 | nums.put(frame.getClass(), new Integer(0)); |
||
842 | } |
||
843 | |||
844 | frame.setNum(Integer.parseInt(nums.get(frame.getClass()).toString()));
|
||
845 | efs.addFFrame(frame); |
||
846 | frame.setSelected(select); |
||
847 | frame.setLevel(getNumBefore()); |
||
848 | updateFFrames(); |
||
849 | } |
||
850 | |||
851 | /**
|
||
852 | * Abre el di?logo de propiedades del folio, pasando como par?metro el
|
||
853 | * PrinterJob.
|
||
854 | *
|
||
855 | * @param job
|
||
856 | */
|
||
857 | public void showPagePropertiesWindow(PrinterJob job) { |
||
858 | PageFormat pf1;
|
||
859 | |||
860 | pf1 = m_attributes.getPageFormat(); |
||
861 | pf1 = job.pageDialog(pf1); |
||
862 | m_attributes.setPageFormat(pf1); |
||
863 | refresh(); |
||
864 | } |
||
865 | |||
866 | /**
|
||
867 | * Refresca el Layout.
|
||
868 | */
|
||
869 | public void refresh() { |
||
870 | setStatus(DESACTUALIZADO); |
||
871 | repaint(); |
||
872 | } |
||
873 | |||
874 | /**
|
||
875 | * Obtiene el rect?ngulo que representa el folio con las caracter?sticas que
|
||
876 | * contiene attributes y diferenciando si es para visualizar en pantalla o
|
||
877 | * para imprimir.
|
||
878 | *
|
||
879 | * @param isPrint
|
||
880 | * si es para imprimir.
|
||
881 | */
|
||
882 | public void obtainRect(boolean isPrint) { |
||
883 | m_attributes.obtainRect(isPrint, rect, getWidth(), getHeight()); |
||
884 | } |
||
885 | |||
886 | /**
|
||
887 | * Muestra el di?logo de configuraci?n del Layout.
|
||
888 | */
|
||
889 | public void showFConfig() { |
||
890 | FConfigLayoutDialog m_configLayout = new FConfigLayoutDialog(this); |
||
891 | PluginServices.getMDIManager().addView(m_configLayout); |
||
892 | } |
||
893 | |||
894 | /**
|
||
895 | * Mestra el di?logo de propiedades del Layout.
|
||
896 | */
|
||
897 | public void showFProperties() { |
||
898 | if (map == null) { |
||
899 | map = new ProjectMap();
|
||
900 | map.setModel(this);
|
||
901 | map.setName(getName()); |
||
902 | } |
||
903 | |||
904 | m_propertiesLayout = new MapProperties(map);
|
||
905 | PluginServices.getMDIManager().addView(m_propertiesLayout); |
||
906 | } |
||
907 | |||
908 | /**
|
||
909 | * Muestra el di?logo de imprimir pasandole el printerJob como par?metro.
|
||
910 | *
|
||
911 | * @param job
|
||
912 | */
|
||
913 | public void showPrintDialog(PrinterJob job) { |
||
914 | if (job != null) { |
||
915 | job.printDialog(); |
||
916 | |||
917 | try {
|
||
918 | job.setPrintable((Printable) PluginServices
|
||
919 | .getExtension(com.iver.cit.gvsig.Print.class)); |
||
920 | job.print(); |
||
921 | } catch (PrinterException e) { |
||
922 | e.printStackTrace(); |
||
923 | } |
||
924 | } else {
|
||
925 | // Actualizar attributes
|
||
926 | att = m_attributes.toPrintAttributes(); |
||
927 | |||
928 | // ------------------ The Printing things --------------------- //
|
||
929 | DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE; |
||
930 | |||
931 | // returns the set of printers that support printing a specific
|
||
932 | // document type (such as GIF)
|
||
933 | // with a specific set of attributes (such as two sided).
|
||
934 | // PrintRequestAttributeSet pras = new
|
||
935 | // HashPrintRequestAttributeSet();
|
||
936 | // interestingly, the printer dialog's default behavior has changed
|
||
937 | // with the new API: by default the dialog is not shown.
|
||
938 | // So we must use the ServiceUI class to create a print dialog
|
||
939 | // returns the default print service.
|
||
940 | if (m_cachePrintServices == null) { |
||
941 | m_cachePrintServices = PrintServiceLookup.lookupPrintServices(
|
||
942 | flavor, null);
|
||
943 | } |
||
944 | |||
945 | PrintService defaultService = null; |
||
946 | |||
947 | if (m_cachePrintService == null) { |
||
948 | defaultService = PrintServiceLookup.lookupDefaultPrintService();
|
||
949 | } |
||
950 | |||
951 | if ((defaultService == null) && (m_cachePrintService == null)) { |
||
952 | JOptionPane.showMessageDialog((Component) PluginServices |
||
953 | .getMainFrame(), "ninguna_impresora_configurada");
|
||
954 | |||
955 | return;
|
||
956 | } |
||
957 | |||
958 | if (m_cachePrintService == null) { |
||
959 | m_cachePrintService = ServiceUI.printDialog(null, 200, 200, |
||
960 | m_cachePrintServices, defaultService, flavor, att); |
||
961 | |||
962 | // m_cachePrintRequestAtributeSet = new
|
||
963 | // HashPrintRequestAttributeSet();
|
||
964 | // m_cachePrintRequestAtributeSet.addAll(pras);
|
||
965 | } else {
|
||
966 | m_cachePrintService = ServiceUI.printDialog(null, 200, 200, |
||
967 | m_cachePrintServices, m_cachePrintService, flavor, att); |
||
968 | } |
||
969 | |||
970 | if (m_cachePrintService != null) { |
||
971 | DocPrintJob jobNuevo = m_cachePrintService.createPrintJob();
|
||
972 | PrintJobListener pjlistener = new PrintJobAdapter() { |
||
973 | public void printDataTransferCompleted(PrintJobEvent e) { |
||
974 | System.out.println("Fin de impresi?n"); |
||
975 | fullRect(); |
||
976 | } |
||
977 | }; |
||
978 | |||
979 | jobNuevo.addPrintJobListener(pjlistener); |
||
980 | |||
981 | // DocAttributeSet das = new HashDocAttributeSet();
|
||
982 | doc = new SimpleDoc((Printable) PluginServices |
||
983 | .getExtension(com.iver.cit.gvsig.Print.class), flavor, |
||
984 | null);
|
||
985 | |||
986 | try {
|
||
987 | jobNuevo.print(doc, att); |
||
988 | |||
989 | // m_attributes.
|
||
990 | } catch (PrintException pe) { |
||
991 | pe.printStackTrace(); |
||
992 | } |
||
993 | } |
||
994 | } |
||
995 | |||
996 | /*
|
||
997 | * try { print = job.printDialog(att); } catch (Exception e) {
|
||
998 | * logger.error("Abriendo el Di?logo de imprimir");
|
||
999 | * //System.out.println("Excepci?n "+e); } if (print) {
|
||
1000 | * job.setPrintable((Printable)
|
||
1001 | * App.instance.getPc().getExtension(com.iver.cit.gvsig.Print.class));
|
||
1002 | * try { job.print(att); } catch (Exception ex) { ex.printStackTrace(); } }
|
||
1003 | */
|
||
1004 | } |
||
1005 | |||
1006 | /**
|
||
1007 | * Sustituye el puntero del rat?n por la imagen que se le pasa como
|
||
1008 | * par?metro.
|
||
1009 | *
|
||
1010 | * @param image
|
||
1011 | */
|
||
1012 | public void setMapCursor(Image image) { |
||
1013 | Cursor cur = Toolkit.getDefaultToolkit().createCustomCursor(image, |
||
1014 | new Point(16, 16), ""); |
||
1015 | setCursor(cur); |
||
1016 | } |
||
1017 | |||
1018 | /**
|
||
1019 | * Cambia el puntero del raton al cusor que se le introduce como par?metro.
|
||
1020 | *
|
||
1021 | * @param cursor
|
||
1022 | * cursor a mostrar en el puntero del rat?n.
|
||
1023 | */
|
||
1024 | public void setMapCursor(Cursor cursor) { |
||
1025 | setCursor(cursor); |
||
1026 | } |
||
1027 | |||
1028 | /**
|
||
1029 | * Pone como seleccionada a la herramienta a partir de su n?mero.
|
||
1030 | *
|
||
1031 | * @param i
|
||
1032 | */
|
||
1033 | public void setTool(int i) { |
||
1034 | tool = i; |
||
1035 | |||
1036 | if (getTool() == PAN) {
|
||
1037 | setMapCursor(ipan); |
||
1038 | } else if (getTool() == ZOOM_MAS) { |
||
1039 | setMapCursor(izoomin); |
||
1040 | } else if (getTool() == ZOOM_MENOS) { |
||
1041 | setMapCursor(izoomout); |
||
1042 | } else if (getTool() == RECTANGLEVIEW) { |
||
1043 | setMapCursor(icrux); |
||
1044 | } else if (getTool() == RECTANGLEPICTURE) { |
||
1045 | setMapCursor(icrux); |
||
1046 | } else if (getTool() == RECTANGLESCALEBAR) { |
||
1047 | setMapCursor(icrux); |
||
1048 | } else if (getTool() == RECTANGLELEGEND) { |
||
1049 | setMapCursor(icrux); |
||
1050 | } else if (getTool() == RECTANGLETEXT) { |
||
1051 | setMapCursor(icrux); |
||
1052 | } else if (getTool() == RECTANGLENORTH) { |
||
1053 | setMapCursor(icrux); |
||
1054 | } else if (getTool() == RECTANGLEBOX) { |
||
1055 | setMapCursor(icrux); |
||
1056 | } else if (getTool() == SELECT) { |
||
1057 | setCursor(Cursor.getDefaultCursor());
|
||
1058 | } else if (getTool() == SET_TAG) { |
||
1059 | setMapCursor(itag); |
||
1060 | } else if (getTool() == POINT) { |
||
1061 | setMapCursor(iPoint); |
||
1062 | } else if (getTool() == LINE) { |
||
1063 | setMapCursor(iRect); |
||
1064 | } else if (getTool() == RECTANGLESIMPLE) { |
||
1065 | setMapCursor(iRectangle); |
||
1066 | } else if (getTool() == POLYLINE) { |
||
1067 | setMapCursor(iLine); |
||
1068 | } else if (getTool() == POLYGON) { |
||
1069 | setMapCursor(iPoligon); |
||
1070 | } else if (getTool() == CIRCLE) { |
||
1071 | setMapCursor(iCircle); |
||
1072 | } |
||
1073 | if (getTool() == EDIT) {
|
||
1074 | setMapCursor(icrux); |
||
1075 | startEdit(); |
||
1076 | } else {
|
||
1077 | stopEdit(); |
||
1078 | } |
||
1079 | initGeometryAdapter(); |
||
1080 | } |
||
1081 | |||
1082 | /**
|
||
1083 | * Se crean aqu? los dialogos cada vez que se necesitan.
|
||
1084 | *
|
||
1085 | * @param fframe
|
||
1086 | * Rectangle que representa el lugar que ocupara el elemento
|
||
1087 | * a?adido.
|
||
1088 | *
|
||
1089 | * @return true si se debe de a?adir el fframe.
|
||
1090 | */
|
||
1091 | public boolean openFFrameDialog(IFFrame fframe) { |
||
1092 | switch (tool) {
|
||
1093 | case RECTANGLEVIEW:
|
||
1094 | fframedialog = new FFrameViewDialog(this, (FFrameView) fframe); |
||
1095 | |||
1096 | break;
|
||
1097 | |||
1098 | case RECTANGLEPICTURE:
|
||
1099 | fframedialog = new FFramePictureDialog(this, (FFramePicture) fframe); |
||
1100 | |||
1101 | break;
|
||
1102 | |||
1103 | case RECTANGLESCALEBAR:
|
||
1104 | fframedialog = new FFrameScaleBarDialog(this, |
||
1105 | (FFrameScaleBar) fframe); |
||
1106 | |||
1107 | break;
|
||
1108 | |||
1109 | case RECTANGLELEGEND:
|
||
1110 | fframedialog = new FFrameLegendDialog(this, (FFrameLegend) fframe); |
||
1111 | |||
1112 | break;
|
||
1113 | |||
1114 | case RECTANGLETEXT:
|
||
1115 | fframedialog = new FFrameTextDialog(this, (FFrameText) fframe); |
||
1116 | |||
1117 | break;
|
||
1118 | |||
1119 | case GRAPHICS:
|
||
1120 | fframedialog = new FFrameGraphicsDialog(this, |
||
1121 | (FFrameGraphics) fframe); |
||
1122 | |||
1123 | break;
|
||
1124 | |||
1125 | case RECTANGLEGROUP:
|
||
1126 | fframedialog = new FFrameGroupDialog(this, (FFrameGroup) fframe); |
||
1127 | |||
1128 | break;
|
||
1129 | case RECTANGLENORTH:
|
||
1130 | fframedialog = new FFrameNorthDialog(this, (FFrameNorth) fframe); |
||
1131 | |||
1132 | break;
|
||
1133 | case RECTANGLEBOX:
|
||
1134 | fframedialog = new FFrameBoxDialog(this, (FFrameTable) fframe); |
||
1135 | |||
1136 | break;
|
||
1137 | default:
|
||
1138 | return true; |
||
1139 | } |
||
1140 | |||
1141 | if (fframedialog != null) { |
||
1142 | fframedialog.setRectangle(fframe.getBoundingBox(m_MatrizTransf)); |
||
1143 | PluginServices.getMDIManager().addView(fframedialog); |
||
1144 | } |
||
1145 | |||
1146 | return fframedialog.getIsAcepted();
|
||
1147 | } |
||
1148 | |||
1149 | /**
|
||
1150 | * Devuelve el Rectangle2D que representa en pixels al folio.
|
||
1151 | *
|
||
1152 | * @return Rectangle2D.Double
|
||
1153 | */
|
||
1154 | public Rectangle2D.Double getRect() { |
||
1155 | return rect;
|
||
1156 | } |
||
1157 | |||
1158 | public void setRect(Rectangle2D r) { |
||
1159 | rect.setRect(r); |
||
1160 | } |
||
1161 | |||
1162 | /**
|
||
1163 | * Obtiene un entero que representa la herramienta seleccionada.
|
||
1164 | *
|
||
1165 | * @return entero.
|
||
1166 | */
|
||
1167 | public int getTool() { |
||
1168 | return tool;
|
||
1169 | } |
||
1170 | |||
1171 | /**
|
||
1172 | * Devuelve la Matriz transformada que se esta plicando al Layout.
|
||
1173 | *
|
||
1174 | * @return AffineTransform
|
||
1175 | */
|
||
1176 | public AffineTransform getAT() { |
||
1177 | return m_MatrizTransf;
|
||
1178 | } |
||
1179 | |||
1180 | /**
|
||
1181 | * Devuelve los atributos del Mapa.
|
||
1182 | *
|
||
1183 | * @return Attributes.
|
||
1184 | */
|
||
1185 | public Attributes getAtributes() { |
||
1186 | return m_attributes;
|
||
1187 | } |
||
1188 | |||
1189 | /**
|
||
1190 | * Pone el estado que se quiera.
|
||
1191 | *
|
||
1192 | * @param s
|
||
1193 | * estado.
|
||
1194 | */
|
||
1195 | public void setStatus(int s) { |
||
1196 | status = s; |
||
1197 | } |
||
1198 | |||
1199 | /**
|
||
1200 | * Devuelve el punto que representa la esquina noroeste del mapa.
|
||
1201 | *
|
||
1202 | * @return un punto.
|
||
1203 | */
|
||
1204 | public Point getRectOrigin() { |
||
1205 | return rectOrigin;
|
||
1206 | } |
||
1207 | |||
1208 | /**
|
||
1209 | * Devuelve el punto del primer click de rat?n.
|
||
1210 | *
|
||
1211 | * @return un punto.
|
||
1212 | */
|
||
1213 | public Point getFirstPoint() { |
||
1214 | return m_FirstPoint;
|
||
1215 | } |
||
1216 | |||
1217 | /**
|
||
1218 | * Devuelve el punto de click de rat?n anterior.
|
||
1219 | *
|
||
1220 | * @return un punto.
|
||
1221 | */
|
||
1222 | public Point getPointAnt() { |
||
1223 | return m_PointAnt;
|
||
1224 | } |
||
1225 | |||
1226 | /**
|
||
1227 | * Devuelve el punto donde se solt? el bot?n del rat?n.
|
||
1228 | *
|
||
1229 | * @return un punto.
|
||
1230 | */
|
||
1231 | public Point getLastPoint() { |
||
1232 | return m_LastPoint;
|
||
1233 | } |
||
1234 | |||
1235 | /**
|
||
1236 | * Rellena el primer punto de click de rat?n.
|
||
1237 | *
|
||
1238 | * @param p
|
||
1239 | * punto.
|
||
1240 | */
|
||
1241 | public void setFirstPoint(Point p) { |
||
1242 | m_FirstPoint = p; |
||
1243 | } |
||
1244 | |||
1245 | /**
|
||
1246 | * Rellena el punto de click de rat?n anterior.
|
||
1247 | *
|
||
1248 | * @param p
|
||
1249 | * punto.
|
||
1250 | */
|
||
1251 | public void setPointAnt(Point p) { |
||
1252 | m_PointAnt = p; |
||
1253 | } |
||
1254 | |||
1255 | /**
|
||
1256 | * Rellena el punto donde se solto el bot?n del rat?n.
|
||
1257 | *
|
||
1258 | * @param p
|
||
1259 | * punto.
|
||
1260 | */
|
||
1261 | public void setLastPoint(Point p) { |
||
1262 | m_LastPoint = p; |
||
1263 | } |
||
1264 | |||
1265 | /**
|
||
1266 | * This method is used to get <strong>an initial</strong> ViewInfo object
|
||
1267 | * for this Map. It is not intended to retrieve the ViewInfo object in a
|
||
1268 | * later time. <strong>Use PluginServices.getMDIManager().getViewInfo(view)
|
||
1269 | * to retrieve the ViewInfo object at any time after the creation of the
|
||
1270 | * object.
|
||
1271 | *
|
||
1272 | * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
|
||
1273 | */
|
||
1274 | public ViewInfo getViewInfo() {
|
||
1275 | if (m_viewInfo == null) { |
||
1276 | m_viewInfo = new ViewInfo(ViewInfo.ICONIFIABLE | ViewInfo.RESIZABLE
|
||
1277 | | ViewInfo.MAXIMIZABLE); |
||
1278 | m_viewInfo.setWidth(500);
|
||
1279 | m_viewInfo.setHeight(400);
|
||
1280 | |||
1281 | m_viewInfo.setTitle(PluginServices.getText(this, "Mapa") + " : " |
||
1282 | + getName()); |
||
1283 | } |
||
1284 | return m_viewInfo;
|
||
1285 | } |
||
1286 | |||
1287 | /**
|
||
1288 | * Inserta si se muestra o no la regla del Layout.
|
||
1289 | *
|
||
1290 | * @param b
|
||
1291 | * True si se muestra la regla.
|
||
1292 | */
|
||
1293 | public void setRuler(boolean b) { |
||
1294 | m_showRuler = b; |
||
1295 | } |
||
1296 | |||
1297 | /**
|
||
1298 | * Devuelve si se muestra la regla del Layout.
|
||
1299 | *
|
||
1300 | * @return True si se muestra la regla.
|
||
1301 | */
|
||
1302 | public boolean getRuler() { |
||
1303 | return m_showRuler;
|
||
1304 | } |
||
1305 | |||
1306 | /**
|
||
1307 | * Devuelve si se esta aplicando en los fframes que se a?den al Layout la
|
||
1308 | * cuadr?cula, o no.
|
||
1309 | *
|
||
1310 | * @return true si se esta aplicando la cuadr?cula.
|
||
1311 | */
|
||
1312 | public boolean isCuadricula() { |
||
1313 | return isCuadricula;
|
||
1314 | } |
||
1315 | |||
1316 | /**
|
||
1317 | * Se actualiza el estado de la cuadr?cula, si se aplica o no.
|
||
1318 | *
|
||
1319 | * @param b
|
||
1320 | * true si se aplica la cuadr?cula.
|
||
1321 | */
|
||
1322 | public void setIsCuadricula(boolean b) { |
||
1323 | isCuadricula = b; |
||
1324 | } |
||
1325 | |||
1326 | /**
|
||
1327 | * Realiza una exteni?n completa de las capas que contiene la vista del
|
||
1328 | * FFrameView.
|
||
1329 | *
|
||
1330 | * @throws DriverException
|
||
1331 | */
|
||
1332 | public void viewFull() throws DriverException { |
||
1333 | IFFrame[] fframes = getFFrameSelected();
|
||
1334 | for (int i = 0; i < fframes.length; i++) { |
||
1335 | if (fframes[i] instanceof IFFrameUseFMap) { |
||
1336 | IFFrameUseFMap fframe = (IFFrameUseFMap) fframes[i]; |
||
1337 | |||
1338 | if (fframe.getFMap() != null) { |
||
1339 | fframe.fullExtent(); |
||
1340 | } |
||
1341 | fframe.refresh(); |
||
1342 | } |
||
1343 | } |
||
1344 | refresh(); |
||
1345 | } |
||
1346 | |||
1347 | /**
|
||
1348 | * Devuelve un Objeto XMLEntity con la informaci?n los atributos necesarios
|
||
1349 | * para poder despu?s volver a crear el objeto original.
|
||
1350 | *
|
||
1351 | * @return XMLEntity.
|
||
1352 | *
|
||
1353 | * @throws XMLException
|
||
1354 | */
|
||
1355 | public XMLEntity getXMLEntity() {
|
||
1356 | XMLEntity xml = new XMLEntity();
|
||
1357 | xml.putProperty("className", this.getClass().getName()); |
||
1358 | xml.setName("layout");
|
||
1359 | xml.putProperty("isCuadricula", isCuadricula());
|
||
1360 | xml.putProperty("m_name", this.getName()); |
||
1361 | xml.putProperty("isEditable", isEditable);
|
||
1362 | xml.putProperty("numBehind", numBehind);
|
||
1363 | xml.putProperty("numBefore", numBefore);
|
||
1364 | xml.addChild(getAtributes().getXMLEntity()); |
||
1365 | |||
1366 | for (int i = 0; i < getFFrames().length; i++) { |
||
1367 | try {
|
||
1368 | XMLEntity xmlAux = ((IFFrame) getFFrame(i)).getXMLEntity(); |
||
1369 | xml.addChild(xmlAux); |
||
1370 | } catch (SaveException e) {
|
||
1371 | e.showError(); |
||
1372 | } |
||
1373 | } |
||
1374 | return xml;
|
||
1375 | } |
||
1376 | |||
1377 | /**
|
||
1378 | * Crea un Objeto de esta clase a partir de la informaci?n del XMLEntity.
|
||
1379 | *
|
||
1380 | * @param xml
|
||
1381 | * XMLEntity
|
||
1382 | * @param p
|
||
1383 | * Proyecto.
|
||
1384 | *
|
||
1385 | * @return Objeto de esta clase.
|
||
1386 | * @throws OpenException
|
||
1387 | */
|
||
1388 | public static Layout createLayout(XMLEntity xml, Project p) |
||
1389 | throws OpenException {
|
||
1390 | Layout layout = new Layout();
|
||
1391 | try {
|
||
1392 | layout.isCuadricula = xml.getBooleanProperty("isCuadricula");
|
||
1393 | layout.setName(xml.getStringProperty("m_name"));
|
||
1394 | layout.m_attributes = Attributes.createAtributes(xml.getChild(0)); |
||
1395 | if (xml.contains("isEditable")) { |
||
1396 | layout.setEditable(xml.getBooleanProperty("isEditable"));
|
||
1397 | } |
||
1398 | if (xml.contains("numBehind")) { |
||
1399 | layout.numBehind = xml.getIntProperty("numBehind");
|
||
1400 | layout.numBefore = xml.getIntProperty("numBefore");
|
||
1401 | } |
||
1402 | layout.getEFS().startComplexCommand(); |
||
1403 | for (int i = 1; i < xml.getNumChild(); i++) { |
||
1404 | try {
|
||
1405 | layout.addFFrame(FFrame.createFFrame(xml.getChild(i), p, |
||
1406 | layout), true, false); |
||
1407 | 3185 | caballero | } catch (OpenException e) {
|
1408 | e.showError(); |
||
1409 | } |
||
1410 | 5729 | caballero | } |
1411 | 6071 | caballero | layout.getEFS().endComplexCommand(PluginServices.getText(layout,"Inicializando"));
|
1412 | 5729 | caballero | IFFrame[] fframes = layout.getAllFFrames();
|
1413 | for (int i = 0; i < fframes.length; i++) { |
||
1414 | if (fframes[i] instanceof IFFrameLayoutDependence) { |
||
1415 | ((IFFrameLayoutDependence) fframes[i]).setLayout(layout); |
||
1416 | } |
||
1417 | if (fframes[i] instanceof IFFrameViewDependence) { |
||
1418 | ((IFFrameViewDependence) fframes[i]) |
||
1419 | .initDependence(fframes); |
||
1420 | } |
||
1421 | } |
||
1422 | } catch (Exception e) { |
||
1423 | throw new OpenException(e, layout.getClass().getName()); |
||
1424 | 3185 | caballero | } |
1425 | 5729 | caballero | return layout;
|
1426 | } |
||
1427 | 312 | fernando | |
1428 | 5729 | caballero | /**
|
1429 | * Crea un Objeto de esta clase a partir de la informaci?n del XMLEntity.
|
||
1430 | *
|
||
1431 | * @param xml
|
||
1432 | * XMLEntity
|
||
1433 | * @param p
|
||
1434 | * Proyecto.
|
||
1435 | *
|
||
1436 | * @return Objeto de esta clase.
|
||
1437 | */
|
||
1438 | public static Layout createLayout03(XMLEntity xml, Project p) { |
||
1439 | Layout layout = new Layout();
|
||
1440 | layout.isCuadricula = xml.getBooleanProperty("isCuadricula");
|
||
1441 | layout.setName(xml.getStringProperty("m_name"));
|
||
1442 | layout.m_attributes = Attributes.createAtributes03(xml.getChild(0)); |
||
1443 | 312 | fernando | |
1444 | 5729 | caballero | for (int i = 1; i < xml.getNumChild(); i++) { |
1445 | if (xml.getChild(i).getStringProperty("className").equals( |
||
1446 | "com.iver.cit.gvsig.gui.layout.fframe.FFrameView")) {
|
||
1447 | layout.addFFrame(FFrame.createFFrame03(xml.getChild(i), layout, |
||
1448 | p), true, false); |
||
1449 | } |
||
1450 | } |
||
1451 | 312 | fernando | |
1452 | 5729 | caballero | for (int i = 1; i < xml.getNumChild(); i++) { |
1453 | if (!xml.getChild(i).getStringProperty("className").equals( |
||
1454 | "com.iver.cit.gvsig.gui.layout.fframe.FFrameView")) {
|
||
1455 | layout.addFFrame(FFrame.createFFrame03(xml.getChild(i), layout, |
||
1456 | p), true, false); |
||
1457 | } |
||
1458 | } |
||
1459 | 312 | fernando | |
1460 | 5729 | caballero | return layout;
|
1461 | } |
||
1462 | 362 | vcaballero | |
1463 | 5729 | caballero | /**
|
1464 | * @see com.iver.mdiApp.ui.MDIManager.View#viewActivated()
|
||
1465 | */
|
||
1466 | public void viewActivated() { |
||
1467 | 5964 | caballero | //fullRect();
|
1468 | 5729 | caballero | repaint(); |
1469 | PluginServices.getMainFrame().getStatusBar().setMessage("1",
|
||
1470 | getAtributes().getNameUnit()); |
||
1471 | } |
||
1472 | 899 | vcaballero | |
1473 | 5729 | caballero | /**
|
1474 | * @see com.iver.mdiApp.ui.MDIManager.SingletonView#getViewModel()
|
||
1475 | */
|
||
1476 | public Object getViewModel() { |
||
1477 | return map;
|
||
1478 | } |
||
1479 | 961 | vcaballero | |
1480 | 5729 | caballero | /**
|
1481 | * Devuelve si se dibuja el Grid en el Layout o no.
|
||
1482 | *
|
||
1483 | * @return True si se dibuja el Grid en el Layout.
|
||
1484 | */
|
||
1485 | public boolean getIsDrawGrid() { |
||
1486 | return isDrawCuadricula;
|
||
1487 | } |
||
1488 | 1550 | vcaballero | |
1489 | 5729 | caballero | /**
|
1490 | * Inserta si se muestra el Grid del Layout.
|
||
1491 | *
|
||
1492 | * @param b
|
||
1493 | * True si se muestra el Grid del Layout.
|
||
1494 | */
|
||
1495 | public void setIsDrawGrid(boolean b) { |
||
1496 | isDrawCuadricula = b; |
||
1497 | } |
||
1498 | 1550 | vcaballero | |
1499 | 5729 | caballero | /**
|
1500 | * @see com.iver.cit.gvsig.fmap.ExtentListener#extentChanged(com.iver.cit.gvsig.fmap.ExtentEvent)
|
||
1501 | */
|
||
1502 | public void extentChanged(ExtentEvent e) { |
||
1503 | } |
||
1504 | 1210 | vcaballero | |
1505 | 5729 | caballero | /**
|
1506 | * @see com.iver.andami.ui.mdiManager.ViewListener#viewClosed()
|
||
1507 | */
|
||
1508 | public void viewClosed() { |
||
1509 | // /PluginServices.getMainFrame().getStatusBar().setMessage("1","");
|
||
1510 | } |
||
1511 | 1550 | vcaballero | |
1512 | 5729 | caballero | /**
|
1513 | * @see com.iver.cit.gvsig.fmap.ViewPortListener#backColorChanged(com.iver.cit.gvsig.fmap.ColorEvent)
|
||
1514 | */
|
||
1515 | public void backColorChanged(ColorEvent e) { |
||
1516 | // refresh();
|
||
1517 | } |
||
1518 | 2342 | vcaballero | |
1519 | 5729 | caballero | /**
|
1520 | * Devuelve un array con los FFrames seleccionados.
|
||
1521 | *
|
||
1522 | * @return Array con los FFrames seleccionados.
|
||
1523 | */
|
||
1524 | public IFFrame[] getFFrameSelected() { |
||
1525 | ArrayList selecList = new ArrayList(); |
||
1526 | 2342 | vcaballero | |
1527 | 5729 | caballero | for (int i = getFFrames().length - 1; i >= 0; i--) { |
1528 | IFFrame fframe = (IFFrame) getFFrame(i); |
||
1529 | 2342 | vcaballero | |
1530 | 5729 | caballero | if (fframe.getSelected() != IFFrame.NOSELECT) {
|
1531 | selecList.add(fframe); |
||
1532 | } |
||
1533 | } |
||
1534 | 2835 | caballero | |
1535 | 5729 | caballero | return (IFFrame[]) selecList.toArray(new IFFrame[0]); |
1536 | } |
||
1537 | 2835 | caballero | |
1538 | 5729 | caballero | /**
|
1539 | * Opens a dialog where to pick a PDF-file to save the current Layout
|
||
1540 | * suggesting a name for the file given by the first argument
|
||
1541 | *
|
||
1542 | * @param suggestedName
|
||
1543 | */
|
||
1544 | public void layoutToPDF(String suggestedName) { |
||
1545 | FileFilter pdfFilter = new GenericFileFilter("pdf", PluginServices |
||
1546 | .getText(this, "pdf")); |
||
1547 | 2835 | caballero | |
1548 | 5729 | caballero | JFileChooser jfc = new JFileChooser(); |
1549 | if (suggestedName != null) |
||
1550 | jfc.setSelectedFile(new File(suggestedName)); |
||
1551 | jfc.addChoosableFileFilter(pdfFilter); |
||
1552 | jfc.setFileFilter(pdfFilter); |
||
1553 | 2835 | caballero | |
1554 | 5729 | caballero | if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) { |
1555 | File f = jfc.getSelectedFile();
|
||
1556 | File faux = null; |
||
1557 | 2835 | caballero | |
1558 | 5729 | caballero | if (f.getName().endsWith(".pdf") || f.getName().endsWith(".PDF")) { |
1559 | faux = f; |
||
1560 | } else {
|
||
1561 | faux = new File(f.getPath() + ".pdf"); |
||
1562 | } |
||
1563 | 2835 | caballero | |
1564 | 5729 | caballero | layoutDraw.toPDF(faux); |
1565 | } |
||
1566 | } |
||
1567 | 2835 | caballero | |
1568 | 5729 | caballero | /**
|
1569 | * Abre un di?logo para seleccionar un fichero pdf donde guardar el Layout
|
||
1570 | * en este formato.
|
||
1571 | */
|
||
1572 | public void layoutToPDF() { |
||
1573 | layoutToPDF(null);
|
||
1574 | } |
||
1575 | 2846 | caballero | |
1576 | 5729 | caballero | /**
|
1577 | * @return Returns the bModeDebug.
|
||
1578 | */
|
||
1579 | public boolean isModeDebug() { |
||
1580 | return bModeDebug;
|
||
1581 | } |
||
1582 | 3043 | fjp | |
1583 | 5729 | caballero | /**
|
1584 | * @param modeDebug
|
||
1585 | * The bModeDebug to set.
|
||
1586 | */
|
||
1587 | public void setModeDebug(boolean modeDebug) { |
||
1588 | bModeDebug = modeDebug; |
||
1589 | } |
||
1590 | 3043 | fjp | |
1591 | 5729 | caballero | private ArrayList allFFrames(IFFrame[] fframes, ArrayList all) { |
1592 | for (int i = 0; i < fframes.length; i++) { |
||
1593 | if (fframes[i] instanceof FFrameGroup) { |
||
1594 | return allFFrames(((FFrameGroup) fframes[i]).getFFrames(), all);
|
||
1595 | 4120 | caballero | |
1596 | 5729 | caballero | } else {
|
1597 | all.add(fframes[i]); |
||
1598 | } |
||
1599 | } |
||
1600 | return all;
|
||
1601 | } |
||
1602 | 4120 | caballero | |
1603 | 3135 | caballero | public IFFrame[] getAllFFrames() { |
1604 | 5729 | caballero | ArrayList all = new ArrayList(); |
1605 | return (IFFrame[]) allFFrames(getFFrames(), all) |
||
1606 | .toArray(new IFFrame[0]); |
||
1607 | 3103 | caballero | } |
1608 | 3548 | caballero | |
1609 | public GeometryAdapter getGeometryAdapter() {
|
||
1610 | return geometryAdapter;
|
||
1611 | } |
||
1612 | 5729 | caballero | |
1613 | public boolean isEditable() { |
||
1614 | 3369 | caballero | return isEditable;
|
1615 | 3106 | caballero | } |
1616 | 5729 | caballero | |
1617 | 3369 | caballero | public void setEditable(boolean b) { |
1618 | 5729 | caballero | isEditable = b; |
1619 | 3106 | caballero | } |
1620 | 5729 | caballero | |
1621 | 3548 | caballero | public void initGeometryAdapter() { |
1622 | if (getTool() == LINE) {
|
||
1623 | 5729 | caballero | geometryAdapter = new PolyLineAdapter();
|
1624 | } else if (getTool() == RECTANGLESIMPLE) { |
||
1625 | geometryAdapter = new RectangleAdapter();
|
||
1626 | } else if (getTool() == POLYLINE) { |
||
1627 | geometryAdapter = new PolyLineAdapter();
|
||
1628 | } else if (getTool() == POLYGON) { |
||
1629 | geometryAdapter = new PolygonAdapter();
|
||
1630 | } else if (getTool() == CIRCLE) { |
||
1631 | geometryAdapter = new CircleAdapter();
|
||
1632 | } else if (getTool() == POINT) { |
||
1633 | geometryAdapter = new PointAdapter();
|
||
1634 | } |
||
1635 | 3548 | caballero | } |
1636 | 5729 | caballero | |
1637 | 3548 | caballero | public void startEdit() { |
1638 | 5729 | caballero | for (int i = 0; i < getFFrames().length; i++) { |
1639 | IFFrame frame = (IFFrame) getFFrame(i); |
||
1640 | if (frame instanceof IFFrameEditableVertex) { |
||
1641 | if (frame.getSelected() != IFFrame.NOSELECT) {
|
||
1642 | ((IFFrameEditableVertex) frame).startEditing(); |
||
1643 | } else {
|
||
1644 | ((IFFrameEditableVertex) frame).stopEditing(); |
||
1645 | 3548 | caballero | } |
1646 | } |
||
1647 | 4120 | caballero | |
1648 | 3548 | caballero | } |
1649 | refresh(); |
||
1650 | } |
||
1651 | 5729 | caballero | |
1652 | public void stopEdit() { |
||
1653 | boolean refresh = false; |
||
1654 | for (int i = 0; i < getFFrames().length; i++) { |
||
1655 | IFFrame frame = (IFFrame) getFFrame(i); |
||
1656 | if (frame instanceof IFFrameEditableVertex) { |
||
1657 | if (((IFFrameEditableVertex) frame).isEditing()) {
|
||
1658 | ((IFFrameEditableVertex) getFFrame(i)).stopEditing(); |
||
1659 | refresh = true;
|
||
1660 | 3548 | caballero | } |
1661 | } |
||
1662 | } |
||
1663 | 5729 | caballero | if (refresh)
|
1664 | refresh(); |
||
1665 | 3548 | caballero | } |
1666 | 5729 | caballero | |
1667 | public void delFFrameSelected() { |
||
1668 | 4120 | caballero | efs.startComplexCommand(); |
1669 | 3548 | caballero | for (int i = efs.getAllFFrames().length - 1; i >= 0; i--) { |
1670 | 5729 | caballero | IFFrame fframe = (IFFrame) efs.getFFrame(i); |
1671 | 3548 | caballero | |
1672 | 5729 | caballero | if (fframe.getSelected() != IFFrame.NOSELECT) {
|
1673 | efs.removeFFrame(i); |
||
1674 | } |
||
1675 | } |
||
1676 | 6071 | caballero | efs.endComplexCommand(PluginServices.getText(this,"remove_elements")); |
1677 | 3548 | caballero | updateFFrames(); |
1678 | } |
||
1679 | 5729 | caballero | |
1680 | public void delFFrame(int index) { |
||
1681 | for (int i = 0; i < getEFS().getAllFFrames().length; i++) { |
||
1682 | if (getEFS().getFFrame(i).equals(getFFrame(index))) {
|
||
1683 | 3548 | caballero | getEFS().removeFFrame(i); |
1684 | } |
||
1685 | } |
||
1686 | updateFFrames(); |
||
1687 | } |
||
1688 | 5729 | caballero | |
1689 | public void delFFrame(IFFrame frame) { |
||
1690 | for (int i = 0; i < getEFS().getAllFFrames().length; i++) { |
||
1691 | if (getEFS().getFFrame(i).equals(frame)) {
|
||
1692 | 3548 | caballero | getEFS().removeFFrame(i); |
1693 | } |
||
1694 | } |
||
1695 | updateFFrames(); |
||
1696 | } |
||
1697 | 5729 | caballero | |
1698 | public EditableFeatureSource getEFS() {
|
||
1699 | 3548 | caballero | return efs;
|
1700 | } |
||
1701 | 4120 | caballero | |
1702 | 4140 | caballero | public void commandRepaint() { |
1703 | 4120 | caballero | this.updateFFrames();
|
1704 | this.refresh();
|
||
1705 | } |
||
1706 | 4128 | caballero | |
1707 | public void commandRefresh() { |
||
1708 | 4140 | caballero | commandRepaint(); |
1709 | 4128 | caballero | |
1710 | } |
||
1711 | 5729 | caballero | |
1712 | /**
|
||
1713 | * Introduce la posibilidad de establecer que los cambios que se hacen a
|
||
1714 | * partir de ese momento hasta que se vuelva a poner a false, que todas las
|
||
1715 | * operaciones que realices son sobre los fframes que implementen
|
||
1716 | * IFFrameGroupSelectable.
|
||
1717 | *
|
||
1718 | * @param b
|
||
1719 | */
|
||
1720 | 4775 | caballero | public void setEditGroup(boolean b) { |
1721 | 5729 | caballero | editGroup = b; |
1722 | 4775 | caballero | } |
1723 | 5729 | caballero | |
1724 | 4775 | caballero | /**
|
1725 | * Devuelve true si se est? en modo de edici?n de los fframes que
|
||
1726 | * implementen IFFrameGroupSelectable.
|
||
1727 | 5446 | fjp | *
|
1728 | 4775 | caballero | * @return
|
1729 | */
|
||
1730 | 5729 | caballero | public boolean isEditGroup() { |
1731 | 4775 | caballero | return editGroup;
|
1732 | } |
||
1733 | 5474 | caballero | |
1734 | public int getNumBehind() { |
||
1735 | return --numBehind;
|
||
1736 | } |
||
1737 | |||
1738 | public int getNumBefore() { |
||
1739 | return ++numBefore;
|
||
1740 | } |
||
1741 | 5939 | jmvivo | |
1742 | public void projectionChanged(ProjectionEvent e) { |
||
1743 | // TODO Auto-generated method stub
|
||
1744 | 6071 | caballero | |
1745 | 5939 | jmvivo | } |
1746 | 3103 | caballero | } |