Revision 8765

View differences:

org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/org.gvsig.raster.tools.app.basic/buildNumber.properties
1
#Mon Feb 19 16:21:23 CET 2018
2
buildNumber=120
0 3

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/org.gvsig.raster.tools.app.basic/src/main/assembly/gvsig-plugin-package.xml
1
<assembly>
2
  <id>gvsig-plugin-package</id>
3
  <formats>
4
    <format>zip</format>
5
  </formats>
6
  <baseDirectory>${project.artifactId}</baseDirectory>
7
  <includeBaseDirectory>true</includeBaseDirectory>
8
  <files>
9
    <file>
10
      <source>target/${project.artifactId}-${project.version}.jar</source>
11
      <outputDirectory>lib</outputDirectory>
12
    </file>
13
    <file>
14
      <source>target/package.info</source>
15
    </file>
16
  </files>
17

  
18
  <fileSets>
19
    <fileSet>
20
      <directory>src/main/resources-plugin</directory>
21
      <outputDirectory>.</outputDirectory>
22
    </fileSet>
23
  </fileSets>
24

  
25

  
26
  <dependencySets>
27
    <dependencySet>
28
      <useProjectArtifact>false</useProjectArtifact>
29
	  <useTransitiveDependencies>false</useTransitiveDependencies>
30
      <outputDirectory>lib</outputDirectory>
31
      <includes> 
32
				<include>org.gvsig:org.gvsig.raster.tools.app.basic:jar</include>
33
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.layerdatatype:jar</include>
34
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.saveraster:jar</include>
35
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.swing.api:jar</include>
36
				<include>org.gvsig:org.gvsig.raster.tools.algorithm.swing.impl:jar</include>
37
				<include>org.gvsig:org.gvsig.raster.tools.toolbox.algorithm:jar</include>
38
	  </includes>
39
	</dependencySet>
40
  </dependencySets>
41
</assembly>
0 42

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/SystemGCExtension.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 org.gvsig.andami.plugins.Extension;
25

  
26

  
27
/**
28
 * @author Nacho Brodin (nachobrodin@gmail.com)
29
 */
30
public class SystemGCExtension extends Extension {
31

  
32
	public void execute(String actionCommand) {
33
		System.gc();
34
	}
35

  
36
	public void initialize() {
37

  
38
	}
39

  
40
	public boolean isEnabled() {
41
		return true;
42
	}
43

  
44
	public boolean isVisible() {
45
		return true;
46
	}
47

  
48
}
0 49

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/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.69/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.69/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/analysisview/ViewRasterAnalysisTocMenuEntry.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.raster.tools.app.basic.tool.analysisview;
20

  
21
import java.beans.PropertyChangeEvent;
22
import java.beans.PropertyChangeListener;
23
import java.io.File;
24
import java.util.ArrayList;
25
import java.util.List;
26

  
27
import javax.swing.Icon;
28
import javax.swing.JOptionPane;
29

  
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.app.project.documents.view.MapOverview;
33
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
34
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
35
import org.gvsig.app.project.documents.view.toc.ITocItem;
36
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
37
import org.gvsig.fmap.mapcontext.layers.FLayer;
38
import org.gvsig.fmap.mapcontext.layers.FLayers;
39
import org.gvsig.fmap.mapcontrol.MapControl;
40
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster;
41
import org.gvsig.raster.fmap.layers.FLyrRaster;
42
import org.gvsig.raster.fmap.layers.ILayerState;
43
import org.gvsig.raster.mainplugin.toolbar.IGenericToolBarMenuItem;
44
import org.gvsig.raster.swing.RasterSwingLibrary;
45
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
46
import org.gvsig.raster.tools.app.basic.tool.pixelincrease.PixelIncreaseDialog;
47

  
48
/**
49
 * Herramienta del men? contextual que carga el raster en el localizador para tener una visi?n general de
50
 * esta y carga el zoom del cursor para tener una selecci?n de precisi?n.
51
 *
52
 * 16-jun-2007
53
 * @author Nacho Brodin (nachobrodin@gmail.com)
54
 */
