Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / RasterModule.java @ 11894

History | View | Annotate | Download (8.44 KB)

1 11268 nacho
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 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
20
package org.gvsig.rastertools;
21
22 11893 nacho
import java.util.prefs.Preferences;
23
24 11352 bsanchez
import org.gvsig.rastertools.cutting.CuttingTocMenuEntry;
25 11500 bsanchez
import org.gvsig.rastertools.filter.FilterTocMenuEntry;
26 11268 nacho
import org.gvsig.rastertools.histogram.HistogramTocMenuEntry;
27 11592 nacho
import org.gvsig.rastertools.pixelincrease.PixelncreaseDialog;
28 11268 nacho
import org.gvsig.rastertools.properties.dialog.RasterPropertiesTocMenuEntry;
29
import org.gvsig.rastertools.properties.panels.BandSetupPanel;
30
import org.gvsig.rastertools.properties.panels.EnhancedPanel;
31
import org.gvsig.rastertools.properties.panels.InfoPanel;
32
import org.gvsig.rastertools.properties.panels.TransparencyPanel;
33 11662 nacho
import org.gvsig.rastertools.rasterresolution.ZoomPixelCursorTocMenuEntry;
34 11268 nacho
import org.gvsig.rastertools.saveraster.map.SaveRasterListener;
35 11686 nacho
import org.gvsig.rastertools.selectrasterlayer.SelectImageListener;
36 11268 nacho
import org.gvsig.rastertools.wizards.FileOpenRasterDialog;
37
38
import com.iver.andami.PluginServices;
39
import com.iver.andami.plugins.Extension;
40 11592 nacho
import com.iver.andami.ui.mdiManager.IWindow;
41 11268 nacho
import com.iver.cit.gvsig.AddLayer;
42
import com.iver.cit.gvsig.fmap.MapContext;
43
import com.iver.cit.gvsig.fmap.MapControl;
44
import com.iver.cit.gvsig.fmap.tools.Behavior.Behavior;
45
import com.iver.cit.gvsig.fmap.tools.Behavior.MouseMovementBehavior;
46 11686 nacho
import com.iver.cit.gvsig.fmap.tools.Behavior.PointBehavior;
47 11268 nacho
import com.iver.cit.gvsig.fmap.tools.Behavior.RectangleBehavior;
48
import com.iver.cit.gvsig.project.documents.view.IProjectView;
49
import com.iver.cit.gvsig.project.documents.view.gui.View;
50
import com.iver.cit.gvsig.project.documents.view.toolListeners.StatusBarListener;
51
import com.iver.utiles.extensionPoints.ExtensionPoint;
52
import com.iver.utiles.extensionPoints.ExtensionPoints;
53
import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
54
55
/**
56 11715 bsanchez
 * Extensi?n que adapta a FMap y gvSIG la nueva implementaci?n de raster. Para
57
 * el cuadro de Propiedades de visualizaci?n de raster contiene el contenedor
58
 * base se registran la entrada del men? del TOC y los paneles en el cuadro.
59
 * Para la parte de FMap contiene una nueva capa raster y los drivers
60
 * necesarios.
61 11268 nacho
 *
62
 * @author Nacho Brodin (nachobrodin@gmail.com)
63
 */
