Revision 9918

View differences:

org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.82/org.gvsig.raster.tools.app.basic/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2

  
3
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4
	<modelVersion>4.0.0</modelVersion>
5
	<artifactId>org.gvsig.raster.tools.app.basic</artifactId>
6
	<packaging>jar</packaging>
7
	<name>Tools: Raster tools</name>
8
	<description>This package contains basic tools for raster:
9

  
10
    * Raster properties
11
    * clipping
12
    * histograms
13
    * filters</description>
14
	<parent>
15
      <groupId>org.gvsig</groupId>
16
      <artifactId>org.gvsig.raster.tools</artifactId>
17
      <version>2.2.82</version>
18
    </parent>
19
    
20
	<dependencies>
21
		<dependency>
22
            <groupId>org.gvsig</groupId>
23
            <artifactId>org.gvsig.raster.app.common</artifactId>
24
            <scope>compile</scope>
25
        </dependency>	
26
		<dependency>
27
           <groupId>com.sun</groupId>
28
           <artifactId>jimi</artifactId>
29
           <scope>compile</scope>
30
        </dependency>
31
		<dependency>
32
			<groupId>org.gvsig</groupId>
33
			<artifactId>org.gvsig.raster.swing.api</artifactId>
34
            <scope>compile</scope>
35
		</dependency>
36
		<dependency>
37
			<groupId>org.gvsig</groupId>
38
			<artifactId>org.gvsig.raster.swing.impl</artifactId>
39
            <scope>runtime</scope>
40
		</dependency>
41
		<dependency>
42
			<groupId>org.gvsig</groupId>
43
			<artifactId>org.gvsig.app.mainplugin</artifactId>
44
            <scope>compile</scope>
45
		</dependency>
46
		<dependency>
47
            <groupId>org.gvsig</groupId>
48
            <artifactId>org.gvsig.app.document.table.app.mainplugin</artifactId>
49
            <scope>compile</scope>
50
        </dependency>		
51
		<dependency>
52
			<groupId>org.gvsig</groupId>
53
			<artifactId>org.gvsig.raster.lib.api</artifactId>
54
            <scope>compile</scope>
55
		</dependency>
56
		<dependency>
57
			<groupId>org.gvsig</groupId>
58
			<artifactId>org.gvsig.raster.fmap</artifactId>
59
            <scope>compile</scope>
60
		</dependency>
61
		<dependency>
62
			<groupId>org.gvsig</groupId>
63
			<artifactId>org.gvsig.raster.lib.impl</artifactId>
64
			<scope>runtime</scope>
65
		</dependency>
66
        <dependency>
67
            <groupId>org.gvsig</groupId>
68
            <artifactId>org.gvsig.fmap.control</artifactId>
69
            <scope>compile</scope>
70
        </dependency>
71
        <dependency>
72
            <groupId>org.gvsig</groupId>
73
            <artifactId>org.gvsig.utils</artifactId>
74
            <scope>compile</scope>
75
        </dependency>
76
        <dependency>
77
            <groupId>org.gvsig</groupId>
78
            <artifactId>org.gvsig.ui</artifactId>
79
            <scope>compile</scope>
80
        </dependency>
81
        <dependency>
82
            <groupId>org.gvsig</groupId>
83
            <artifactId>org.gvsig.symbology.lib.api</artifactId>
84
            <scope>compile</scope>
85
        </dependency>
86
        <dependency>
87
            <groupId>org.gvsig</groupId>
88
            <artifactId>org.gvsig.symbology.lib.impl</artifactId>
89
            <scope>compile</scope>
90
        </dependency>
91
        <dependency>
92
            <groupId>org.gvsig</groupId>
93
            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
94
            <scope>compile</scope>
95
        </dependency>
96
        <dependency>
97
            <groupId>org.gvsig</groupId>
98
            <artifactId>org.gvsig.raster.tools.algorithm.saveraster</artifactId>
99
            <scope>runtime</scope>
100
        </dependency>
101
		<dependency>
102
			<groupId>org.gvsig</groupId>
103
			<artifactId>org.gvsig.raster.algorithm</artifactId>
104
            <scope>compile</scope>
105
		</dependency>
106
		<dependency>
107
			<groupId>org.gvsig</groupId>
108
			<artifactId>org.gvsig.raster.tools.algorithm.swing.api</artifactId>
109
            <scope>compile</scope>
110
		</dependency>
111
		<dependency>
112
			<groupId>org.gvsig</groupId>
113
			<artifactId>org.gvsig.raster.tools.algorithm.swing.impl</artifactId>
114
            <scope>runtime</scope>
115
		</dependency>
116
		<dependency>
117
			<groupId>org.gvsig</groupId>
118
			<artifactId>org.gvsig.raster.tools.algorithm.layerdatatype</artifactId>
119
            <scope>compile</scope>
120
		</dependency>
121
		<dependency>
122
            <groupId>org.gvsig</groupId>
123
            <artifactId>org.gvsig.andami</artifactId>
124
            <scope>compile</scope>
125
        </dependency>
126
        <dependency>
127
            <groupId>org.gvsig</groupId>
128
            <artifactId>org.gvsig.i18n</artifactId>
129
            <scope>compile</scope>
130
        </dependency>
131
        <dependency>
132
            <groupId>org.gvsig</groupId>
133
            <artifactId>org.gvsig.tools.lib</artifactId>
134
            <scope>compile</scope>
135
        </dependency>
136
        
137
        <dependency>
138
            <groupId>org.gvsig</groupId>
139
            <artifactId>org.gvsig.projection.api</artifactId>
140
            <scope>compile</scope>
141
        </dependency>
142
        <dependency>
143
            <groupId>org.gvsig</groupId>
144
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
145
            <scope>runtime</scope>
146
        </dependency>
147
        <dependency>
148
            <groupId>org.gvsig</groupId>
149
            <artifactId>org.gvsig.fmap.dal.api</artifactId>
150
            <scope>compile</scope>
151
        </dependency>
152
        <dependency>
153
            <groupId>org.gvsig</groupId>
154
            <artifactId>org.gvsig.fmap.dal.impl</artifactId>
155
            <scope>compile</scope>
156
        </dependency>
157
        <dependency>
158
            <groupId>org.gvsig</groupId>
159
            <artifactId>org.gvsig.fmap.dal.file.lib</artifactId>
160
            <scope>compile</scope>
161
        </dependency>
162
        <dependency>
163
            <groupId>org.gvsig</groupId>
164
            <artifactId>org.gvsig.fmap.dal.spi</artifactId>
165
            <scope>compile</scope>
166
        </dependency>
167
        <dependency>
168
            <groupId>org.gvsig</groupId>
169
            <artifactId>org.gvsig.fmap.geometry.api</artifactId>
170
            <scope>compile</scope>
171
        </dependency>
172
    <!--
173
        <dependency>
174
            <groupId>org.gvsig</groupId>
175
            <artifactId>org.gvsig.fmap.geometry.generalpath</artifactId>
176
            <scope>runtime</scope>
177
        </dependency>
178
        <dependency>
179
            <groupId>org.gvsig</groupId>
180
            <artifactId>org.gvsig.fmap.geometry.operation</artifactId>
181
            <scope>runtime</scope>
182
        </dependency>
183
    -->
184
        <dependency>
185
                <groupId>org.gvsig</groupId>
186
                <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
187
                <scope>compile</scope>
188
        </dependency>
189
        <dependency>
