Statistics
| Revision:

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

History | View | Annotate | Download (8.07 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 11893 nacho
        public static void setPath(String value) {
67
                Preferences prefs = Preferences.userRoot().node( "gvsig.foldering" );
68
                prefs.put("DataFolder", value);
69
        }
70
71
        public static String getPath() {
72
                Preferences prefs = Preferences.userRoot().node( "gvsig.foldering" );
73
                return prefs.get("DataFolder", null);
74
        }
75
76 11268 nacho
        public void execute(String actionCommand) {
77 11686 nacho
                View theView = (View) PluginServices.getMDIManager().getActiveWindow();
78
            MapControl mapCtrl = theView.getMapControl();
79
80
            //Listener de eventos de movimiento que pone las coordenadas del rat?n en la barra de estado
81
        StatusBarListener sbl = new StatusBarListener(mapCtrl);
82
83 11268 nacho
                if(actionCommand.equals("SAVERASTER")) {
84 11686 nacho
                    loadSaveRasterListener(mapCtrl, sbl);
85
                    mapCtrl.setTool("saveRaster");
86 11268 nacho
                }
87 11591 nacho
88
                if(actionCommand.equals("PIXELINCREASE")) {
89 11592 nacho
                        IWindow[] win = PluginServices.getMDIManager().getAllWindows();
90
                        for (int i = 0; i < win.length; i++) {
91
                                if(win[i] instanceof PixelncreaseDialog) {
92
                                        PluginServices.getMDIManager().closeWindow(win[i]);
93
                                        return;
94
                                }
95
                        }
96
                        PixelncreaseDialog pIncrease = new PixelncreaseDialog();
97
                        PluginServices.getMDIManager().addWindow(pIncrease);
98 11591 nacho
                }
99 11686 nacho
100
                if (actionCommand.equals("SELECTIMAGE")) {
101
                        loadSelectRasterListener(mapCtrl, sbl);
102
                        mapCtrl.setTool("selectRasterLayer");
103
                }
104 11268 nacho
        }
105
106 11686 nacho
        /**
107 11268 nacho
     * Carga el listener de salvar a raster en el MapControl.
108
     */
109 11711 nacho
    private void loadSaveRasterListener(MapControl m_MapControl, StatusBarListener sbl) {
110 11268 nacho
        //Si no se ha cargado el listener a?n lo cargamos.
111 11529 nacho
        if(m_MapControl.getNamesMapTools().get("saveRaster") == null) {
112 11268 nacho
                //Salvar a Raster
113
                SaveRasterListener srl = new SaveRasterListener(m_MapControl);
114
                m_MapControl.addMapTool("saveRaster", new Behavior[]{
115
                                                new RectangleBehavior(srl), new MouseMovementBehavior(sbl)});
116
        }
117 11529 nacho
118 11268 nacho
    }
119
120 11686 nacho
        /**
121
     * Carga el listener de selecci?n de raster en el MapControl.
122
     */
123
    private void loadSelectRasterListener(MapControl mapCtrl, StatusBarListener sbl) {
124
            if(mapCtrl.getNamesMapTools().get("selectRasterLayer") == null) {
125
                        SelectImageListener sil = new SelectImageListener(mapCtrl);
126
                        mapCtrl.addMapTool("selectRasterLayer", new Behavior[]{
127
                                        new PointBehavior(sil), new MouseMovementBehavior(sbl)});
128
                        mapCtrl.setTool("selectRasterLayer");
129
                }
130
    }
131
132 11268 nacho
        /*
133
         * (non-Javadoc)
134
         * @see com.iver.andami.plugins.IExtension#initialize()
135
         */
136
        public void initialize() {
137
                // DiagSignalHandler.install("ALRM");
138
139
                InfoPanel info = new InfoPanel();
140
                BandSetupPanel bandSetup = new BandSetupPanel();
141
                TransparencyPanel transpPanel = new TransparencyPanel();
142
                EnhancedPanel enhancedPanel = new EnhancedPanel();
143
144
                ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
145
146
                //Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
147
                if (!extensionPoints.containsKey("RasterSEProperties")) {
148
                        extensionPoints.put(
149
                                new ExtensionPoint(
150
                                        "RasterSEPropertiesDialog",
151
                                        "Raster Properties registrable panels (register instances of javax.swing.JPanel)")
152
                        );
153
                }
154
                //A?adimos paneles al cuadro de propiedades.
155
            extensionPoints.add("RasterSEPropertiesDialog", info.getID(), info);
156
            extensionPoints.add("RasterSEPropertiesDialog", bandSetup.getID(), bandSetup);
157
            extensionPoints.add("RasterSEPropertiesDialog", transpPanel.getID(), transpPanel);
158
            extensionPoints.add("RasterSEPropertiesDialog", enhancedPanel.getID(), enhancedPanel);
159
160 11500 bsanchez
            //A?adimos la entrada del toc de la ventana de Histograma.
161 11268 nacho
            extensionPoints.add("View_TocActions","HistogramPanel",new HistogramTocMenuEntry());
162
163 11500 bsanchez
            //A?adimos la entrada del toc de la ventana de Recorte.
164 11352 bsanchez
            extensionPoints.add("View_TocActions","CuttingPanel",new CuttingTocMenuEntry());
165
166 11500 bsanchez
            //A?adimos la entrada del toc de la ventana de Filtros.
167
            extensionPoints.add("View_TocActions","FilterPanel",new FilterTocMenuEntry());
168
169
            //A?adimos la entrada del toc del cuadro de Propiedades. Como se llama igual sustituye a la vieja.
170 11268 nacho
            extensionPoints.add("View_TocActions","RasterSEProperties",new RasterPropertiesTocMenuEntry());
171
172 11529 nacho
            //A?adimos la entrada del toc de zoom a la resoluci?n del raster.
173
            extensionPoints.add("View_TocActions","ZoomPixelCursor",new ZoomPixelCursorTocMenuEntry());
174 11550 nacho
175 11268 nacho
            //A?adimos el panel al winzard de cargar capa. (Esto es temporal hasta que el actual sea totalmente extensible)
176
            AddLayer.addWizard(FileOpenRasterDialog.class);
177
        }
178
179
        /*
180
         * (non-Javadoc)
181
         * @see com.iver.andami.plugins.IExtension#isEnabled()
182
         */
183
        public boolean isEnabled() {
184
                return true;
185
        }
186
187
        /**
188
         * Mostramos el control si hay alguna capa cargada.
189
         */
190
        public boolean isVisible() {
191
        com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
192
        if (f == null)
193
                return false;
194
195
        if (f instanceof View) {
196
                View vista = (View) f;
197
                IProjectView model = vista.getModel();
198
                MapContext mapa = model.getMapContext();
199
                if (mapa.getLayers().getLayersCount() > 0)
200
                        return true;
201
        }
202
203
        return false;
204
        }
205
206
}