64
public class RasterModule extends Extension{
65 11592 nacho
66 11894 nacho
        /**
67
         * Asigna la ?ltima ruta seleccionada en cualquier JFileChooser de la
68
         * extensi?n de raster.
69
         * @param value Valor de la ruta
70
         */
71 11893 nacho
        public static void setPath(String value) {
72
                Preferences prefs = Preferences.userRoot().node( "gvsig.foldering" );
73
                prefs.put("DataFolder", value);
74
        }
75
76 11894 nacho
        /**
77
         * Obtiene la ?ltima ruta seleccionada en cualquier JFileChooser de la
78
         * extensi?n de raster.
79
         * @return Valor de la ruta
80
         */
81 11893 nacho
        public static String getPath() {
82
                Preferences prefs = Preferences.userRoot().node( "gvsig.foldering" );
83
                return prefs.get("DataFolder", null);
84
        }
85
86 11894 nacho
        /*
87
         * (non-Javadoc)
88
         * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
89
         */
90 11268 nacho
        public void execute(String actionCommand) {
91 11686 nacho
                View theView = (View) PluginServices.getMDIManager().getActiveWindow();
92
            MapControl mapCtrl = theView.getMapControl();
93
94
            //Listener de eventos de movimiento que pone las coordenadas del rat?n en la barra de estado
95
        StatusBarListener sbl = new StatusBarListener(mapCtrl);
96
97 11268 nacho
                if(actionCommand.equals("SAVERASTER")) {
98 11686 nacho
                    loadSaveRasterListener(mapCtrl, sbl);
99
                    mapCtrl.setTool("saveRaster");
100 11268 nacho
                }
101 11591 nacho
102
                if(actionCommand.equals("PIXELINCREASE")) {
103 11592 nacho
                        IWindow[] win = PluginServices.getMDIManager().getAllWindows();
104
                        for (int i = 0; i < win.length; i++) {
105
                                if(win[i] instanceof PixelncreaseDialog) {
106
                                        PluginServices.getMDIManager().closeWindow(win[i]);
107
                                        return;
108
                                }
109
                        }
110
                        PixelncreaseDialog pIncrease = new PixelncreaseDialog();
111
                        PluginServices.getMDIManager().addWindow(pIncrease);
112 11591 nacho
                }
113 11686 nacho
114
                if (actionCommand.equals("SELECTIMAGE")) {
115
                        loadSelectRasterListener(mapCtrl, sbl);
116
                        mapCtrl.setTool("selectRasterLayer");
117
                }
118 11268 nacho
        }
119
120 11686 nacho
        /**
121 11268 nacho
     * Carga el listener de salvar a raster en el MapControl.
122
     */
123 11711 nacho
    private void loadSaveRasterListener(MapControl m_MapControl, StatusBarListener sbl) {
124 11268 nacho
        //Si no se ha cargado el listener a?n lo cargamos.
125 11529 nacho
        if(m_MapControl.getNamesMapTools().get("saveRaster") == null) {
126 11268 nacho
                //Salvar a Raster
127
                SaveRasterListener srl = new SaveRasterListener(m_MapControl);
128
                m_MapControl.addMapTool("saveRaster", new Behavior[]{
129
                                                new RectangleBehavior(srl), new MouseMovementBehavior(sbl)});
130
        }
131 11529 nacho
132 11268 nacho
    }
133
134 11686 nacho
        /**
135
     * Carga el listener de selecci?n de raster en el MapControl.
136
     */
137
    private void loadSelectRasterListener(MapControl mapCtrl, StatusBarListener sbl) {
138
            if(mapCtrl.getNamesMapTools().get("selectRasterLayer") == null) {
139
                        SelectImageListener sil = new SelectImageListener(mapCtrl);
140
                        mapCtrl.addMapTool("selectRasterLayer", new Behavior[]{
141
                                        new PointBehavior(sil), new MouseMovementBehavior(sbl)});
142
                        mapCtrl.setTool("selectRasterLayer");
143
                }
144
    }
145
146 11268 nacho
        /*
147
         * (non-Javadoc)
148
         * @see com.iver.andami.plugins.IExtension#initialize()
149
         */
150
        public void initialize() {
151
                // DiagSignalHandler.install("ALRM");
152
153
                InfoPanel info = new InfoPanel();
154
                BandSetupPanel bandSetup = new BandSetupPanel();
155
                TransparencyPanel transpPanel = new TransparencyPanel();
156
                EnhancedPanel enhancedPanel = new EnhancedPanel();
157
158
                ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
159
160
                //Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
161
                if (!extensionPoints.containsKey("RasterSEProperties")) {
162
                        extensionPoints.put(
163
                                new ExtensionPoint(
164
                                        "RasterSEPropertiesDialog",
165
                                        "Raster Properties registrable panels (register instances of javax.swing.JPanel)")
166
                        );
167
                }
168
                //A?adimos paneles al cuadro de propiedades.
169
            extensionPoints.add("RasterSEPropertiesDialog", info.getID(), info);
170
            extensionPoints.add("RasterSEPropertiesDialog", bandSetup.getID(), bandSetup);
171
            extensionPoints.add("RasterSEPropertiesDialog", transpPanel.getID(), transpPanel);
172
            extensionPoints.add("RasterSEPropertiesDialog", enhancedPanel.getID(), enhancedPanel);
173
174 11500 bsanchez
            //A?adimos la entrada del toc de la ventana de Histograma.
175 11268 nacho
            extensionPoints.add("View_TocActions","HistogramPanel",new HistogramTocMenuEntry());
176
177 11500 bsanchez
            //A?adimos la entrada del toc de la ventana de Recorte.
178 11352 bsanchez
            extensionPoints.add("View_TocActions","CuttingPanel",new CuttingTocMenuEntry());
179
180 11500 bsanchez
            //A?adimos la entrada del toc de la ventana de Filtros.
181
            extensionPoints.add("View_TocActions","FilterPanel",new FilterTocMenuEntry());
182
183
            //A?adimos la entrada del toc del cuadro de Propiedades. Como se llama igual sustituye a la vieja.
184 11268 nacho
            extensionPoints.add("View_TocActions","RasterSEProperties",new RasterPropertiesTocMenuEntry());
185
186 11529 nacho
            //A?adimos la entrada del toc de zoom a la resoluci?n del raster.
187
            extensionPoints.add("View_TocActions","ZoomPixelCursor",new ZoomPixelCursorTocMenuEntry());
188 11550 nacho
189 11268 nacho
            //A?adimos el panel al winzard de cargar capa. (Esto es temporal hasta que el actual sea totalmente extensible)
190
            AddLayer.addWizard(FileOpenRasterDialog.class);
191
        }
192
193
        /*
194
         * (non-Javadoc)
195
         * @see com.iver.andami.plugins.IExtension#isEnabled()
196
         */
197
        public boolean isEnabled() {
198
                return true;
199
        }
200
201
        /**
202
         * Mostramos el control si hay alguna capa cargada.
203
         */
204
        public boolean isVisible() {
205
        com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
206
        if (f == null)
207
                return false;
208
209
        if (f instanceof View) {
210
                View vista = (View) f;
211
                IProjectView model = vista.getModel();
212
                MapContext mapa = model.getMapContext();
213
                if (mapa.getLayers().getLayersCount() > 0)
214
                        return true;
215
        }
216
217
        return false;
218
        }
219
220
}