Statistics
| Revision:

svn-gvsig-desktop / branches / gvSIG_CAD_Layout_version / applications / appgvSIG / src / com / iver / cit / gvsig / gui / View.java @ 1649

History | View | Annotate | Download (13 KB)

1 1103 fjp
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41 312 fernando
package com.iver.cit.gvsig.gui;
42
43
import java.awt.BorderLayout;
44
import java.awt.Color;
45
import java.awt.Dimension;
46 596 fernando
import java.awt.image.BufferedImage;
47 644 fernando
import java.beans.PropertyChangeEvent;
48
import java.beans.PropertyChangeListener;
49 1349 fernando
import java.io.File;
50 312 fernando
51
import javax.swing.JPanel;
52
import javax.swing.JScrollPane;
53
import javax.swing.JSplitPane;
54
55 904 fjp
import org.cresques.cts.IProjection;
56
57 1349 fernando
import com.hardcode.driverManager.DriverLoadException;
58
import com.hardcode.driverManager.DriverManager;
59 596 fernando
import com.iver.andami.PluginServices;
60 755 fernando
import com.iver.andami.messages.NotificationManager;
61 596 fernando
import com.iver.andami.ui.mdiManager.SingletonView;
62
import com.iver.andami.ui.mdiManager.ViewInfo;
63 960 vcaballero
import com.iver.andami.ui.mdiManager.ViewListener;
64 1062 fernando
import com.iver.cit.gvsig.fmap.ColorEvent;
65
import com.iver.cit.gvsig.fmap.ExtentEvent;
66 312 fernando
import com.iver.cit.gvsig.fmap.FMap;
67 1062 fernando
import com.iver.cit.gvsig.fmap.ViewPortListener;
68 899 vcaballero
import com.iver.cit.gvsig.fmap.core.v02.FConstant;
69 1349 fernando
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver;
70
import com.iver.cit.gvsig.fmap.edition.DefaultEditableFeatureSource;
71
import com.iver.cit.gvsig.fmap.edition.EditionException;
72
import com.iver.cit.gvsig.fmap.edition.FileEditableFeatureSource;
73
import com.iver.cit.gvsig.fmap.edition.MemoryExpansionFile;
74 312 fernando
import com.iver.cit.gvsig.fmap.layers.FLayer;
75 1349 fernando
import com.iver.cit.gvsig.fmap.layers.VectorialFileAdapter;
76 1062 fernando
import com.iver.cit.gvsig.fmap.tools.CompoundBehavior;
77 1115 fjp
import com.iver.cit.gvsig.fmap.tools.ZoomOutRightButtonListener;
78 1221 fernando
import com.iver.cit.gvsig.fmap.tools.Behavior.PolygonBehavior;
79
import com.iver.cit.gvsig.fmap.tools.Behavior.Behavior;
80
import com.iver.cit.gvsig.fmap.tools.Behavior.PolylineBehavior;
81
import com.iver.cit.gvsig.fmap.tools.Behavior.MouseMovementBehavior;
82
import com.iver.cit.gvsig.fmap.tools.Behavior.MoveBehavior;
83
import com.iver.cit.gvsig.fmap.tools.Behavior.PointBehavior;
84
import com.iver.cit.gvsig.fmap.tools.Behavior.RectangleBehavior;
85 1487 fernando
import com.iver.cit.gvsig.gui.cad.CADToolAdapter;
86
import com.iver.cit.gvsig.gui.cad.CadMapControl;
87
import com.iver.cit.gvsig.gui.cad.tools.PointCadTool;
88 480 fjp
import com.iver.cit.gvsig.gui.toc.TOC;
89 775 vcaballero
import com.iver.cit.gvsig.gui.toolListeners.AreaListener;
90
import com.iver.cit.gvsig.gui.toolListeners.InfoListener;
91
import com.iver.cit.gvsig.gui.toolListeners.LinkListener;
92 666 fernando
import com.iver.cit.gvsig.gui.toolListeners.MeasureListener;
93 842 vcaballero
import com.iver.cit.gvsig.gui.toolListeners.PanListener;
94
import com.iver.cit.gvsig.gui.toolListeners.PointSelectListener;
95
import com.iver.cit.gvsig.gui.toolListeners.RectangleSelectListener;
96 1009 vcaballero
import com.iver.cit.gvsig.gui.toolListeners.StatusBarListener;
97 842 vcaballero
import com.iver.cit.gvsig.gui.toolListeners.ZoomInListener;
98
import com.iver.cit.gvsig.gui.toolListeners.ZoomOutListener;
99 1221 fernando
import com.iver.cit.gvsig.project.ProjectView;
100 862 fjp
import com.iver.utiles.exceptionHandling.ExceptionListener;
101 312 fernando
102
103
/**
104
 * DOCUMENT ME!
105
 *
106
 * @author vcn
107
 */