190
                <groupId>org.gvsig</groupId>
191
                <artifactId>org.gvsig.fmap.mapcontext.impl</artifactId>
192
                <scope>runtime</scope>
193
        </dependency>
194
        <dependency>
195
			<groupId>org.gvsig</groupId>
196
			<artifactId>org.gvsig.geoprocess.lib.sextante</artifactId>
197
			<scope>compile</scope>
198
		</dependency>
199
		<dependency>
200
			<groupId>org.gvsig</groupId>
201
			<artifactId>org.gvsig.geoprocess.app.mainplugin</artifactId>
202
			<scope>compile</scope>
203
		</dependency>
204
		<dependency>
205
			<groupId>org.gvsig</groupId>
206
			<artifactId>org.gvsig.raster.tools.toolbox.algorithm</artifactId>
207
			<scope>compile</scope>
208
		</dependency>
209
	</dependencies>
210
	<properties>
211
   		<gvsig.package.info.dependencies>required: org.gvsig.raster.tilecache.app -ge 2</gvsig.package.info.dependencies>
212
   		<gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/Raster/pool</gvsig.package.info.poolURL>
213
   		<gvsig.package.info.categories>Raster</gvsig.package.info.categories>
214
   		<gvsig.package.info.state>final</gvsig.package.info.state>
215
   		<gvsig.package.info.official>true</gvsig.package.info.official>
216
	</properties>
217
</project>
0 218

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.82/org.gvsig.raster.tools.app.basic/buildNumber.properties
1
#Mon Oct 07 10:30:33 CEST 2019
2
buildNumber=133
0 3

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.82/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/MainWindow.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2011-2012 Prodevelop S.L
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., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 */
21
package org.gvsig.raster.tools.app.basic;
22

  
23
import java.awt.GridBagConstraints;
24
import java.awt.GridBagLayout;
25
import java.awt.event.ActionEvent;
26
import java.awt.event.ActionListener;
27

  
28
import javax.swing.JComponent;
29

  
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.andami.ui.mdiManager.WindowInfo;
33
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
34
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
35

  
36

  
37
/**
38
 * Basic frame for a gvSIG <code>IWindow</code> object. This frame adds buttons 
39
 * of Cancel, Accept and others.
40
 * 
41
 * @author Nacho Brodin (nachobrodin@gmail.com)
42
 */
43
public class MainWindow extends DefaultButtonsPanel implements IWindow, ActionListener {
44
    
45
    private static final long  serialVersionUID = -4401123724140025094L;
46
    private ActionListener     listener         = null;
47
    private WindowInfo         info             = null;
48

  
49
    private Object profile = WindowInfo.EDITOR_PROFILE;
50

  
51
    public MainWindow(JComponent panel, JComponent preview, String title, int w, int h, ActionListener actionListener) {
52
    	this.listener = actionListener;
53
    	
54
    	setLayout(new GridBagLayout());
55
		GridBagConstraints gbc = new GridBagConstraints();
56
		gbc.fill = GridBagConstraints.BOTH;
57
		gbc.weightx = 1;
58
		gbc.weighty = 1;
59
		add(panel, gbc);
60
		
61
		if(preview != null) {
62
			gbc.anchor = GridBagConstraints.NORTH;
63
			gbc.fill = GridBagConstraints.NONE;
64
			gbc.weightx = 0;
65
			gbc.weighty = 0;
66
			gbc.gridx = 1;
67
			add(preview, gbc);
68
		}
69

  
70
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).addActionListener(this);
71
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).addActionListener(this);
72
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL).addActionListener(this);
73
        
74
        info = new WindowInfo(WindowInfo.PALETTE | WindowInfo.RESIZABLE);
75
        info.setTitle(title);
76
        info.setWidth(w);
77
        info.setHeight(h);
78
    }
79

  
80
    public WindowInfo getWindowInfo() {
81
        return info;
82
    }
83

  
84
    public Object getWindowProfile() {
85
        return profile;
86
    }
87

  
88
    public void actionPerformed(ActionEvent e) {
89
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
90
    		listener.actionPerformed(e);
91
    		PluginServices.getMDIManager().closeWindow(this);
92
    	}
93
    	
94
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY)) {
95
    		listener.actionPerformed(e);
96
    	}
97
    	
98
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL)) {
99
    		PluginServices.getMDIManager().closeWindow(this);
100
    	}
101
    }
102
}
0 103

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.82/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/RasterExtension.java
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.PrepareLayerAskWritableDirectory;
55
import org.gvsig.raster.tools.app.basic.raster.process.ClippingProcess;
56
import org.gvsig.raster.tools.app.basic.tool.analysisview.ViewRasterAnalysisTocMenuEntry;
57
import org.gvsig.raster.tools.app.basic.tool.clip.ClippingTocMenuEntry;
58
import org.gvsig.raster.tools.app.basic.tool.colortable.ColorTableTocMenuEntry;
59
import org.gvsig.raster.tools.app.basic.tool.colortable.ui.library.RasterColorTablesFactory;
60
import org.gvsig.raster.tools.app.basic.tool.enhanced.EnhancedTocMenuEntry;
61
import org.gvsig.raster.tools.app.basic.tool.filter.FilterTocMenuEntry;
62
import org.gvsig.raster.tools.app.basic.tool.geolocation.GeoLocationTocMenuEntry;
63
import org.gvsig.raster.tools.app.basic.tool.histogram.HistogramTocMenuEntry;
64
import org.gvsig.raster.tools.app.basic.tool.infobypoint.InfoByRasterPointTocMenuEntry;
65
import org.gvsig.raster.tools.app.basic.tool.layerdatatype.LayerDatatypeTocMenuEntry;
66
import org.gvsig.raster.tools.app.basic.tool.multiresolution.ZoomResolutionLevelTocMenuEntry;
67
import org.gvsig.raster.tools.app.basic.tool.overview.OverviewsTocMenuEntry;
68
import org.gvsig.raster.tools.app.basic.tool.properties.panel.EnhancedPanel;
69
import org.gvsig.raster.tools.app.basic.tool.properties.panel.GeneralPanel;
70
import org.gvsig.raster.tools.app.basic.tool.properties.panel.InfoPanel;
71
import org.gvsig.raster.tools.app.basic.tool.properties.panel.TransparencyPanel;
72
import org.gvsig.raster.tools.app.basic.tool.rasterresolution.ZoomPixelCursorTocMenuEntry;
73
import org.gvsig.raster.tools.app.basic.tool.roi.ROIManagerTocMenuEntry;
74
import org.gvsig.raster.tools.app.basic.tool.saveas.SaveAsTocMenuEntry;
75
import org.gvsig.raster.tools.app.basic.tool.saveviewtoraster.SaveViewToRasterTocMenuEntry;
76
import org.gvsig.raster.tools.app.basic.tool.selectrasterlayer.SelectLayerTocMenuEntry;
77
import org.gvsig.raster.tools.app.basic.tool.setviewprojection.SetViewProjectionTocMenuEntry;
78
import org.gvsig.raster.tools.app.basic.tool.viewexport.SaveViewToImageTocMenuEntry;
79
import org.gvsig.raster.tools.app.basic.toolbox.ToolboxRasterToolsLoader;
80
import org.gvsig.tools.ToolsLocator;
81
import org.gvsig.tools.extensionpoint.ExtensionBuilder;
82
import org.gvsig.tools.extensionpoint.ExtensionPoint;
83
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
84

  
85

  
86
/**
87
 * Extensi?n que adapta a FMap y gvSIG la nueva implementaci?n de raster. Para
88
 * el cuadro de Propiedades de visualizaci?n de raster contiene el contenedor
89
 * base se registran la entrada del men? del TOC y los paneles en el cuadro.
90
 * Para la parte de FMap contiene una nueva capa raster y los drivers
91
 * necesarios.
92
 *
93
 * @author Nacho Brodin (nachobrodin@gmail.com)
94
 */
