Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / branches / org.gvsig.raster.tools_dataaccess_refactoring / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / RasterExtension.java @ 2385

History | View | Annotate | Download (25.1 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.app.basic;
23

    
24
import java.util.ArrayList;
25
import java.util.prefs.Preferences;
26

    
27
import org.gvsig.andami.IconThemeHelper;
28
import org.gvsig.andami.PluginServices;
29
import org.gvsig.andami.plugins.Extension;
30
import org.gvsig.andami.plugins.IExtensionQueryByAction;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.app.ApplicationLocator;
33
import org.gvsig.app.ApplicationManager;
34
import org.gvsig.app.project.documents.view.ViewDocument;
35
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
36
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
37
import org.gvsig.app.project.documents.view.toc.ITocItem;
38
import org.gvsig.fmap.dal.coverage.RasterLibrary;
39
import org.gvsig.fmap.dal.coverage.RasterLocator;
40
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
41
import org.gvsig.fmap.mapcontext.MapContext;
42
import org.gvsig.fmap.mapcontext.layers.FLayer;
43
import org.gvsig.fmap.mapcontext.layers.FLayers;
44
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
45
import org.gvsig.raster.fmap.FmapRasterLibrary;
46
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster;
47
import org.gvsig.raster.fmap.layers.FLyrRaster;
48
import org.gvsig.raster.mainplugin.config.Configuration;
49
import org.gvsig.raster.mainplugin.config.ConfigurationEvent;
50
import org.gvsig.raster.mainplugin.config.ConfigurationListener;
51
import org.gvsig.raster.tools.app.basic.raster.gui.preference.RasterPreferences;
52
import org.gvsig.raster.tools.app.basic.raster.gui.wizard.PrepareDataStoreParametersRaw;
53
import org.gvsig.raster.tools.app.basic.raster.gui.wizard.PrepareDataStoreParametersVTR;
54
import org.gvsig.raster.tools.app.basic.raster.gui.wizard.PrepareLayerAskCoordinates;
55
import org.gvsig.raster.tools.app.basic.raster.gui.wizard.PrepareLayerAskWritableDirectory;
56
import org.gvsig.raster.tools.app.basic.raster.process.ClippingProcess;
57
import org.gvsig.raster.tools.app.basic.tool.analysisview.ViewRasterAnalysisTocMenuEntry;
58
import org.gvsig.raster.tools.app.basic.tool.clip.ClippingTocMenuEntry;
59
import org.gvsig.raster.tools.app.basic.tool.colortable.ColorTableTocMenuEntry;
60
import org.gvsig.raster.tools.app.basic.tool.colortable.ui.library.RasterColorTablesFactory;
61
import org.gvsig.raster.tools.app.basic.tool.enhanced.EnhancedTocMenuEntry;
62
import org.gvsig.raster.tools.app.basic.tool.filter.FilterTocMenuEntry;
63
import org.gvsig.raster.tools.app.basic.tool.geolocation.GeoLocationTocMenuEntry;
64
import org.gvsig.raster.tools.app.basic.tool.histogram.HistogramTocMenuEntry;
65
import org.gvsig.raster.tools.app.basic.tool.infobypoint.InfoByRasterPointTocMenuEntry;
66
import org.gvsig.raster.tools.app.basic.tool.layerdatatype.LayerDatatypeTocMenuEntry;
67
import org.gvsig.raster.tools.app.basic.tool.multiresolution.ZoomResolutionLevelTocMenuEntry;
68
import org.gvsig.raster.tools.app.basic.tool.overview.OverviewsTocMenuEntry;
69
import org.gvsig.raster.tools.app.basic.tool.properties.panel.EnhancedPanel;
70
import org.gvsig.raster.tools.app.basic.tool.properties.panel.GeneralPanel;
71
import org.gvsig.raster.tools.app.basic.tool.properties.panel.InfoPanel;
72
import org.gvsig.raster.tools.app.basic.tool.properties.panel.TransparencyPanel;
73
import org.gvsig.raster.tools.app.basic.tool.rasterresolution.ZoomPixelCursorTocMenuEntry;
74
import org.gvsig.raster.tools.app.basic.tool.roi.ROIManagerTocMenuEntry;
75
import org.gvsig.raster.tools.app.basic.tool.saveas.SaveAsTocMenuEntry;
76
import org.gvsig.raster.tools.app.basic.tool.saveviewtoraster.SaveViewToRasterTocMenuEntry;
77
import org.gvsig.raster.tools.app.basic.tool.selectrasterlayer.SelectLayerTocMenuEntry;
78
import org.gvsig.raster.tools.app.basic.tool.setviewprojection.SetViewProjectionTocMenuEntry;
79
import org.gvsig.raster.tools.app.basic.tool.viewexport.SaveViewToImageTocMenuEntry;
80
import org.gvsig.raster.tools.app.basic.toolbox.ToolboxRasterToolsLoader;
81
import org.gvsig.tools.ToolsLocator;
82
import org.gvsig.tools.extensionpoint.ExtensionBuilder;
83
import org.gvsig.tools.extensionpoint.ExtensionPoint;
84
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
85

    
86

    
87
/**
88
 * Extensi?n que adapta a FMap y gvSIG la nueva implementaci?n de raster. Para
89
 * el cuadro de Propiedades de visualizaci?n de raster contiene el contenedor
90
 * base se registran la entrada del men? del TOC y los paneles en el cuadro.
91
 * Para la parte de FMap contiene una nueva capa raster y los drivers
92
 * necesarios.
93
 *
94
 * @author Nacho Brodin (nachobrodin@gmail.com)
95
 */
96
public class RasterExtension extends Extension implements ConfigurationListener, IExtensionQueryByAction {
97
        public static final String         CLIPPING_PROCESS_LABEL   = ClippingProcess.PROCESS_LABEL;
98
        
99
        /**
100
         * Indica si en el panel de preferencias se refresca automaticamente la vista
101
         * para mostrar los cambios
102
         */
103
        public static boolean       autoRefreshView = true;
104

    
105
        /**
106
         * Indica si se debe preguntar las coordenadas al cargar una capa que no las
107
         * tenga
108
         */
109
        public static boolean       askCoordinates = false;
110
        private ExtensionPoint      genericToolBarMenuExtensionPoint  = null;
111

    
112
        public void execute(String actionCommand) {
113
                //Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que la del actionCommand
114
                //De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar la acci?n a
115
                //trav?s de este.
116
                ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(actionCommand).getBuilder();
117
                if(ext != null && ext instanceof AbstractTocContextMenuAction) {
118
                        IWindow w = PluginServices.getMDIManager().getActiveWindow();
119
                        if(w instanceof AbstractViewPanel) {
120
                                FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
121
                                FLayer[] actives = lyrs.getActives();
122
                                ((AbstractTocContextMenuAction)ext).execute(null, actives);
123
                        }
124
                }
125
        }
126

    
127
        public void initialize() {
128
                // Asignamos la configuracion global a FlyrRasterSE
129
                DefaultFLyrRaster.setConfiguration(Configuration.getSingleton());
130

    
131
                Configuration.addValueChangedListener(this);
132
                loadConfigurationValues();
133

    
134
                registerIcons();
135

    
136
                FmapRasterLibrary fmapRaster = new FmapRasterLibrary();
137
                fmapRaster.initialize();
138

    
139
                Preferences prefs = Preferences.userRoot().node("gvsig.foldering");
140
                prefs.put("DataFolder", System.getProperty("user.home"));
141
                ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
142

    
143
                // Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
144
                if (!extensionPoints.has("RasterSEPropertiesDialog")) {
145
                        ExtensionPoint point = extensionPoints.add("RasterSEPropertiesDialog");
146
                        point.setDescription("Raster Properties registrable panels (register instances of javax.swing.JPanel)");
147
                }
148

    
149
                // A?adimos la configuracion de Raster a gvSIG
150

    
151
                ExtensionPoint point = extensionPoints.get("AplicationPreferences");
152
                point.append("RasterPreferences", "", RasterPreferences.class);
153

    
154
                // A?adimos paneles al cuadro de propiedades.
155
                point = extensionPoints.get("RasterSEPropertiesDialog");
156
                point.append("info", "", InfoPanel.class);
157
                point.append("transparencia", "", TransparencyPanel.class);
158
                point.append("realce", "", EnhancedPanel.class);
159
                point.append("general_panel", "", GeneralPanel.class);
160

    
161
                // A?adimos las entradas del men?  del toc de raster
162
                point = extensionPoints.get("View_TocActions");
163
                //point.append("RasterSEProperties", "Raster Properties", RasterPropertiesTocMenuEntry.getSingleton());
164
                point.append("SaveAs", "Save as raster layer", SaveAsTocMenuEntry.getSingleton());
165
                point.append("ZoomPixelCursor", "zoom to pixel resolution", ZoomPixelCursorTocMenuEntry.getSingleton());
166
                point.append("ROI", "ROIs for a raster layer", ROIManagerTocMenuEntry.getSingleton());
167
                point.append("Color table", "Color table for a raster layer", ColorTableTocMenuEntry.getSingleton());
168
                point.append("Histogram", "Histogram of a raster layer", HistogramTocMenuEntry.getSingleton());
169
                point.append("Overviews", "Build overviews", OverviewsTocMenuEntry.getSingleton());
170

    
171
                ApplicationManager appGvSigMan = ApplicationLocator.getManager();
172

    
173
                appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareLayerAskWritableDirectory());
174
                appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareDataStoreParametersRaw());
175
                appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareDataStoreParametersVTR());