55
public class ViewRasterAnalysisTocMenuEntry extends AbstractTocContextMenuAction implements PropertyChangeListener, IGenericToolBarMenuItem {
56
	private boolean onView = false;
57
	private String rasterNameInLoc = "";
58
	static private ViewRasterAnalysisTocMenuEntry singleton = null;
59

  
60
	/**
61
	 * Nadie puede crear una instancia a esta clase ?nica, hay que usar el
62
	 * getSingleton()
63
	 */
64
	private ViewRasterAnalysisTocMenuEntry() {}
65

  
66
	/**
67
	 * Devuelve un objeto unico a dicha clase
68
	 * @return
69
	 */
70
	static public ViewRasterAnalysisTocMenuEntry getSingleton() {
71
		if (singleton == null)
72
			singleton = new ViewRasterAnalysisTocMenuEntry();
73

  
74
		return singleton;
75
	}
76

  
77
	public String getGroup() {
78
		return "RasterLayer";
79
	}
80

  
81
	public int getGroupOrder() {
82
		return 10;
83
	}
84

  
85
	public int getOrder() {
86
		return 80;
87
	}
88

  
89
	public String getText() {
90
		if (!onView)
91
			return RasterToolsUtil.getText(this, "analysisview");
92
		else
93
			return RasterToolsUtil.getText(this, "closeanalysisview");
94
	}
95

  
96
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
97
		if ((selectedItems == null) || (selectedItems.length != 1))
98
			return false;
99

  
100
		if (!(selectedItems[0] instanceof ILayerState))
101
			return false;
102

  
103
		if (!((ILayerState) selectedItems[0]).isOpen())
104
			return false;
105
		return true;
106
	}
107

  
108
	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
109
		if ((selectedItems == null) || (selectedItems.length != 1))
110
			return false;
111

  
112
		if (!(selectedItems[0] instanceof FLyrRaster))
113
			return false;
114

  
115
		return true;
116
	}
117

  
118
	public void execute(ITocItem item, FLayer[] selectedItems) {
119
		MapControl mcCurrentLoc = null;
120
		List<MapOverview> mapControlListLoc = new ArrayList<MapOverview>();
121
		IWindow[] w = PluginServices.getMDIManager().getAllWindows();
122
		IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
123
		FLayer lyr = selectedItems[0];
124

  
125
		// Cerramos cualquier inspector de pixeles anterior que est? abierto y
126
		// obtenemos el mapcontrol del localizador
127
		for (int i = 0; i < w.length; i++) {
128
			if (w[i] instanceof PixelIncreaseDialog)
129
				RasterToolsUtil.closeWindow(w[i]);
130
			if (w[i] instanceof AbstractViewPanel && w[i].equals(activeWindow))
131
				mcCurrentLoc = ((AbstractViewPanel) w[i]).getMapOverview();
132
			if (w[i] instanceof AbstractViewPanel)
133
				mapControlListLoc.add(((AbstractViewPanel) w[i]).getMapOverview());
134
		}
135

  
136
		if (!onView) {
137
			// Abrimos el inspector de pixeles
138
			PixelIncreaseDialog pIncrease = new PixelIncreaseDialog();
139
			RasterToolsUtil.addWindow(pIncrease);
140

  
141
			// Cargamos el raster en el localizador
142
			mcCurrentLoc.getMapContext().beginAtomicEvent();
143

  
144
			String path = null;
145
			if (lyr instanceof FLyrRaster)
146
				path = new File(((FLyrRaster) lyr).getURI()).getAbsolutePath();
147

  
148
			try {
149
				File f = new File(path);
150
				if(!f.exists()) {
151
					RasterSwingLibrary.messageBoxError("error_file_not_found", PluginServices.getMDIManager().getActiveWindow());
152
					return;
153
				}
154
				lyr = DefaultFLyrRaster.createLayer(lyr.getName(), f);
155
				rasterNameInLoc = lyr.getName();
156
				mcCurrentLoc.getMapContext().getLayers().addLayer(lyr);
157
			} catch (LoadLayerException e) {
158
				JOptionPane.showMessageDialog(null, RasterToolsUtil.getText(this, "coordenadas_erroneas"));
159
			}
160
			mcCurrentLoc.getMapContext().endAtomicEvent();
161
		} else {
162
			for (int nViews = 0; nViews < mapControlListLoc.size(); nViews++) {
163
				MapControl mc = ((MapControl) mapControlListLoc.get(nViews));
164
				FLayers lyrs = mc.getMapContext().getLayers();
165
				for (int i = 0; i < lyrs.getLayersCount(); i++) {
166
					if (lyrs.getLayer(i).getName().compareTo(rasterNameInLoc) == 0)
167
						lyrs.removeLayer(i);
168
				}
169
				if (mc instanceof MapOverview)
170
					((MapOverview) mc).refreshExtent();
171
			}
172
		}
173
		onView = !onView;
174
	}