95
public class RasterExtension extends Extension implements ConfigurationListener, IExtensionQueryByAction {
96
	public static final String         CLIPPING_PROCESS_LABEL   = ClippingProcess.PROCESS_LABEL;
97

  
98
	/**
99
	 * Indica si en el panel de preferencias se refresca automaticamente la vista
100
	 * para mostrar los cambios
101
	 */
102
	public static boolean       autoRefreshView = true;
103

  
104
	private ExtensionPoint      genericToolBarMenuExtensionPoint  = null;
105

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

  
121
	public void initialize() {
122
		// Asignamos la configuracion global a FlyrRasterSE
123
		DefaultFLyrRaster.setConfiguration(Configuration.getSingleton());
124

  
125
		Configuration.addValueChangedListener(this);
126
		loadConfigurationValues();
127

  
128
		registerIcons();
129

  
130
		FmapRasterLibrary fmapRaster = new FmapRasterLibrary();
131
		fmapRaster.initialize();
132

  
133
		Preferences prefs = Preferences.userRoot().node("gvsig.foldering");
134
		prefs.put("DataFolder", System.getProperty("user.home"));
135
		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
136

  
137
		// Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
138
		if (!extensionPoints.has("RasterSEPropertiesDialog")) {
139
			ExtensionPoint point = extensionPoints.add("RasterSEPropertiesDialog");
140
			point.setDescription("Raster Properties registrable panels (register instances of javax.swing.JPanel)");
141
		}
142

  
143
		// A?adimos la configuracion de Raster a gvSIG
144

  
145
		ExtensionPoint point = extensionPoints.get("AplicationPreferences");
146
		point.append("RasterPreferences", "", RasterPreferences.class);
147

  
148
		// A?adimos paneles al cuadro de propiedades.
149
		point = extensionPoints.get("RasterSEPropertiesDialog");
150
		point.append("info", "", InfoPanel.class);
151
		point.append("general_panel", "", GeneralPanel.class);
152
		point.append("transparencia", "", TransparencyPanel.class);
153
		point.append("realce", "", EnhancedPanel.class);
154

  
155

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

  
166
		ApplicationManager appGvSigMan = ApplicationLocator.getManager();
167

  
168
		appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareLayerAskWritableDirectory());
169
		appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareDataStoreParametersRaw());
170
		appGvSigMan.registerPrepareOpenDataStoreParameters(new PrepareDataStoreParametersVTR());
171

  
172
		appGvSigMan.registerColorTablesFactory(new RasterColorTablesFactory());
173

  
174
		registerMenuElements();
175
		registerProcesses();
176
	}
177

  
178
	private void registerProcesses() {
179
    	RasterBaseAlgorithmLibrary.register(CLIPPING_PROCESS_LABEL, ClippingProcess.class);
180
    	ClippingProcess.registerParameters();
181
	}
182

  
183
	/**
184
	 * Registra los iconos a utilizar en andami.
185
	 */
186
	private void registerIcons() {
187
		//Actions
188
		IconThemeHelper.registerIcon("action", "menu-layer-icon", this);
189
		IconThemeHelper.registerIcon("action", "menu-process-icon", this);
190
		IconThemeHelper.registerIcon("action", "menu-transgeo-icon", this);
191
		IconThemeHelper.registerIcon("action", "menu-raster-export", this);
192

  
193
		IconThemeHelper.registerIcon("action", "layer-modify-roi", this);
194
		IconThemeHelper.registerIcon("action", "layer-histogram", this);
195
		IconThemeHelper.registerIcon("action", "layer-color-table", this);
196
		IconThemeHelper.registerIcon("action", "layer-modify-overviews", this);
197
		IconThemeHelper.registerIcon("action", "layer-properties-raster", this);
198
		IconThemeHelper.registerIcon("action", "layer-filter-raster", this);
199
		IconThemeHelper.registerIcon("action", "layer-enhanced", this);
200
		IconThemeHelper.registerIcon("action", "view-raster-analysis", this);
201
		IconThemeHelper.registerIcon("action", "view-select-raster-layer", this);
202
		IconThemeHelper.registerIcon("action", "layer-geolocalization", this);
203
		IconThemeHelper.registerIcon("action", "tools-raster-reproject", this);
204
		IconThemeHelper.registerIcon("action", "view-export-georeferenced-raster", this);
205
		IconThemeHelper.registerIcon("action", "layer-saveas", this);
206
		IconThemeHelper.registerIcon("action", "layer-clip-raster", this);
207
		IconThemeHelper.registerIcon("action", "layer-zoom-res-level", this);
208
		IconThemeHelper.registerIcon("action", "layer-info-by-pixel", this);
209
		IconThemeHelper.registerIcon("action", "layer-vectorization", this);
210
		IconThemeHelper.registerIcon("action", "view-export-image", this);
211

  
212
		//Cursor
213
		IconThemeHelper.registerIcon("cursor", "zoom-pixel-cursor", this);
214
		IconThemeHelper.registerIcon("cursor", "hor-arrow-cursor", this);
215
		IconThemeHelper.registerIcon("cursor", "ver-arrow-cursor", this);
216
		IconThemeHelper.registerIcon("cursor", "inclder-arrow-cursor", this);
217
		IconThemeHelper.registerIcon("cursor", "inclizq-arrow-cursor", this);
218
		IconThemeHelper.registerIcon("cursor", "shear-y-cursor", this);
219
		IconThemeHelper.registerIcon("cursor", "shear-x-cursor", this);
220
		IconThemeHelper.registerIcon("cursor", "rotate-cursor", this);
221
		IconThemeHelper.registerIcon("cursor", "rot-inf-der-cursor", this);
222
		IconThemeHelper.registerIcon("cursor", "rot-inf-izq-cursor", this);
223
		IconThemeHelper.registerIcon("cursor", "rot-sup-der-cursor", this);
224
		IconThemeHelper.registerIcon("cursor", "rot-sup-izq-cursor", this);
225
		IconThemeHelper.registerIcon("cursor", "point-select-cursor", this);
226
		IconThemeHelper.registerIcon("cursor", "hand-cursor", this);
227
		IconThemeHelper.registerIcon("cursor", "rectangle-select-cursor", this);
228
		IconThemeHelper.registerIcon("cursor", "not-valid-cursor", this);
229
		IconThemeHelper.registerIcon("cursor", "line-cursor", this);
230
		IconThemeHelper.registerIcon("cursor", "polygon-cursor", this);
231
		IconThemeHelper.registerIcon("cursor", "point-cursor", this);
232

  
233
		//Other
234
		IconThemeHelper.registerIcon(null, "forward-icon", this);
235
		IconThemeHelper.registerIcon(null, "backward-icon", this);
236
		IconThemeHelper.registerIcon(null, "blank-icon", this);
237
		IconThemeHelper.registerIcon(null, "addlayer-icon", this);
238
		IconThemeHelper.registerIcon(null, "delall-icon", this);
239
		IconThemeHelper.registerIcon(null, "back-icon", this);
240
		IconThemeHelper.registerIcon(null, "next-icon", this);
241
		IconThemeHelper.registerIcon(null, "undo-icon", this);
242
		IconThemeHelper.registerIcon(null, "pixel-increase", this);
243
		IconThemeHelper.registerIcon(null, "pref-raster-icon", this);
244
		IconThemeHelper.registerIcon(null, "back-icon", this);
245
		IconThemeHelper.registerIcon(null, "next-icon", this);
246
		IconThemeHelper.registerIcon(null, "undo-icon", this);
247
		//IconThemeHelper.registerIcon(null, "save-raster", this);
248
		IconThemeHelper.registerIcon(null, "pixel-increase", this);
249
		//IconThemeHelper.registerIcon(null, "select-raster", this);
250
		IconThemeHelper.registerIcon(null, "pref-raster-icon", this);
251
		IconThemeHelper.registerIcon(null, "reset-icon", this);
252
		IconThemeHelper.registerIcon(null, "tfwload-icon", this);
253
		IconThemeHelper.registerIcon(null, "centerraster-icon", this);
254
		IconThemeHelper.registerIcon(null, "increase-icon", this);
255
		IconThemeHelper.registerIcon(null, "decrease-icon", this);
256
		IconThemeHelper.registerIcon(null, "selectzoomarea-icon", this);
257
		IconThemeHelper.registerIcon(null, "prevzoom-icon", this);
258
		IconThemeHelper.registerIcon(null, "fullview-icon", this);
259
		IconThemeHelper.registerIcon(null, "exporttoascii-icon", this);
260
		IconThemeHelper.registerIcon(null, "exporttocsv-icon", this);
261
		IconThemeHelper.registerIcon(null, "importfromcsv-icon", this);
262
		IconThemeHelper.registerIcon(null, "exit-icon", this);
263
		IconThemeHelper.registerIcon(null, "options-icon", this);
264
		IconThemeHelper.registerIcon(null, "add-icon", this);
265
		IconThemeHelper.registerIcon(null, "centerpoint-icon", this);
266
		IconThemeHelper.registerIcon(null, "selectrgb-icon", this);
267
		IconThemeHelper.registerIcon(null, "focus-icon", this);
268
		IconThemeHelper.registerIcon(null, "point-icon", this);
269
		IconThemeHelper.registerIcon(null, "line-icon", this);
270
		IconThemeHelper.registerIcon(null, "polygon-icon", this);
271
		IconThemeHelper.registerIcon(null, "import-icon", this);
272
		IconThemeHelper.registerIcon(null, "round-icon", this);
273
		//IconThemeHelper.registerIcon(null, "rois-icon", this);
274
		IconThemeHelper.registerIcon(null, "fullextent-icon", this);
275
		IconThemeHelper.registerIcon(null, "selecttool-icon", this);
276
		IconThemeHelper.registerIcon(null, "forward-icon", this);
277
		IconThemeHelper.registerIcon(null, "backward-icon", this);
278
		IconThemeHelper.registerIcon(null, "datatype-icon", this);
279
		IconThemeHelper.registerIcon(null, "setviewprojection-raster-icon", this);
280
		IconThemeHelper.registerIcon(null, "gvsig-icon", this);
281
		IconThemeHelper.registerIcon(null, "gvsig-icon16x16", this);
282
	}