176

    
177
                appGvSigMan.registerPrepareOpenLayer(new PrepareLayerAskCoordinates());
178

    
179
                appGvSigMan.registerColorTablesFactory(new RasterColorTablesFactory());
180

    
181
                registerMenuElements();
182
                registerProcesses();
183
        }
184
        
185
        private void registerProcesses() {
186
            RasterBaseAlgorithmLibrary.register(CLIPPING_PROCESS_LABEL, ClippingProcess.class);
187
            ClippingProcess.registerParameters();
188
        }
189

    
190
        /**
191
         * Registra los iconos a utilizar en andami.
192
         */
193
        private void registerIcons() {        
194
                //Actions
195
                IconThemeHelper.registerIcon("action", "menu-layer-icon", this);
196
                IconThemeHelper.registerIcon("action", "menu-process-icon", this);
197
                IconThemeHelper.registerIcon("action", "menu-transgeo-icon", this);
198
                IconThemeHelper.registerIcon("action", "menu-raster-export", this);
199
                
200
                IconThemeHelper.registerIcon("action", "layer-modify-roi", this);
201
                IconThemeHelper.registerIcon("action", "layer-histogram", this);
202
                IconThemeHelper.registerIcon("action", "layer-color-table", this);
203
                IconThemeHelper.registerIcon("action", "layer-modify-overviews", this);
204
                IconThemeHelper.registerIcon("action", "layer-properties-raster", this);
205
                IconThemeHelper.registerIcon("action", "layer-filter-raster", this);
206
                IconThemeHelper.registerIcon("action", "layer-enhanced", this);
207
                IconThemeHelper.registerIcon("action", "view-raster-analysis", this);
208
                IconThemeHelper.registerIcon("action", "view-select-raster-layer", this);
209
                IconThemeHelper.registerIcon("action", "layer-geolocalization", this);
210
                IconThemeHelper.registerIcon("action", "tools-raster-reproject", this);
211
                IconThemeHelper.registerIcon("action", "view-export-georeferenced-raster", this);
212
                IconThemeHelper.registerIcon("action", "layer-saveas", this);
213
                IconThemeHelper.registerIcon("action", "layer-clip-raster", this);
214
                IconThemeHelper.registerIcon("action", "layer-zoom-res-level", this);
215
                IconThemeHelper.registerIcon("action", "layer-info-by-pixel", this);
216
                IconThemeHelper.registerIcon("action", "layer-vectorization", this);
217
                IconThemeHelper.registerIcon("action", "view-export-image", this);
218
                
219
                //Cursor
220
                IconThemeHelper.registerIcon("cursor", "zoom-pixel-cursor", this);
221
                IconThemeHelper.registerIcon("cursor", "hor-arrow-cursor", this);
222
                IconThemeHelper.registerIcon("cursor", "ver-arrow-cursor", this);
223
                IconThemeHelper.registerIcon("cursor", "inclder-arrow-cursor", this);
224
                IconThemeHelper.registerIcon("cursor", "inclizq-arrow-cursor", this);
225
                IconThemeHelper.registerIcon("cursor", "shear-y-cursor", this);
226
                IconThemeHelper.registerIcon("cursor", "shear-x-cursor", this);
227
                IconThemeHelper.registerIcon("cursor", "rotate-cursor", this);
228
                IconThemeHelper.registerIcon("cursor", "rot-inf-der-cursor", this);
229
                IconThemeHelper.registerIcon("cursor", "rot-inf-izq-cursor", this);
230
                IconThemeHelper.registerIcon("cursor", "rot-sup-der-cursor", this);
231
                IconThemeHelper.registerIcon("cursor", "rot-sup-izq-cursor", this);
232
                IconThemeHelper.registerIcon("cursor", "point-select-cursor", this);
233
                IconThemeHelper.registerIcon("cursor", "hand-cursor", this);
234
                IconThemeHelper.registerIcon("cursor", "rectangle-select-cursor", this);
235
                IconThemeHelper.registerIcon("cursor", "not-valid-cursor", this);
236
                IconThemeHelper.registerIcon("cursor", "line-cursor", this);
237
                IconThemeHelper.registerIcon("cursor", "polygon-cursor", this);
238
                IconThemeHelper.registerIcon("cursor", "point-cursor", this);
239
                
240
                //Other
241
                IconThemeHelper.registerIcon(null, "forward-icon", this);
242
                IconThemeHelper.registerIcon(null, "backward-icon", this);
243
                IconThemeHelper.registerIcon(null, "blank-icon", this);
244
                IconThemeHelper.registerIcon(null, "addlayer-icon", this);
245
                IconThemeHelper.registerIcon(null, "delall-icon", this);
246
                IconThemeHelper.registerIcon(null, "back-icon", this);
247
                IconThemeHelper.registerIcon(null, "next-icon", this);
248
                IconThemeHelper.registerIcon(null, "undo-icon", this);        
249
                IconThemeHelper.registerIcon(null, "pixel-increase", this);
250
                IconThemeHelper.registerIcon(null, "pref-raster-icon", this);
251
                IconThemeHelper.registerIcon(null, "back-icon", this);
252
                IconThemeHelper.registerIcon(null, "next-icon", this);
253
                IconThemeHelper.registerIcon(null, "undo-icon", this);
254
                //IconThemeHelper.registerIcon(null, "save-raster", this);
255
                IconThemeHelper.registerIcon(null, "pixel-increase", this);
256
                //IconThemeHelper.registerIcon(null, "select-raster", this);
257
                IconThemeHelper.registerIcon(null, "pref-raster-icon", this);
258
                IconThemeHelper.registerIcon(null, "reset-icon", this);
259
                IconThemeHelper.registerIcon(null, "tfwload-icon", this);
260
                IconThemeHelper.registerIcon(null, "centerraster-icon", this);
261
                IconThemeHelper.registerIcon(null, "increase-icon", this);
262
                IconThemeHelper.registerIcon(null, "decrease-icon", this);
263
                IconThemeHelper.registerIcon(null, "selectzoomarea-icon", this);
264
                IconThemeHelper.registerIcon(null, "prevzoom-icon", this);
265
                IconThemeHelper.registerIcon(null, "fullview-icon", this);
266
                IconThemeHelper.registerIcon(null, "exporttoascii-icon", this);
267
                IconThemeHelper.registerIcon(null, "exporttocsv-icon", this);
268
                IconThemeHelper.registerIcon(null, "importfromcsv-icon", this);
269
                IconThemeHelper.registerIcon(null, "exit-icon", this);
270
                IconThemeHelper.registerIcon(null, "options-icon", this);
271
                IconThemeHelper.registerIcon(null, "add-icon", this);
272
                IconThemeHelper.registerIcon(null, "centerpoint-icon", this);
273
                IconThemeHelper.registerIcon(null, "selectrgb-icon", this);
274
                IconThemeHelper.registerIcon(null, "focus-icon", this);
275
                IconThemeHelper.registerIcon(null, "point-icon", this);
276
                IconThemeHelper.registerIcon(null, "line-icon", this);
277
                IconThemeHelper.registerIcon(null, "polygon-icon", this);
278
                IconThemeHelper.registerIcon(null, "import-icon", this);
279
                IconThemeHelper.registerIcon(null, "round-icon", this);
280
                //IconThemeHelper.registerIcon(null, "rois-icon", this);
281
                IconThemeHelper.registerIcon(null, "fullextent-icon", this);
282
                IconThemeHelper.registerIcon(null, "selecttool-icon", this);
283
                IconThemeHelper.registerIcon(null, "forward-icon", this);
284
                IconThemeHelper.registerIcon(null, "backward-icon", this);
285
                IconThemeHelper.registerIcon(null, "datatype-icon", this);
286
                IconThemeHelper.registerIcon(null, "setviewprojection-raster-icon", this);
287
                IconThemeHelper.registerIcon(null, "gvsig-icon", this);
288
                IconThemeHelper.registerIcon(null, "gvsig-icon16x16", this);
289
        }