108 904 fjp
public class View extends JPanel implements com.iver.andami.ui.mdiManager.View,
109 1349 fernando
    SingletonView,ViewListener {
110 312 fernando
111
    /** DOCUMENT ME! */
112 1349 fernando
    private CadMapControl m_CadMapControl;
113 655 fjp
    private MapOverview m_MapLoc;
114 312 fernando
115
    /** DOCUMENT ME! */
116 755 fernando
    private FThemePropertiesDialog m_Themeproperties;
117 312 fernando
    private JScrollPane jscrollTOC;
118
    private TOC m_TOC;
119 359 fjp
    private ProjectView modelo;
120 312 fernando
    private Table table = null;
121 1349 fernando
        private ViewExceptionListener CadMapControlExceptionListener = new ViewExceptionListener();
122 904 fjp
123 312 fernando
    /**
124
     * Creates a new View object.
125
     */
126
    public View() {
127
        //this.setName(Utilities.getMessage(this, "Vista")+ " : "+modelo.getName());
128
        this.setPreferredSize(new Dimension(500, 300));
129
        initComponents();
130
    }
131
132
    /**
133
     * DOCUMENT ME!
134
     *
135
     * @return DOCUMENT ME!
136
     */
137
    public ProjectView getModel() {
138
        return modelo;
139
    }
140
141
    /**
142
     * DOCUMENT ME!
143
     *
144
     * @param model DOCUMENT ME!
145
     */
146
    public void setModel(ProjectView model) {
147
        this.modelo = model;
148
149 457 fernando
        //Se registra como listener de cambios en FMap
150 312 fernando
        FMap fmap = modelo.getMapContext();
151
152 1349 fernando
        //Se configura el CadMapControl
153 1373 fernando
        m_CadMapControl.setMapContext(fmap);
154 493 fjp
        m_TOC.setMapContext(fmap);
155 1349 fernando
        m_CadMapControl.setBackground(new Color(255, 255, 255));
156 944 vcaballero
        if (modelo.getMapOverViewContext()!=null){
157
                m_MapLoc.setModel(modelo.getMapOverViewContext());
158
        }
159 644 fernando
        model.addPropertyChangeListener(new PropertyChangeListener() {
160
                        public void propertyChange(PropertyChangeEvent evt) {
161
                                if (evt.getPropertyName().equals("name")){
162
                                        PluginServices.getMDIManager().getViewInfo(View.this).setTitle("Vista: " + (String)evt.getNewValue());
163
                                }
164
                        }
165
                });
166 1062 fernando
167 1511 vcaballero
        if (m_CadMapControl.getMapContext().getViewPort() != null){
168
        m_CadMapControl.getMapContext().getViewPort().addViewPortListener(new ViewPortListener() {
169 1062 fernando
                        public void extentChanged(ExtentEvent e) {
170 1139 vcaballero
                                if (PluginServices.getMainFrame() != null){
171 1349 fernando
                                        PluginServices.getMainFrame().getStatusBar().setMessage("6", "1:"+m_CadMapControl.getMapContext().getScaleView());
172 1511 vcaballero
                                        PluginServices.getMainFrame().getStatusBar().setMessage("7",  m_CadMapControl.getMapContext().getViewPort().getProjection().getAbrev());
173 1139 vcaballero
                                }
174 1062 fernando
                        }
175
176
                        public void backColorChanged(ColorEvent e) {
177
                        }
178 1327 fjp
                });
179 1511 vcaballero
        }
180 312 fernando
    }
181 960 vcaballero
   /**
182 312 fernando
     * DOCUMENT ME!
183
     */
184
    public void openThemeProperties() {
185
            FMap fmap = modelo.getMapContext();
186
            FLayer[] actives = fmap.getLayers().getActives();
187
188
            for (int i = 0; i < actives.length; i++){
189 960 vcaballero
            m_Themeproperties = new FThemePropertiesDialog(actives[i], modelo);
190 596 fernando
            PluginServices.getMDIManager().addView(m_Themeproperties);
191 312 fernando
            }
192
    }
193
194
    /**
195
     * DOCUMENT ME!
196
     */
197
    private void initComponents() { //GEN-BEGIN:initComponents
198 1349 fernando
        m_CadMapControl = new CadMapControl();
199
        m_CadMapControl.getMapControl().addExceptionListener(CadMapControlExceptionListener);
200
        // modelo.setMapContext(m_CadMapControl.getMapContext());
201 312 fernando
202 1349 fernando
        // m_CadMapControl.setAcceptEvents(true); Lo comento porque ya se hace en el setModel
203 493 fjp
        m_TOC = new TOC();
204 312 fernando
205
        JSplitPane tempMainSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
206
        tempMainSplit.setPreferredSize(new Dimension(500, 300));
207
208
        // Ponemos el localizador
209 1349 fernando
        m_MapLoc = new MapOverview(m_CadMapControl.getMapControl());
210 312 fernando
        m_MapLoc.setPreferredSize(new Dimension(150, 200));
211
        JSplitPane tempSplitToc = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
212
213
        tempSplitToc.setTopComponent((TOC) m_TOC);
214
        tempSplitToc.setBottomComponent(m_MapLoc);
215
        tempSplitToc.setResizeWeight(0.7);
216
217
        // tempSplitToc.resetToPreferredSizes();
218
        tempMainSplit.setLeftComponent(tempSplitToc);
219
220
        m_TOC.setVisible(true);
221
222
        // m_TOC.setPreferredSize(new Dimension(150,50));
223 1349 fernando
        tempMainSplit.setRightComponent(m_CadMapControl);
224 312 fernando
        this.setLayout(new BorderLayout());
225
        this.add(tempMainSplit, BorderLayout.CENTER);
226 1062 fernando
227
        //Listener de eventos de movimiento que pone las coordenadas del rat?n en la barra de estado
228 1349 fernando
        StatusBarListener sbl = new StatusBarListener(m_CadMapControl.getMapControl());
229 1403 fernando
        m_CadMapControl.addMapTool("coords", new MouseMovementBehavior(sbl));
230
        m_CadMapControl.getMapControl().pushTool("coords");
231 359 fjp
232 375 fjp
        // Zoom out (pinchas y el mapa se centra y te muestra m?s).
233
        // No es dibujando un rect?ngulo, es solo pinchando.
234 1349 fernando
        ZoomOutListener zol = new ZoomOutListener(m_CadMapControl.getMapControl());
235 1403 fernando
        m_CadMapControl.addMapTool("zoomOut", new PointBehavior(zol));
236 375 fjp
237
        // pan
238
239 1349 fernando
        PanListener pl = new PanListener(m_CadMapControl.getMapControl());
240 1403 fernando
        m_CadMapControl.addMapTool("pan", new MoveBehavior(pl));
241 375 fjp
242
        // Medir
243
244 1349 fernando
        MeasureListener mli = new MeasureListener(m_CadMapControl.getMapControl());
245 1403 fernando
        m_CadMapControl.addMapTool("medicion", new PolylineBehavior(mli));
246 375 fjp
247
        // Area
248
249 1349 fernando
        AreaListener ali = new AreaListener(m_CadMapControl.getMapControl());
250 1403 fernando
        m_CadMapControl.addMapTool("area", new PolygonBehavior(ali));
251 375 fjp
252 457 fernando
        //Seleccion por punto
253 1349 fernando
        PointSelectListener psl = new PointSelectListener(m_CadMapControl.getMapControl());
254 1403 fernando
        m_CadMapControl.getMapControl().addMapTool("pointSelection", new PointBehavior(psl));
255 482 vcaballero
256
        //Info por punto
257 1349 fernando
        InfoListener il = new InfoListener(m_CadMapControl.getMapControl());
258 1403 fernando
        m_CadMapControl.getMapControl().addMapTool("info", new PointBehavior(il));
259 482 vcaballero
260 775 vcaballero
//      Link por punto
261 1349 fernando
        LinkListener ll = new LinkListener(m_CadMapControl.getMapControl());
262 1403 fernando
        m_CadMapControl.getMapControl().addMapTool("link", new PointBehavior(ll));
263 482 vcaballero
264 457 fernando
        //Selecci?n por rect?ngulo
265 1349 fernando
        RectangleSelectListener rsl = new RectangleSelectListener(m_CadMapControl.getMapControl());
266 1403 fernando
        m_CadMapControl.getMapControl().addMapTool("rectSelection", new RectangleBehavior(rsl));
267
268 1062 fernando
        // Zoom por rect?ngulo
269 1349 fernando
        ZoomOutRightButtonListener zoil = new ZoomOutRightButtonListener(m_CadMapControl.getMapControl());
270
        ZoomInListener zil = new ZoomInListener(m_CadMapControl.getMapControl());
271 1403 fernando
        m_CadMapControl.getMapControl().addMapTool("zoomIn", new Behavior[]{new PointBehavior(zoil), new RectangleBehavior(zil)});
272 375 fjp
273 1349 fernando
        // Por defecto
274 1403 fernando
        m_CadMapControl.getMapControl().pushTool("zoomIn");
275 1349 fernando
276 1373 fernando
     }
277 1349 fernando
278 312 fernando
    /**
279
     * DOCUMENT ME!
280
     */
281 960 vcaballero
   /*public void openPropertiesWindow() {
282 312 fernando
    }
283 960 vcaballero
*/
284 312 fernando
    /**
285
     * DOCUMENT ME!
286
     */
287 960 vcaballero
  /*  public void openQueryWindow() {
288 312 fernando
    }
289 960 vcaballero
*/
290 312 fernando
    /**
291
     * DOCUMENT ME!
292
     *
293
     * @return DOCUMENT ME!
294
     */
295 655 fjp
    public MapOverview getMapOverview() {
296 312 fernando
        return m_MapLoc;
297
    }
298
299
    /**
300
     * DOCUMENT ME!
301
     *
302
     * @return DOCUMENT ME!
303
     */
304 1349 fernando
    public CadMapControl getMapControl() {
305
        return m_CadMapControl;
306 312 fernando
    }
307
308
    /**
309
     * DOCUMENT ME!
310
     *
311
     * @return DOCUMENT ME!
312
     */
313
    public TOC getTOC() {
314
        return m_TOC;
315
    }
316
317
    /**
318
     * DOCUMENT ME!
319
     */
320
    public void repaintMap() {
321 1349 fernando
        m_CadMapControl.getMapControl().drawMap(false);
322 312 fernando
    }
323
324
    /* (non-Javadoc)
325
     * @see com.iver.mdiApp.ui.MDIManager.SingletonView#getModel()
326
     */
327
    public Object getViewModel() {
328
        return modelo;
329
    }
330
331
    /**
332
     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
333
     */
334
    public ViewInfo getViewInfo() {
335 596 fernando
            ViewInfo m_viewInfo = new ViewInfo(ViewInfo.ICONIFIABLE | ViewInfo.RESIZABLE |
336 312 fernando
                        ViewInfo.MAXIMIZABLE);
337
338
                        m_viewInfo.setWidth(500);
339
                        m_viewInfo.setHeight(300);
340 596 fernando
                m_viewInfo.setTitle(PluginServices.getText(this, "Vista") + " : " +
341 312 fernando
                modelo.getName());
342
343
                return m_viewInfo;
344
345
    }
346
347
    /**
348
     * @see com.iver.mdiApp.ui.MDIManager.View#viewActivated()
349
     */
350
    public void viewActivated() {
351 899 vcaballero
            PluginServices.getMainFrame().getStatusBar().setMessage("1",
352 1349 fernando
                            FConstant.NAMES[getMapControl().getMapControl().getMapContext().getViewPort().getMapUnits()]);
353 1511 vcaballero
            PluginServices.getMainFrame().getStatusBar().setMessage("6", "1:"+m_CadMapControl.getMapContext().getScaleView());
354
                PluginServices.getMainFrame().getStatusBar().setMessage("7",  m_CadMapControl.getMapContext().getViewPort().getProjection().getAbrev());
355 312 fernando
356 1511 vcaballero
    }
357
358 312 fernando
        /**
359
         * @return
360
         */
361 596 fernando
        public BufferedImage getImage() {
362 1349 fernando
                return m_CadMapControl.getMapControl().getImage();
363 312 fernando
        }
364 755 fernando
365 904 fjp
        public void setProjection(IProjection proj)
366
        {
367 1349 fernando
                getMapControl().getMapControl().setProjection(proj);
368 904 fjp
        }
369
        public IProjection getProjection()
370
        {
371 1349 fernando
                return getMapControl().getMapControl().getProjection();
372 904 fjp
        }
373
374 755 fernando
        public class ViewExceptionListener implements ExceptionListener {
375
376
                /**
377
                 * @see com.iver.cit.gvsig.fmap.ExceptionListener#exceptionThrown(java.lang.Throwable)
378
                 */
379
                public void exceptionThrown(Throwable t) {
380
                        NotificationManager.addError(t.getMessage(), t);
381
                }
382
383
        }
384 899 vcaballero
385
        /**
386
         * @see com.iver.andami.ui.mdiManager.ViewListener#viewClosed()
387
         */
388
        public void viewClosed() {
389
                ///PluginServices.getMainFrame().getStatusBar().setMessage("1","");
390
        }
391 960 vcaballero
392 312 fernando
}