283

  
284
	public void registerMenuElements() {
285
		// Creaci?n del punto de extensi?n para registrar paneles en el cuadro de propiedades.
286
		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
287
		ExtensionPoint point = extensionPoints.get("GenericToolBarGroup");
288
		point.setDescription("Punto de extension para los grupos de menus del GenericToolBarPanel");
289

  
290
		point = extensionPoints.get("GenericToolBarMenu");
291
		point.setDescription("Punto de extension para los submenus del GenericToolBarPanel");
292
		//point.append("RasterProperties", "", RasterPropertiesTocMenuEntry.getSingleton());
293
		point.append("SelectLayer", "", SelectLayerTocMenuEntry.getSingleton());
294
		point.append("HistogramPanel", "", HistogramTocMenuEntry.getSingleton());
295
		point.append("ViewColorTable", "",ColorTableTocMenuEntry.getSingleton());
296
		if(RasterLocator.getManager().isOverviewBuilderSupported())
297
			point.append("Overviews", "", OverviewsTocMenuEntry.getSingleton());
298
		point.append("RoisManager", "", ROIManagerTocMenuEntry.getSingleton());
299
		point.append("ViewRasterAnalysis", "", ViewRasterAnalysisTocMenuEntry.getSingleton());
300
		point.append("ZoomResolutionLevel", "", ZoomResolutionLevelTocMenuEntry.getSingleton());
301

  
302
		//point.append("SaveRaster", "", SaveViewToRasterTocMenuEntry.getSingleton());
303
		point.append("SaveAs", "", SaveAsTocMenuEntry.getSingleton());
304
		point.append("ClippingPanel", "", ClippingTocMenuEntry.getSingleton());
305
		point.append("SaveViewToRaster", "", SaveViewToRasterTocMenuEntry.getSingleton());
306
		point.append("SaveViewToImageRaster", "", SaveViewToImageTocMenuEntry.getSingleton());
307

  
308
		point.append("FilterPanel", "", FilterTocMenuEntry.getSingleton());
309
		point.append("EnhancedPanel", "", EnhancedTocMenuEntry.getSingleton());
310
		point.append("InfoByPoint", "", InfoByRasterPointTocMenuEntry.getSingleton());
311
		point.append("LayerDatatype", "", LayerDatatypeTocMenuEntry.getSingleton());
312

  
313
		point.append("GeoLocation", "", GeoLocationTocMenuEntry.getSingleton());
314
		point.append("SetProjection", "", SetViewProjectionTocMenuEntry.getSingleton());
315

  
316
	}
317

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

  
331
	/**
332
	 * Mostramos el control si hay alguna capa cargada.
333
	 */
334
	public boolean isVisible() {
335
		org.gvsig.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager().getActiveWindow();
336
		if (f == null)
337
			return false;
338

  
339
		if (f instanceof AbstractViewPanel) {
340
			FLayers lyrs = ((AbstractViewPanel)f).getMapControl().getMapContext().getLayers();
341
			if (lyrs.getLayersCount() > 0)
342
				return true;
343
		}
344

  
345
		return false;
346
	}
347

  
348
	/**
349
	 * Carga los valores de configuracion iniciales
350
	 */
351
	private void loadConfigurationValues() {
352
		autoRefreshView = Configuration.getValue("general_auto_preview", Boolean.TRUE).booleanValue();
353
		RasterLibrary.defaultNumberOfClasses = Configuration.getValue("general_defaultNumberOfClasses", Integer.valueOf(RasterLibrary.defaultNumberOfClasses)).intValue();
354
		RasterLibrary.cacheSize = Configuration.getValue("cache_size", Long.valueOf(RasterLibrary.cacheSize)).longValue();
355
		RasterLibrary.pageSize = Configuration.getValue("cache_pagesize", Double.valueOf(RasterLibrary.pageSize)).doubleValue();
356
		RasterLibrary.pagsPerGroup = Configuration.getValue("cache_pagspergroup", Integer.valueOf(RasterLibrary.pagsPerGroup)).intValue();
357
		RasterLibrary.blockHeight = Configuration.getValue("cache_blockheight", Integer.valueOf(RasterLibrary.blockHeight)).intValue();
358
		//RasterLibrary.defaultNoDataValue = Configuration.getValue("nodata_value", Double.valueOf(RasterLibrary.defaultNoDataValue)).doubleValue();
359
	}
360

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

  
375
					ArrayList<FLayer> list = RasterToolsUtil.getRasterLayerList(lyrs, null);
376
					for (int j = 0; j < list.size(); j++)
377
						if(list.get(j) instanceof FLyrRaster)
378
							((RasterDataStore)((FLyrRaster)list.get(j)).getDataStore()).getNoDataValue().setNoDataTransparent(noDataTransparent);
379
				}
380

  
381
			return;
382
		}
383

  
384
		if (e.getKey().equals("general_auto_preview")) {
385
			if(e.getValue() instanceof String)
386
				autoRefreshView = new Boolean((String) e.getValue()).booleanValue();
387
			if(e.getValue() instanceof Boolean)
388
				autoRefreshView = ((Boolean) e.getValue()).booleanValue();
389
			return;
390
		}
391

  
392
		if (e.getKey().equals("general_defaultNumberOfClasses")) {
393
			if(e.getValue() instanceof String)
394
				try {
395
					RasterLibrary.defaultNumberOfClasses = new Integer(
396
							(String) e.getValue()).intValue();
397
				} catch (NumberFormatException exc) {
398
					//Valor por defecto en el n?mero de clases
399
				}
400

  
401
			if(e.getValue() instanceof Integer)
402
				RasterLibrary.defaultNumberOfClasses = ((Integer) e.getValue()).intValue();
403
			return;
404
		}
405

  
406
		if (e.getKey().equals("cache_size")) {
407
			if(e.getValue() instanceof String)
408
				try {
409
					RasterLibrary.cacheSize = new Long((String) e.getValue()).longValue();
410
				} catch (NumberFormatException exc) {
411
					//Valor por defecto en la cache
412
				}
413
			if(e.getValue() instanceof Long)
414
				RasterLibrary.cacheSize = ((Long) e.getValue()).longValue();
415
			return;
416
		}
417

  
418
		if (e.getKey().equals("cache_pagesize")) {
419
			if(e.getValue() instanceof String)
420
				try {
421
					RasterLibrary.pageSize = new Double((String) e.getValue())
422
							.doubleValue();
423
				} catch (NumberFormatException exc) {
424
					//Valor por defecto en la cache
425
				}
426

  
427
			if(e.getValue() instanceof Double)
428
				RasterLibrary.pageSize = ((Double) e.getValue()).doubleValue();
429
			return;
430
		}
431

  
432
		if (e.getKey().equals("cache_pagspergroup")) {
433
			if(e.getValue() instanceof String)
434
				try {
435
					RasterLibrary.pagsPerGroup = new Integer((String) e
436
							.getValue()).intValue();
437
				} catch (NumberFormatException exc) {
438
					//Valor por defecto en la cache
439
				}
440

  
441
			if(e.getValue() instanceof Integer)
442
				RasterLibrary.pagsPerGroup = ((Integer) e.getValue()).intValue();
443
			return;
444
		}
445

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

  
459
		/*if (e.getKey().equals("nodata_value")) {
460
			if(e.getValue() instanceof String)
461
				try {
462
					RasterLibrary.defaultNoDataValue = new Double((String) e
463
							.getValue()).doubleValue();
464
				} catch (NumberFormatException exc) {
465
					//Valor por defecto en valor nodata
466
				}
467

  
468
			if(e.getValue() instanceof Double)
469
				RasterLibrary.defaultNoDataValue = ((Double) e.getValue()).doubleValue();
470
			return;
471
		}*/
472

  
473
	}
474

  
475
	public void execute(ITocItem item, FLayer[] selectedItems) {
476
		this.execute("SELECTIMAGE");
477
	}
478

  
479
	public void postInitialize() {
480
		super.postInitialize();
481
		new ToolboxRasterToolsLoader().registerTool();
482
	}
483

  
484
	public boolean canQueryByAction() {
485
		return true;
486
	}
487

  
488
	public boolean isEnabled(String action) {
489
		//Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que el actionCommand
490
		//De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar isEnable a
491
		//trav?s de este.
492
		if(getGenericToolBarMenuExtensionPoint() != null && getGenericToolBarMenuExtensionPoint().get(action) != null) {
493
			ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(action).getBuilder();
494
			if(ext != null && ext instanceof AbstractTocContextMenuAction) {
495
				IWindow w = PluginServices.getMDIManager().getActiveWindow();
496
				if(w instanceof AbstractViewPanel) {
497
					FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
498
					FLayer[] actives = lyrs.getActives();
499
					return ((AbstractTocContextMenuAction)ext).isEnabled(null, actives);
500
				}
501
			}
502
		}
503
		return false;
504
	}
505

  
506
	public boolean isVisible(String action) {
507
		//Las entradas en GenericToolBarModule est?n registradas con la misma etiqueta que el actionCommand
508
		//De esta forma pueden recuperarse los TocMenuEntry del punto de extensi?n y ejecutar isVisible a
509
		//trav?s de este.
510
		if(getGenericToolBarMenuExtensionPoint() != null && getGenericToolBarMenuExtensionPoint().get(action) != null) {
511
			ExtensionBuilder ext = getGenericToolBarMenuExtensionPoint().get(action).getBuilder();
512
			if(ext != null && ext instanceof AbstractTocContextMenuAction) {
513
				IWindow w = PluginServices.getMDIManager().getActiveWindow();
514
				if(w instanceof AbstractViewPanel) {
515
					FLayers lyrs = ((AbstractViewPanel)w).getMapControl().getMapContext().getLayers();
516
					FLayer[] actives = lyrs.getActives();
517
					return ((AbstractTocContextMenuAction)ext).isVisible(null, actives);
518
				}
519
			}
520
		}
521
		return false;
522
	}
523

  
524
	public ExtensionPoint getGenericToolBarMenuExtensionPoint() {
525
		if(genericToolBarMenuExtensionPoint == null) {
526
			ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
527
			genericToolBarMenuExtensionPoint = extensionPoints.get("GenericToolBarMenu");
528
		}
529
		return genericToolBarMenuExtensionPoint;
530
	}
531
}
0 532

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.82/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/rasterresolution/ZoomPixelCursorTocMenuEntry.java
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.tool.rasterresolution;
23

  
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.app.project.Project;
26
import org.gvsig.app.project.ProjectManager;
27
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
28
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
29
import org.gvsig.app.project.documents.view.toc.ITocItem;
30
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
31
import org.gvsig.fmap.mapcontext.layers.FLayer;
32
import org.gvsig.fmap.mapcontrol.MapControl;
33
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
34
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
35
import org.gvsig.fmap.mapcontrol.tools.Behavior.PointBehavior;
36
import org.gvsig.raster.fmap.layers.FLyrRaster;
37
import org.gvsig.raster.fmap.layers.ILayerState;
38
import org.gvsig.raster.fmap.layers.IRasterLayerActions;
39

  
40

  
41
/**
42
 * Entrada de men? para la activaci?n de la funcionalidad de zoom a un
43
 * pixel centrado en el cursor.
44
 * 
45
 * @author Nacho Brodin (nachobrodin@gmail.com)
46
 */