290
        
291
        public void registerMenuElements() {
292
                // Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
293
                ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
294
                ExtensionPoint point = extensionPoints.get("GenericToolBarGroup");
295
                point.setDescription("Punto de extension para los grupos de menus del GenericToolBarPanel");
296

    
297
                point = extensionPoints.get("GenericToolBarMenu");
298
                point.setDescription("Punto de extension para los submenus del GenericToolBarPanel");
299
                //point.append("RasterProperties", "", RasterPropertiesTocMenuEntry.getSingleton());
300
                point.append("SelectLayer", "", SelectLayerTocMenuEntry.getSingleton());
301
                point.append("HistogramPanel", "", HistogramTocMenuEntry.getSingleton());
302
                point.append("ViewColorTable", "",ColorTableTocMenuEntry.getSingleton());
303
                if(RasterLocator.getManager().isOverviewBuilderSupported())
304
                        point.append("Overviews", "", OverviewsTocMenuEntry.getSingleton());
305
                point.append("RoisManager", "", ROIManagerTocMenuEntry.getSingleton());
306
                point.append("ViewRasterAnalysis", "", ViewRasterAnalysisTocMenuEntry.getSingleton());
307
                point.append("ZoomResolutionLevel", "", ZoomResolutionLevelTocMenuEntry.getSingleton());
308

    
309
                point.append("SaveAs", "", SaveAsTocMenuEntry.getSingleton());
310
                point.append("ClippingPanel", "", ClippingTocMenuEntry.getSingleton());
311
                point.append("SaveViewToRaster", "", SaveViewToRasterTocMenuEntry.getSingleton());
312
                point.append("SaveViewToImageRaster", "", SaveViewToImageTocMenuEntry.getSingleton());
313

    
314
                point.append("FilterPanel", "", FilterTocMenuEntry.getSingleton());
315
                point.append("EnhancedPanel", "", EnhancedTocMenuEntry.getSingleton());
316
                point.append("InfoByPoint", "", InfoByRasterPointTocMenuEntry.getSingleton());
317
                point.append("LayerDatatype", "", LayerDatatypeTocMenuEntry.getSingleton());
318
                
319
                point.append("GeoLocation", "", GeoLocationTocMenuEntry.getSingleton());
320
                point.append("SetProjection", "", SetViewProjectionTocMenuEntry.getSingleton());
321

    
322
        }
