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 @ 2331

History | View | Annotate | Download (25 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.filter.grayscale.GrayScaleManager;
64
import org.gvsig.raster.tools.app.basic.tool.geolocation.GeoLocationTocMenuEntry;
65
import org.gvsig.raster.tools.app.basic.tool.histogram.HistogramTocMenuEntry;
66
import org.gvsig.raster.tools.app.basic.tool.infobypoint.InfoByRasterPointTocMenuEntry;
67
import org.gvsig.raster.tools.app.basic.tool.layerdatatype.LayerDatatypeTocMenuEntry;
68
import org.gvsig.raster.tools.app.basic.tool.multiresolution.ZoomResolutionLevelTocMenuEntry;
69
import org.gvsig.raster.tools.app.basic.tool.overview.OverviewsTocMenuEntry;
70
import org.gvsig.raster.tools.app.basic.tool.properties.panel.EnhancedPanel;
71
import org.gvsig.raster.tools.app.basic.tool.properties.panel.GeneralPanel;
72
import org.gvsig.raster.tools.app.basic.tool.properties.panel.InfoPanel;
73
import org.gvsig.raster.tools.app.basic.tool.properties.panel.TransparencyPanel;
74
import org.gvsig.raster.tools.app.basic.tool.rasterresolution.ZoomPixelCursorTocMenuEntry;
75
import org.gvsig.raster.tools.app.basic.tool.roi.ROIManagerTocMenuEntry;
76
import org.gvsig.raster.tools.app.basic.tool.saveas.SaveAsTocMenuEntry;
77
import org.gvsig.raster.tools.app.basic.tool.saveviewtoraster.SaveViewToRasterTocMenuEntry;
78
import org.gvsig.raster.tools.app.basic.tool.selectrasterlayer.SelectLayerTocMenuEntry;
79
import org.gvsig.raster.tools.app.basic.tool.setviewprojection.SetViewProjectionTocMenuEntry;
80
import org.gvsig.raster.tools.app.basic.tool.viewexport.SaveViewToImageTocMenuEntry;
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
                // Registrar filtros
182
                GrayScaleManager.register();
183
                
184
                registerMenuElements();
185
                registerProcesses();
186
        }
187
        
188
        private void registerProcesses() {
189
            RasterBaseAlgorithmLibrary.register(CLIPPING_PROCESS_LABEL, ClippingProcess.class);
190
            ClippingProcess.registerParameters();
191
        }
192

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

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

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

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

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

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

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

    
352
                return false;
353
        }
354

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

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

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

    
389
                        return;
390
                }
391

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

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

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

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

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

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

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

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

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

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

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

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

    
489
        }
490

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

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