47
public class ZoomPixelCursorTocMenuEntry extends AbstractTocContextMenuAction {
48
	private static ZoomPixelCursorTocMenuEntry  singleton              = null;
49
	public static final int                     ZOOM_TO_IMAGE_CENTER   = 0x1;
50
	public static final int                     ZOOM_TO_VIEW_CENTER    = 0x2;
51
	public int                                  zoomType               = ZOOM_TO_VIEW_CENTER;
52

  
53
	/**
54
	 * Gets a unique object of this class
55
	 * @return
56
	 */
57
	public static ZoomPixelCursorTocMenuEntry getSingleton() {
58
		if (singleton == null)
59
			singleton = new ZoomPixelCursorTocMenuEntry();
60
		return singleton;
61

  
62
	}
63
	
64
	/*
65
	 *  (non-Javadoc)
66
	 * @see com.iver.cit.gvsig.project.documents.IContextMenuAction#getGroup()
67
	 */
68
	public String getGroup() {
69
		return "group2"; //FIXME
70
	}
71

  
72
	/*
73
	 *  (non-Javadoc)
74
	 * @see com.iver.cit.gvsig.project.documents.IContextMenuAction#getGroupOrder()
75
	 */
76
	public int getGroupOrder() {
77
		return 20;
78
	}
79

  
80
	/*
81
	 *  (non-Javadoc)
82
	 * @see com.iver.cit.gvsig.project.documents.IContextMenuAction#getOrder()
83
	 */
84
	public int getOrder() {
85
		return 2;
86
	}
87

  
88
	/*
89
	 *  (non-Javadoc)
90
	 * @see com.iver.cit.gvsig.project.documents.IContextMenuAction#getText()
91
	 */
92
	public String getText() {
93
		return PluginServices.getText(this, "Zoom_pixel");
94
	}
95

  
96
	/*
97
	 *  (non-Javadoc)
98
	 * @see com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction#isEnabled(com.iver.cit.gvsig.project.documents.view.toc.ITocItem, com.iver.cit.gvsig.fmap.layers.FLayer[])
99
	 */
100
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
101
		if(getNodeLayer(item) instanceof ILayerState)
102
			if(!((ILayerState)getNodeLayer(item)).isOpen()) 
103
				return false;
104
		return true;
105
	}
106

  
107
	/*
108
	 *  (non-Javadoc)
109
	 * @see com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction#isVisible(com.iver.cit.gvsig.project.documents.view.toc.ITocItem, com.iver.cit.gvsig.fmap.layers.FLayer[])
110
	 */
111
	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
112
		if (isTocItemBranch(item)) {
113
			if(selectedItems == null || selectedItems.length != 1)
114
				return false;
115
			if((getNodeLayer(item) instanceof IRasterLayerActions) && 
116
			   ((IRasterLayerActions)getNodeLayer(item)).isActionEnabled(IRasterLayerActions.ZOOM_PIXEL_RESOLUTION))
117
				return getNodeLayer(item) instanceof FLyrRaster;
118
		}
119
		return false;
120

  
121
	}
122

  
123
	/**
124
	 * M?todo que se ejecuta cuando se pulsa la entrada en el men? contextual del TOC 
125
	 * correspondiente a "Zoom a la resoluci?n del raster". Aqu? se crear? el mapTool si 
126
	 * no se ha hecho antes y se cargar?.
127
	 */
128
	public void execute(ITocItem item, FLayer[] selectedItems) {
129
		if(selectedItems.length == 1) {
130
	        AbstractViewPanel vista = (AbstractViewPanel) PluginServices.getMDIManager().getActiveWindow();
131
	    	MapControl mapCtrl = vista.getMapControl();
132
	    	//Si no se ha cargado el listener a?n lo cargamos.
133
	        if(mapCtrl.getNamesMapTools().get("zoom_pixel_cursor_SE") == null) {
134
		        //Crea el listener del zoom a la resoluci?n del raster
135
	        	StatusBarListener sbl = new StatusBarListener(mapCtrl);
136
		        ZoomPixelCursorListener zp = new ZoomPixelCursorListener(mapCtrl);
137
		        mapCtrl.addBehavior("zoom_pixel_cursor_SE", new Behavior[]{
138
		        					new PointBehavior(zp), new MouseMovementBehavior(sbl)});
139
	        }
140
	    	mapCtrl.setTool("zoom_pixel_cursor_SE");
141
	    	//Project project = ((ProjectExtension)PluginServices.getExtension(ProjectExtension.class)).getProject();
142
			Project project = ProjectManager.getInstance().getCurrentProject();
143
			project.setModified(true);
144

  
145
		}
146
	}
147
}
0 148

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.82/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/rasterresolution/ZoomPixelCursorListener.java
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.tool.rasterresolution;
23

  
24
import java.awt.Cursor;
25
import java.awt.Image;
26
import java.awt.Point;
27
import java.awt.Toolkit;
28
import java.awt.geom.Point2D;
29
import java.util.ArrayList;
30

  
31
import org.gvsig.andami.IconThemeHelper;
32
import org.gvsig.andami.messages.NotificationManager;
33
import org.gvsig.fmap.dal.exception.ReadException;
34
import org.gvsig.fmap.geom.GeometryLocator;
35
import org.gvsig.fmap.geom.GeometryManager;
36
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
37
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
38
import org.gvsig.fmap.geom.primitive.Envelope;
39
import org.gvsig.fmap.mapcontext.ViewPort;
40
import org.gvsig.fmap.mapcontext.layers.FLayer;
41
import org.gvsig.fmap.mapcontrol.MapControl;
42
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
43
import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
44
import org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener;
45
import org.gvsig.raster.fmap.layers.FLyrRaster;
46
import org.slf4j.Logger;
47
import org.slf4j.LoggerFactory;
48

  
49

  
50

  
51
/**
52
 * Listener para la tool de zoom a la resoluci?n del raster. Este es el encargado de recibir
53
 * la petici?n desde la vista y calcular las coordenadas del raster.
54
 *
55
 * @author Nacho Brodin (nachobrodin@gmail.com)
56
 */
57
public class ZoomPixelCursorListener implements PointListener {
58
	private static final GeometryManager 	geomManager 	= GeometryLocator.getGeometryManager();
59
	private static final Logger 			logger 			= LoggerFactory.getLogger(ZoomPixelCursorListener.class);
60
	private Image 					        img 			= null;
61
	private Cursor 							cur 			= null;
62
	private MapControl 						mapCtrl;
63

  
64

  
65
	/**
66
	 * Constructor. Asigna el MapControl
67
	 * @param mc
68
	 */
69
	public ZoomPixelCursorListener(MapControl mc) {
70
		this.mapCtrl = mc;
71
	}
72

  
73
	/**
74
	 * Evento de selecci?n de punto sobre la vista. Aquin se calcular?n las coordenadas
75
	 * y dimensiones de la petici?n centrando la petici?n en el punto pinchado en la vista.
76
	 */
77
	@SuppressWarnings("deprecation")
78
	public void point(PointEvent event) throws BehaviorException {
79
		Point2D pReal = mapCtrl.getMapContext().getViewPort().toMapPoint(event.getPoint());
80
		//Point imagePoint = new Point((int) event.getPoint().getX(), (int) event.getPoint().getY());
81
		ViewPort v = mapCtrl.getMapContext().getViewPort();
82

  
83
		FLayer[] actives = mapCtrl.getMapContext().getLayers().getActives();
84
		Envelope ext = null;
85
		try {
86
			ext = actives[0].getFullEnvelope();
87
		} catch (ReadException e1) {
88
			NotificationManager.addError("Error al obtener el extent", e1);
89
		}
90

  
91
		ArrayList<Object> attr = ((FLyrRaster)actives[0]).getAttributes();
92
		int width = 0, height = 0;
93
		for (int i=0; i<attr.size(); i++) {
94
			Object[] a = (Object []) attr.get(i);
95
			if (a[0].toString().equals("Width"))
96
				width = ((Integer)a[1]).intValue();
97
			if (a[0].toString().equals("Height"))
98
				height = ((Integer)a[1]).intValue();
99
		}
100

  
101

  
102
		if(	ext != null &&
103
				width != 0 &&
104
				height != 0){
105

  
106
			double wcOriginCenterX = pReal.getX();
107
			double wcOriginCenterY = pReal.getY();
108

  
109
			//Hallamos la relaci?n entre el pixel y las WC a partir de la imagen de la capa
110
			double relacionPixelWcWidth =  (ext.getMaximum(0) - ext.getMinimum(0))/width;
111
			double relacionPixelWcHeight = (ext.getMaximum(1) - ext.getMinimum(1))/height;
112
			//double desplazamientoX = ext.getMinX();
113
			//double desplazamientoY = ext.getMinY();
114

  
115
			double wcOriginX = wcOriginCenterX - ((v.getImageWidth()*relacionPixelWcWidth)/2);
116
			double wcOriginY = wcOriginCenterY - ((v.getImageHeight()*relacionPixelWcHeight)/2);
117

  
118
			double wcDstMinX = wcOriginX;
119
			double wcDstMinY = wcOriginY;
120
			double wcDstMaxX = wcDstMinX + (v.getImageWidth()*relacionPixelWcWidth);
121
			double wcDstMaxY = wcDstMinY + (v.getImageHeight()*relacionPixelWcHeight);
122

  
123
			double wcDstWidth = wcDstMaxX - wcDstMinX;
124
			double wcDstHeight = wcDstMaxY - wcDstMinY;
125

  
126
			try {
127
				ext = geomManager.createEnvelope(wcDstMinX, wcDstMinY, wcDstMinX
128
						+ wcDstWidth, wcDstMinY + wcDstHeight, SUBTYPES.GEOM2D);
129
			} catch (CreateEnvelopeException e) {
130
				logger.error("Error creating the Envelope", e);
131
			}
132
			mapCtrl.getMapContext().getViewPort().setEnvelope(ext);
133
		}
134
	}
135

  
136
	/**
137
	 * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#getCursor()
138
	 */
139
	public Cursor getCursor() {
140
		if(cur == null)
141
			cur = Toolkit.getDefaultToolkit().createCustomCursor(getImageCursor(), new Point(16, 16), "");
142
		return cur;
143
	}
144

  
145
	public boolean cancelDrawing() {
146
		return false;
147
	}
148

  
149
	public void pointDoubleClick(PointEvent event) throws BehaviorException {
150

  
151
	}
152

  
153
	public Image getImageCursor() {
154
		if(img == null)
155
			img = IconThemeHelper.getImage("zoom-pixel-cursor");
156
		return img;
157
	}
158

  
159
}
0 160

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.82/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/filter/FilterListener.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 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
package org.gvsig.raster.tools.app.basic.tool.filter;
20

  
21
import java.awt.event.ActionEvent;
22
import java.awt.event.ActionListener;
23
import java.io.File;
24
import java.util.ArrayList;
25
import java.util.EventObject;
26
import java.util.Hashtable;
27
import java.util.List;
28

  
29
import javax.swing.ListModel;
30

  
31
import org.gvsig.andami.PluginServices;
32
import org.gvsig.fmap.dal.coverage.RasterLocator;
33
import org.gvsig.fmap.dal.coverage.datastruct.Param;
34
import org.gvsig.fmap.dal.coverage.datastruct.Params;
35
import org.gvsig.fmap.dal.coverage.exception.FilterManagerException;
36
import org.gvsig.fmap.dal.coverage.exception.FilterTypeException;
37
import org.gvsig.fmap.dal.coverage.grid.FilterUIListener;
38
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
39
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
40
import org.gvsig.fmap.dal.coverage.grid.RasterFilterListManager;
41
import org.gvsig.fmap.dal.coverage.grid.RegistrableFilterListener;
42
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
43
import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
44
import org.gvsig.gui.beans.propertiespanel.PropertiesComponentListener;
45
import org.gvsig.gui.beans.propertiespanel.PropertyStruct;
46
import org.gvsig.gui.beans.treelist.event.TreeListChangeEvent;
47
import org.gvsig.gui.beans.treelist.event.TreeListEvent;
48
import org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener;
49
import org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener;
50
import org.gvsig.raster.fmap.layers.FLyrRaster;
51
import org.gvsig.raster.swing.RasterSwingLibrary;
52
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
53
import org.gvsig.raster.tools.app.basic.raster.bean.previewbase.ParamStruct;
54
import org.gvsig.raster.tools.app.basic.raster.process.FilterProcess;
55
import org.gvsig.raster.tools.app.basic.raster.process.IProcessActions;
56
import org.gvsig.raster.tools.app.basic.tool.filter.ui.FilterPanel;
57
import org.gvsig.raster.util.RasterNotLoadException;
58

  
59
/**
60
 * <code>FilterListener</code> es la clase donde se procesar? gran parte del
61
 * c?digo que controla el panel para el manejo de un layer en la aplicaci?n de
62
 * filtros.
63
 *
64
 * @author BorSanZa - Borja S?nchez Zamorano 
65
 */
66
public class FilterListener implements ActionListener, TreeListComponentListener, TreeListChangeListener, PropertiesComponentListener, FilterUIListener, IProcessActions {
67
	private FilterPanel               filterPanel  = null;
68
	private int                       actualParam  = -1;
69
	private ArrayList<ParamStruct>    paramsList   = new ArrayList<ParamStruct>();
70

  
71
	/**
72
	 * Construye un FilterListener especificando el FilterPanel asociado
73
	 * @param filterDialog
74
	 */
75
	public FilterListener(FilterPanel filterPanel) {
76
		this.filterPanel = filterPanel;
77
	}
78
	
79
	/**
80
	 * Asignamos los valores del PropertiesComponent al Params seleccionado
81
	 */
82
	@SuppressWarnings("unchecked")
83
	public void refreshDataProperties() {
84
		if (actualParam == -1)
85
			return;
86

  
87
		ArrayList<PropertyStruct> listValues = getFilterPanel().getPropertiesComponent().getValues();
88

  
89
		Params params = ((ParamStruct) paramsList.get(actualParam)).getFilterParam();
90
		for (int j = 0; j < listValues.size(); j++) {
91
			PropertyStruct ps = (PropertyStruct) listValues.get(j);
92
			params.changeParamValue(ps.getKey(), ps.getNewValue());
93
		}
94
	}
95

  
96
	/**
97
	 * Obtener la posici?n del Param seleccionado en el ArrayList
98
	 * @param filterName
99
	 * @return
100
	 */
101
	private int getParamSelected(String filterName) {
102
		for (int i = 0; i < paramsList.size(); i++) {
103
			if (((ParamStruct) paramsList.get(i)).getFilterName().equals(filterName))
104
				return i;
105
		}
106
		return -1;
107
	}
108

  
109
	/**
110
	 * Cambiar el panel de propiedades central por el nuevo panel, segun el filtro
111
	 * seleccionado que se pasa por par?metro.
112
	 * @param filter
113
	 */
114
	public void changePanel(String filter) {
115
		int posParam = getParamSelected(filter);
116

  
117
		refreshDataProperties();
118
		actualParam = posParam;
119

  
120
		PropertiesComponent propertiesComponent = new PropertiesComponent();
121

  
122
		if (posParam != -1) {
123
			Params params = ((ParamStruct) paramsList.get(actualParam)).getFilterParam();
124
			if (params != null) {
125
				Param paramPanel = params.getParamById("Panel");
126
				if(	paramPanel != null && 
127
					paramPanel.getDefaultValue() instanceof RegistrableFilterListener)
128
					((RegistrableFilterListener)paramPanel.getDefaultValue()).addFilterUIListener(this);
129
				RasterToolsUtil.loadPropertiesFromWriterParams(propertiesComponent, params, new String[]{"FilterName"});
130
			}
131
		}
132
		getFilterPanel().setNewPropertiesComponent(propertiesComponent, filter);
133
	}
134

  
135
	/**
136
	 * A?adir un nuevo Params a la lista de Params que podemos manejar. Un Params
137
	 * equivale a un filtro cargado. El hecho de trabajar con Params y no con
138
	 * filtros, simplifica totalmente el panel. Sin tener que depender de los
139
	 * filtros nada m?s que para el momento de dibujado o guardado.
140
	 * @param name
141
	 * @param params
142
	 * @param classFilter
143
	 */
144
	public void addNewParam(String name, Params params, Class<?> classFilter) {
145
		ParamStruct param = new ParamStruct();
146
		param.setFilterName(name);
147
		param.setFilterParam(params);
148
		param.setFilterClass(classFilter);
149
		paramsList.add(param);
150
	}
151

  
152
	public void actionChangeProperties(EventObject e) {
153
		refreshDataProperties();
154
		getFilterPanel().refreshPreview();
155
	}
156

  
157
	public void actionChangeSelection(TreeListChangeEvent e) {
158
		changePanel(e.getItem());
159
	}
160

  
161
	public void actionPerformed(ActionEvent e) {
162
		getFilterPanel().refreshPreview();
163
	}
164

  
165
	public void elementAdded(TreeListEvent e) {
166
		getFilterPanel().refreshPreview();
167
	}
168

  
169
	public void elementMoved(TreeListEvent e) {
170
		getFilterPanel().refreshPreview();
171
	}
172

  
173
	public void elementRemoved(TreeListEvent e) {
174
		getFilterPanel().refreshPreview();
175
	}
176

  
177
	/**
178
	 * @return the paramsList
179
	 */
180
	public ArrayList<ParamStruct> getParamsList() {
181
		return paramsList;
182
	}
183

  
184
	/**
185
	 * Aqui se seleccionan que filtros se van a aplicar y se devuelven en forma
186
	 * de ArrayList tanto para el dibujado como cuando aceptan o aplican el panel.
187
	 * @param layerRaster
188
	 * @return
189
	 */
190
	public ArrayList<ParamStruct> applyFilters(FLyrRaster layerRaster) {
191
		ArrayList<ParamStruct> listFilterUsed = new ArrayList<ParamStruct>();
192

  
193
		int initDataType = layerRaster.getRender().getFilterList().getInitDataType();
194
		RasterFilterList filterList = RasterLocator.getManager().createEmptyFilterList(initDataType);
195
		filterList.setEnv(layerRaster.getRender().getFilterList().getEnv());
196
		filterList.setInitDataType(initDataType);
197
		List<Class<?>> registeredFilters = filterList.getRegisteredFilterList();
198

  
199
		// Conservamos filtros no visibles ya existentes
200
		List<RasterFilter> filtersInit =  getFilterPanel().getLayerVisualStatus().getLast().getFilterStatus();
201
		for (int i = 0; i < filtersInit.size(); i++) {
202
			// Si es visible no hacemos nada
203
			if (((RasterFilter) filtersInit.get(i)).isVisible())
204
				continue;
205

  
206
			RasterFilter obj = null;
207
			for (int j = 0; j < registeredFilters.size(); j++) {
208
				Class<?> classFilter = (Class<?>) registeredFilters.get(j);
209
				try {
210
					obj = (RasterFilter) classFilter.newInstance();
211
					if (obj.getName().equals(((RasterFilter) filtersInit.get(i)).getName()))
212
						break;
213
				} catch (InstantiationException e) {
214
					RasterSwingLibrary.messageBoxError("error_creando_filtro", this, e);
215
				} catch (IllegalAccessException e) {
216
					RasterSwingLibrary.messageBoxError("error_creando_filtro", this, e);
217
				}
218
			}
219

  
220
			// Si no encontramos el filtro apropiado, nos olvidamos de el
221
			if (obj == null)
222
				continue;
223

  
224
			// Si no es visible tenemos que conservar el filtro
225
			try {
226
				Params params = (Params) ((RasterFilter) filtersInit.get(i)).getUIParams(((RasterFilter) filtersInit.get(i)).getName()).clone();
227
				// A?ado el parametro RenderBands a los parametros del filtro
228
				int[] renderBands = layerRaster.getRender().getRenderColorInterpretation().buildRenderBands();
229
				String rgb = renderBands[0] + " " + renderBands[1] + " " + renderBands[2];
230
				params.setParam("RenderBands", rgb, 0, null);
231
				params.setParam("alphaBand", new Integer(layerRaster.getAlphaBandNumber()), 0, null);
232
				
233
				ParamStruct newParam = new ParamStruct();
234
				newParam.setFilterClass(obj.getClass());
235
				newParam.setFilterName(((RasterFilter) filtersInit.get(i)).getName());
236
				newParam.setFilterParam(params);
237
				listFilterUsed.add(newParam);
238
			} catch (CloneNotSupportedException e) {
239
			}
240
		}
241

  
242
		// Metemos los filtros seleccionados en el panel
243
		ListModel list = getFilterPanel().getMainPanel().getTreeListContainer().getListModel();
244
		for (int i = 0; i < list.getSize(); i++) {
245
			Hashtable<?, ?> hastTable = getFilterPanel().getMainPanel().getTreeListContainer().getMap();
246
			for (int j = 0; j < paramsList.size(); j++) {
247
				boolean active = true;
248
				Param param = ((ParamStruct) paramsList.get(j)).getFilterParam().getParamById("enabled");
249
				if ((param != null) &&
250
					param.getDefaultValue() instanceof Boolean &&
251
					((((Boolean)param.getDefaultValue()).booleanValue()) == false))
252
					active = false;
253
				if (active) {
254
					if (((ParamStruct) paramsList.get(j)).getFilterName().equals(hastTable.get(list.getElementAt(i)))) {
255
						try {
256
							Params params = (Params) ((ParamStruct) paramsList.get(j)).getFilterParam().clone();
257
							// A?ado el parametro RenderBands a los parametros del filtro
258
							int[] renderBands = layerRaster.getRender().getRenderColorInterpretation().buildRenderBands();
259
							String rgb = renderBands[0] + " " + renderBands[1] + " " + renderBands[2];
260
							params.setParam("RenderBands", rgb, 0, null);
261
							params.setParam("alphaBand", new Integer(layerRaster.getAlphaBandNumber()), 0, null);
262

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff