Statistics
| Revision:

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

History | View | Annotate | Download (8.44 KB)

1
/* 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
import java.util.prefs.Preferences;
23

    
24
import org.gvsig.rastertools.cutting.CuttingTocMenuEntry;
25
import org.gvsig.rastertools.filter.FilterTocMenuEntry;
26
import org.gvsig.rastertools.histogram.HistogramTocMenuEntry;
27
import org.gvsig.rastertools.pixelincrease.PixelncreaseDialog;
28
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
import org.gvsig.rastertools.rasterresolution.ZoomPixelCursorTocMenuEntry;
34
import org.gvsig.rastertools.saveraster.map.SaveRasterListener;
35
import org.gvsig.rastertools.selectrasterlayer.SelectImageListener;
36
import org.gvsig.rastertools.wizards.FileOpenRasterDialog;
37

    
38
import com.iver.andami.PluginServices;
39
import com.iver.andami.plugins.Extension;
40
import com.iver.andami.ui.mdiManager.IWindow;
41
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
import com.iver.cit.gvsig.fmap.tools.Behavior.PointBehavior;
47
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
 * 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
 * 
62
 * @author Nacho Brodin (nachobrodin@gmail.com)
63
 */
64
public class RasterModule extends Extension{
65
        
66
        /**
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
        public static void setPath(String value) {
72
                Preferences prefs = Preferences.userRoot().node( "gvsig.foldering" );
73
                prefs.put("DataFolder", value);
74
        }
75
        
76
        /**
77
         * Obtiene la ?ltima ruta seleccionada en cualquier JFileChooser de la 
78
         * extensi?n de raster.
79
         * @return Valor de la ruta
80
         */
81
        public static String getPath() {
82
                Preferences prefs = Preferences.userRoot().node( "gvsig.foldering" );
83
                return prefs.get("DataFolder", null);
84
        }
85
        
86
        /*
87
         * (non-Javadoc)
88
         * @see com.iver.andami.plugins.IExtension#execute(java.lang.String)
89
         */
90
        public void execute(String actionCommand) {
91
                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
                if(actionCommand.equals("SAVERASTER")) {
98
                    loadSaveRasterListener(mapCtrl, sbl);
99
                    mapCtrl.setTool("saveRaster");
100
                }
101
                
102
                if(actionCommand.equals("PIXELINCREASE")) {
103
                        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
                }
113
                
114
                if (actionCommand.equals("SELECTIMAGE")) {
115
                        loadSelectRasterListener(mapCtrl, sbl);
116
                        mapCtrl.setTool("selectRasterLayer");
117
                }
118
        }        
119
        
120
        /**
121
     * Carga el listener de salvar a raster en el MapControl.
122
     */
123
    private void loadSaveRasterListener(MapControl m_MapControl, StatusBarListener sbl) {        
124
        //Si no se ha cargado el listener a?n lo cargamos.
125
        if(m_MapControl.getNamesMapTools().get("saveRaster") == null) {
126
                //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
        
132
    }
133
    
134
        /**
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
        /*
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
            //A?adimos la entrada del toc de la ventana de Histograma.
175
            extensionPoints.add("View_TocActions","HistogramPanel",new HistogramTocMenuEntry());
176

    
177
            //A?adimos la entrada del toc de la ventana de Recorte.
178
            extensionPoints.add("View_TocActions","CuttingPanel",new CuttingTocMenuEntry());
179

    
180
            //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
            extensionPoints.add("View_TocActions","RasterSEProperties",new RasterPropertiesTocMenuEntry());
185
            
186
            //A?adimos la entrada del toc de zoom a la resoluci?n del raster.
187
            extensionPoints.add("View_TocActions","ZoomPixelCursor",new ZoomPixelCursorTocMenuEntry());
188
                        
189
            //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
}