323
        
324
        public boolean isEnabled() {
325
                org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
326
                if (f == null)
327
                        return false;
328
                if (f instanceof AbstractViewPanel) {
329
                        FLayers lyrs = ((AbstractViewPanel)f).getMapControl().getMapContext().getLayers();
330
                        for (int i = 0; i < lyrs.getLayersCount(); i++)
331
                                if (lyrs.getLayer(i) instanceof FLyrRaster)
332
                                        return true;
333
                }
334
                return false;
335
        }
336

    
337
        /**
338
         * Mostramos el control si hay alguna capa cargada.
339
         */
340
        public boolean isVisible() {
341
                org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
342
                if (f == null)
343
                        return false;
344

    
345
                if (f instanceof AbstractViewPanel) {
346
                        FLayers lyrs = ((AbstractViewPanel)f).getMapControl().getMapContext().getLayers();
347
                        if (lyrs.getLayersCount() > 0) 
348
                                return true;
349
                }
350

    
351
                return false;
352
        }
353

    
354
        /**
355
         * Carga los valores de configuracion iniciales
356
         */
357
        private void loadConfigurationValues() {
358
                autoRefreshView = Configuration.getValue("general_auto_preview", Boolean.TRUE).booleanValue();
359
                askCoordinates = Configuration.getValue("general_ask_coordinates", Boolean.FALSE).booleanValue();
360
                RasterLibrary.defaultNumberOfClasses = Configuration.getValue("general_defaultNumberOfClasses", Integer.valueOf(RasterLibrary.defaultNumberOfClasses)).intValue();
361
                RasterLibrary.cacheSize = Configuration.getValue("cache_size", Long.valueOf(RasterLibrary.cacheSize)).longValue();
362
                RasterLibrary.pageSize = Configuration.getValue("cache_pagesize", Double.valueOf(RasterLibrary.pageSize)).doubleValue();
363
                RasterLibrary.pagsPerGroup = Configuration.getValue("cache_pagspergroup", Integer.valueOf(RasterLibrary.pagsPerGroup)).intValue();
364
                RasterLibrary.blockHeight = Configuration.getValue("cache_blockheight", Integer.valueOf(RasterLibrary.blockHeight)).intValue();
365
                //RasterLibrary.defaultNoDataValue = Configuration.getValue("nodata_value", Double.valueOf(RasterLibrary.defaultNoDataValue)).doubleValue();
366
        }