175

  
176
	public Icon getIcon() {
177
		return RasterToolsUtil.getIcon("view-raster-analysis");
178
	}
179

  
180
	public void propertyChange(PropertyChangeEvent evt) {}
181

  
182
	public boolean isEnableEvents() {
183
		return true;
184
	}
185
}
0 186

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/multiresolution/ZoomResolutionLevelTocMenuEntry.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.multiresolution;
23

  
24
import java.awt.Component;
25
import java.beans.PropertyChangeEvent;
26
import java.beans.PropertyChangeListener;
27

  
28
import javax.swing.Icon;
29
import javax.swing.JOptionPane;
30

  
31
import org.gvsig.andami.PluginServices;
32
import org.gvsig.andami.ui.mdiManager.IWindow;
33
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
34
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
35
import org.gvsig.app.project.documents.view.toc.ITocItem;
36
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
37
import org.gvsig.fmap.mapcontext.layers.FLayer;
38
import org.gvsig.fmap.mapcontrol.MapControl;
39
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
40
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
41
import org.gvsig.fmap.mapcontrol.tools.Behavior.PointBehavior;
42
import org.gvsig.raster.fmap.layers.FLyrRaster;
43
import org.gvsig.raster.fmap.layers.ILayerState;
44
import org.gvsig.raster.mainplugin.toolbar.IGenericToolBarMenuItem;
45
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
46

  
47

  
48
/**
49
 * Entry point for zoom by resolution level
50
 * @author Nacho Brodin (nachobrodin@gmail.com)
51
 */
52
public class ZoomResolutionLevelTocMenuEntry extends AbstractTocContextMenuAction implements PropertyChangeListener, IGenericToolBarMenuItem {
53
	static private ZoomResolutionLevelTocMenuEntry singleton  = null;
54

  
55
	/**
56
	 * Nadie puede crear una instancia a esta clase ?nica, hay que usar el
57
	 * getSingleton()
58
	 */
59
	private ZoomResolutionLevelTocMenuEntry() {}
60

  
61
	/**
62
	 * Devuelve un objeto unico a dicha clase
63
	 * @return
64
	 */
65
	static public ZoomResolutionLevelTocMenuEntry getSingleton() {
66
		if (singleton == null)
67
			singleton = new ZoomResolutionLevelTocMenuEntry();
68
		return singleton;
69
	}
70
	
71
	public String getGroup() {
72
		return "RasterLayer";
73
	}
74

  
75
	public int getGroupOrder() {
76
		return 10;
77
	}
78

  
79
	public int getOrder() {
80
		return 90;
81
	}
82

  
83
	public String getText() {
84
		return RasterToolsUtil.getText(this, "goto_resolution_level");
85
	}
86
	
87
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
88
		if ((selectedItems == null) || (selectedItems.length != 1))
89
			return false;
90
		if (selectedItems[0] instanceof ILayerState) {
91
			if (!((ILayerState) selectedItems[0]).isOpen())
92
				return false;
93
			if (selectedItems[0] instanceof FLyrRaster) {
94
				FLyrRaster lyr = (FLyrRaster)selectedItems[0];
95
				if(lyr.getDataStore().isTiled())
96
					return true;
97
			}
98
		}
99
		return false;
100
	}
101

  
102
	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
103
		if ((selectedItems == null) || (selectedItems.length != 1))
104
			return false;
105
		if (selectedItems[0] instanceof FLyrRaster)
106
			return true;
107
		return false;
108
	}
109

  
110
	public void execute(ITocItem item, FLayer[] selectedItems) {		
111
		IWindow theView = PluginServices.getMDIManager().getActiveWindow();
112
		if(!(theView instanceof AbstractViewPanel)) {
113
			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this.getClass(), "window_not_valid"));
114
			return;
115
		}
116

  
117
		MapControl mapCtrl = ((AbstractViewPanel)theView).getMapControl();
118
		StatusBarListener sbl = new StatusBarListener(mapCtrl);
119
		ResolutionLevelListener rll = new ResolutionLevelListener();
120
		mapCtrl.addBehavior("zoomResolutionLevel", new Behavior[]{new PointBehavior(rll),
121
				new MouseMovementBehavior(sbl)});
122
		mapCtrl.setTool("zoomResolutionLevel");
123
	}
124

  
125
	public Icon getIcon() {
126
		return RasterToolsUtil.getIcon("layer-zoom-res-level");
127
	}
128

  
129
	public void propertyChange(PropertyChangeEvent evt) {}
130
	
131
	public boolean isEnableEvents() {
132
		return true;
133
	}
134
}
0 135

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/multiresolution/ResolutionLevelListener.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.multiresolution;
23

  
24
import java.awt.Component;
25
import java.awt.Image;
26
import java.awt.event.MouseEvent;
27
import java.awt.geom.Point2D;
28

  
29
import javax.swing.JOptionPane;
30

  
31
import org.gvsig.andami.IconThemeHelper;
32
import org.gvsig.andami.PluginServices;
33
import org.gvsig.andami.ui.mdiManager.IWindow;
34
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
35
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
36
import org.gvsig.fmap.geom.primitive.Envelope;
37
import org.gvsig.fmap.mapcontext.ViewPort;
38
import org.gvsig.fmap.mapcontext.layers.FLayers;
39
import org.gvsig.fmap.mapcontrol.MapControl;
40
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
41
import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
42
import org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener;
43
import org.gvsig.raster.fmap.layers.Multiresolution;
44
import org.slf4j.Logger;
45
import org.slf4j.LoggerFactory;
46

  
47
/**
48
 * <p>Inherits {@link ResolutionLevelListenerImpl ResolutionLevelListenerImpl} enabling/disabling special
49
 *  controls for managing the data selected.</p>
50
 *
51
 * @see ResolutionLevelListenerImpl
52
 *
53
 * @author Nacho Brodin (nachobrodin@gmail.com)
54
 */
55
public class ResolutionLevelListener implements PointListener {
56
	private static final Logger logger  = LoggerFactory.getLogger(ResolutionLevelListener.class);
57
	private Image               izoomin = null;
58

  
59
	@SuppressWarnings("deprecation")
60
	public void point(PointEvent event) throws BehaviorException {
61
		//Selects active window
62
		IWindow theView = PluginServices.getMDIManager().getActiveWindow();
63
		if(!(theView instanceof AbstractViewPanel)) {
64
			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this.getClass(), "window_not_valid"));
65
			return;
66
		}
67
		
68
		//Gets the multiresolution layer
69
		MapControl mapCtrl = ((AbstractViewPanel)theView).getMapControl();
70
		FLayers layers = mapCtrl.getMapContext().getLayers();
71
		Multiresolution lyrMultires = null;
72
		for (int i = 0; i < layers.getLayersCount(); i++) {
73
			if(layers.getLayer(i).isActive() && 
74
				layers.getLayer(i) instanceof Multiresolution &&
75
				((Multiresolution)layers.getLayer(i)).isEnabledMultiresolution()) {
76
				lyrMultires = (Multiresolution)layers.getLayer(i);
77
			}
78
		}
79
		
80
		//Shows a message if the layer doesn't exist or there aren't any selected
81
		if(lyrMultires == null) {
82
			boolean thereAreLayersSelected = false;
83
			for (int i = 0; i < layers.getLayersCount(); i++) {
84
				if(layers.getLayer(i).isActive())
85
					thereAreLayersSelected = true;
86
			}
87
			String message = null;
88
			if(!thereAreLayersSelected)
89
				message = PluginServices.getText(this.getClass(), "there_arent_selected");
90
			else
91
				message = PluginServices.getText(this.getClass(), "no_resolution_level");
92
			
93
			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), message);
94
			return;
95
		}
96
		
97
		//Left button. Zoom +
98
		if(event.getEvent().getButton() == MouseEvent.BUTTON1) { 
99
			if(!lyrMultires.increaseZoomLevel()) {
100
    			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this.getClass(), "max_zoom_reached"));
101
    			return;
102
    		}
103
		}
104
		
105
		//Right button. Zoom -
106
		if(event.getEvent().getButton() == MouseEvent.BUTTON3) { 
107
			if(!lyrMultires.decreaseZoomLevel()) {
108
    			JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), PluginServices.getText(this.getClass(), "min_zoom_reached"));
109
    			return;
110
    		}
111
		}
112
		
113
		ViewPort viewPort = mapCtrl.getMapContext().getViewPort();
114
		Point2D center = viewPort.toMapPoint(event.getPoint());
115
		Envelope r;
116
		try {
117
			r = lyrMultires.getCoordsInLevel(center, lyrMultires.getZoomLevel(), 
118
					viewPort.getImageWidth(), viewPort.getImageHeight());
119
		} catch (CreateEnvelopeException e) {
120
			return;
121
		}
122
		
123
		viewPort.setEnvelope(r);
124
		
125
		if (PluginServices.getMainFrame() != null)
126
		    PluginServices.getMainFrame().enableControls();
127
	}
128

  
129
	public void pointDoubleClick(PointEvent event) throws BehaviorException {
130
	}
131

  
132
	public boolean cancelDrawing() {
133
		logger.debug("cancelDrawing true");
134
		return true;
135
	}
136

  
137
	public Image getImageCursor() {
138
		if(izoomin == null)
139
			izoomin = IconThemeHelper.getImage("point-cursor");
140
		return izoomin;
141
	}
142
}
0 143

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/saveraster/DriverProperties.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.saveraster;
23

  
24
import org.gvsig.fmap.dal.coverage.RasterLocator;
25
import org.gvsig.fmap.dal.coverage.util.ProviderServices;
26

  
27
/**
28
 * Clase que representa a las propiedades que se seleccionan de cada driver.
29
 * Inicialmente se resetea el array driversProps a null. Cada elemento de este
30
 * array representa una extensi?n de fichero soportada. Cuando se modifica
31
 * las propiedades para una determinada extensi?n de un driver estas se asignan
32
 * a su entrada del vector driversExtensionProps y desde aqu? son leidas para
33
 * ser restauradas en caso de volver el cuadro de dialogo de propiedades.
34
 *  
35
 * @author Nacho Brodin (nachobrodin@gmail.com)
36
 *
37
 */
