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