367

    
368
        @SuppressWarnings("deprecation")
369
        public void actionConfigurationChanged(ConfigurationEvent e) {
370
                if (e.getKey().equals("nodata_transparency_enabled")) {
371
                        boolean noDataTransparent = ((Boolean) e.getValue()).booleanValue();
372
                        IWindow[] f = PluginServices.getMDIManager().getAllWindows();
373
                        if (f == null)
374
                                return;
375
                        for (int i = 0; i < f.length; i++)
376
                                if (f[i] instanceof AbstractViewPanel) {
377
                                        AbstractViewPanel vista = (AbstractViewPanel) f[i];
378
                                        ViewDocument model = vista.getModel();
379
                                        MapContext map = model.getMapContext();
380
                                        FLayers lyrs = map.getLayers();
381

    
382
                                        ArrayList<FLayer> list = RasterToolsUtil.getRasterLayerList(lyrs, null);
383
                                        for (int j = 0; j < list.size(); j++)
384
                                                if(list.get(j) instanceof FLyrRaster)
385
                                                        ((RasterDataStore)((FLyrRaster)list.get(j)).getDataStore()).getNoDataValue().setNoDataTransparent(noDataTransparent);
386
                                }
387

    
388
                        return;
389
                }
390

    
391
                if (e.getKey().equals("general_auto_preview")) {
392
                        if(e.getValue() instanceof String)
393
                                autoRefreshView = new Boolean((String) e.getValue()).booleanValue();
394
                        if(e.getValue() instanceof Boolean)
395
                                autoRefreshView = ((Boolean) e.getValue()).booleanValue();
396
                        return;
397
                }
398

    
399
                if (e.getKey().equals("general_ask_coordinates")) {
400
                        if(e.getValue() instanceof String)
401
                                askCoordinates = new Boolean((String) e.getValue()).booleanValue();
402
                        if(e.getValue() instanceof Boolean)
403
                                askCoordinates = ((Boolean) e.getValue()).booleanValue();
404
                        return;
405
                }
406

    
407
                if (e.getKey().equals("general_defaultNumberOfClasses")) {
408
                        if(e.getValue() instanceof String)
409
                                try {
410
                                        RasterLibrary.defaultNumberOfClasses = new Integer(
411
                                                        (String) e.getValue()).intValue();
412
                                } catch (NumberFormatException exc) {
413
                                        //Valor por defecto en el n?mero de clases
414
                                }
415

    
416
                        if(e.getValue() instanceof Integer)
417
                                RasterLibrary.defaultNumberOfClasses = ((Integer) e.getValue()).intValue();
418
                        return;
419
                }
420

    
421
                if (e.getKey().equals("cache_size")) {
422
                        if(e.getValue() instanceof String)
423
                                try {
424
                                        RasterLibrary.cacheSize = new Long((String) e.getValue()).longValue();
425
                                } catch (NumberFormatException exc) {
426
                                        //Valor por defecto en la cache
427
                                }
428
                        if(e.getValue() instanceof Long)
429
                                RasterLibrary.cacheSize = ((Long) e.getValue()).longValue();
430
                        return;
431
                }
432

    
433
                if (e.getKey().equals("cache_pagesize")) {
434
                        if(e.getValue() instanceof String)
435
                                try {
436
                                        RasterLibrary.pageSize = new Double((String) e.getValue())
437
                                                        .doubleValue();
438
                                } catch (NumberFormatException exc) {
439
                                        //Valor por defecto en la cache
440
                                }
441

    
442
                        if(e.getValue() instanceof Double)
443
                                RasterLibrary.pageSize = ((Double) e.getValue()).doubleValue();
444
                        return;
445
                }
446

    
447
                if (e.getKey().equals("cache_pagspergroup")) {
448
                        if(e.getValue() instanceof String)
449
                                try {
450
                                        RasterLibrary.pagsPerGroup = new Integer((String) e
451
                                                        .getValue()).intValue();
452
                                } catch (NumberFormatException exc) {
453
                                        //Valor por defecto en la cache
454
                                }
455

    
456
                        if(e.getValue() instanceof Integer)
457
                                RasterLibrary.pagsPerGroup = ((Integer) e.getValue()).intValue();
458
                        return;
459
                }
460

    
461
                if (e.getKey().equals("cache_blockheight")) {
462
                        if(e.getValue() instanceof String)
463
                                try {
464
                                        RasterLibrary.blockHeight = new Integer((String) e
465
                                                        .getValue()).intValue();
466
                                } catch (NumberFormatException exc) {
467
                                        //Valor por defecto en la cache
468
                                }
469
                        if(e.getValue() instanceof Integer)
470
                                RasterLibrary.blockHeight = ((Integer) e.getValue()).intValue();
471
                        return;
472
                }
473

    
474
                /*if (e.getKey().equals("nodata_value")) {
475
                        if(e.getValue() instanceof String)
476
                                try {
477
                                        RasterLibrary.defaultNoDataValue = new Double((String) e
478
                                                        .getValue()).doubleValue();
479
                                } catch (NumberFormatException exc) {
480
                                        //Valor por defecto en valor nodata
481
                                }
482

483
                        if(e.getValue() instanceof Double)
484
                                RasterLibrary.defaultNoDataValue = ((Double) e.getValue()).doubleValue();
485
                        return;
486
                }*/
487

    
488
        }
489

    
490
        public void execute(ITocItem item, FLayer[] selectedItems) {
491
                this.execute("SELECTIMAGE");
492
        }
493

    
494
        public void postInitialize() {
495
                super.postInitialize();
496
                new ToolboxRasterToolsLoader().registerTool();
497
        }
498
        
499
        public boolean canQueryByAction() {
500
                return true;        
501
        }
502
        
503
        public boolean isEnabled(String action) {
504
                //Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que el actionCommand
505
                //De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar isEnable a
506
                //trav?s de este.
507
                if(getGenericToolBarMenuExtensionPoint() != null && getGenericToolBarMenuExtensionPoint().get(action) != null) {
508
                        ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(action).getBuilder();
509
                        if(ext != null && ext instanceof AbstractTocContextMenuAction) {
510
                                IWindow w = PluginServices.getMDIManager().getActiveWindow();
511
                                if(w instanceof AbstractViewPanel) {
512
                                        FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
513
                                        FLayer[] actives = lyrs.getActives();
514
                                        return ((AbstractTocContextMenuAction)ext).isEnabled(null, actives);
515
                                }
516
                        }
517
                }
518
                return false;
519
        }
520
        
521
        public boolean isVisible(String action) {
522
                //Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que el actionCommand
523
                //De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar isVisible a
524
                //trav?s de este.
525
                if(getGenericToolBarMenuExtensionPoint() != null && getGenericToolBarMenuExtensionPoint().get(action) != null) {
526
                        ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(action).getBuilder();
527
                        if(ext != null && ext instanceof AbstractTocContextMenuAction) {
528
                                IWindow w = PluginServices.getMDIManager().getActiveWindow();
529
                                if(w instanceof AbstractViewPanel) {
530
                                        FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
531
                                        FLayer[] actives = lyrs.getActives();
532
                                        return ((AbstractTocContextMenuAction)ext).isVisible(null, actives);
533
                                }
534
                        }
535
                }
536
                return false;
537
        }
538
        
539
        public ExtensionPoint getGenericToolBarMenuExtensionPoint() {
540
                if(genericToolBarMenuExtensionPoint == null) {
541
                        ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
542
                        genericToolBarMenuExtensionPoint = extensionPoints.get("GenericToolBarMenu");
543
                }
544
                return genericToolBarMenuExtensionPoint;
545
        }
546
}