38
public class DriverProperties{
39

  
40
	private String[][]				driversExtensionProps = null;
41
	private String[]				driversExtension = null;
42

  
43
	public DriverProperties(){
44
		ProviderServices prov = RasterLocator.getManager().getProviderServices();
45
		driversExtensionProps = new String[prov.getWriteNDrivers()][];
46
		for(int i = 0; i < prov.getWriteNDrivers(); i++)
47
			driversExtensionProps[i] = null;
48
		driversExtension = prov.getDriversExtensions();
49
	}
50

  
51
	/**
52
	 * Asigna un vector de propiedades de driver de escritura.
53
	 * @param ext	extensi?n del driver.
54
	 * @param props	propiedades.
55
	 */
56
	public void setProperties(String ext, String[] props){
57
		for(int i = 0; i < driversExtension.length; i++){
58
			if(ext.equals(driversExtension[i])){
59
				driversExtensionProps[i] = props;
60
			}
61
		}
62
	}
63

  
64
	/**
65
	 * Obtiene un vector de propiedades de driver de escritura.
66
	 * @param ext	extensi?n del driver.
67
	 * @return	propiedades.
68
	 */
69
	public String[] getProperties(String ext){
70
		for(int i = 0; i < driversExtension.length; i++){
71
			if(ext.equals(driversExtension[i])){
72
				return driversExtensionProps[i];
73
			}
74
		}
75
		return null;
76
	}
77

  
78
	/**
79
	 * Para una extensi?n de fichero determinada obtiene el valor de una propiedad si existe este.
80
	 * La extensi?n solicitadad deber? estar registrada
81
	 * @param extension Extensi?n del fichero.
82
	 * @param property Propiedad a recuperar.
83
	 * @return Valor de la propiedad o null en caso de que la extensi?n de fichero no exista o la propiedad
84
	 * no se encuentre.
85
	 */
86
	public String getValue(String extension, String property) {
87
		String[] props = getProperties(extension);
88
		if(props != null){
89
			for (int i = 0; i < props.length; i++) {
90
				if(props[i].startsWith(property + "="))
91
					return props[i].substring(props[i].lastIndexOf("=") + 1, props[i].length());
92
			}
93
		}
94
		return null;
95
	}
96
}
0 97

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.69/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/saveraster/SaveRasterTocMenuEntry.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.saveraster;
23

  
24
import javax.swing.Icon;
25

  
26
import org.gvsig.andami.IconThemeHelper;
27
import org.gvsig.andami.PluginServices;
28
import org.gvsig.app.project.documents.view.ViewDocument;
29
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
30
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
31
import org.gvsig.app.project.documents.view.toc.ITocItem;
32
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
33
import org.gvsig.fmap.mapcontext.MapContext;
34
import org.gvsig.fmap.mapcontext.layers.FLayer;
35
import org.gvsig.fmap.mapcontrol.MapControl;
36
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
37
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
38
import org.gvsig.fmap.mapcontrol.tools.Behavior.RectangleBehavior;
39
import org.gvsig.raster.mainplugin.toolbar.IGenericToolBarMenuItem;
40
import org.gvsig.raster.swing.RasterSwingLibrary;
41
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
42
import org.gvsig.raster.tools.app.basic.tool.saveraster.map.SaveRasterListener;
43

  
44

  
45
/**
46
 * Punto de entrada para la funcionalidad de salvar a raster
47
 * 
48
 * 22/07/2008
49
 * @author Nacho Brodin nachobrodin@gmail.com
50
 */
51
public class SaveRasterTocMenuEntry extends AbstractTocContextMenuAction implements IGenericToolBarMenuItem {
52
	static private SaveRasterTocMenuEntry singleton  = null;
53

  
54
	/**
55
	 * Nadie puede crear una instancia a esta clase ?nica, hay que usar el
56
	 * getSingleton()
57
	 */
58
	private SaveRasterTocMenuEntry() {}
59

  
60
	/**
61
	 * Devuelve un objeto unico a dicha clase
62
	 * @return
63
	 */
64
	static public SaveRasterTocMenuEntry getSingleton() {
65
		if (singleton == null)
66
			singleton = new SaveRasterTocMenuEntry();
67
		return singleton;
68
	}
69

  
70
	public String getGroup() {
71
		return "RasterExport";
72
	}
73

  
74
	public int getGroupOrder() {
75
		return 50;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff