Revision 7114

View differences:

org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.48/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.48</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.fmap.mapcontext.operation</artifactId>
197
                <scope>runtime</scope>
198
        </dependency>
199
        <dependency>
200
			<groupId>org.gvsig</groupId>
201
			<artifactId>org.gvsig.geoprocess.lib.sextante</artifactId>
202
			<scope>compile</scope>
203
		</dependency>
204
		<dependency>
205
			<groupId>org.gvsig</groupId>
206
			<artifactId>org.gvsig.geoprocess.app.mainplugin</artifactId>
207
			<scope>compile</scope>
208
		</dependency>
209
		<dependency>
210
			<groupId>org.gvsig</groupId>
211
			<artifactId>org.gvsig.raster.tools.toolbox.algorithm</artifactId>
212
			<scope>compile</scope>
213
		</dependency>
214
	</dependencies>
215
	<properties>
216
   		<gvsig.package.info.dependencies>required: org.gvsig.raster.tilecache.app -ge 2</gvsig.package.info.dependencies>
217
   		<gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/Raster/pool</gvsig.package.info.poolURL>
218
   		<gvsig.package.info.categories>Raster</gvsig.package.info.categories>
219
   		<gvsig.package.info.state>final</gvsig.package.info.state>
220
   		<gvsig.package.info.official>true</gvsig.package.info.official>
221
	</properties>
222
</project>
0 223

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.48/org.gvsig.raster.tools.app.basic/buildNumber.properties
1
#Wed Jun 07 00:39:53 CEST 2017
2
buildNumber=99
0 3

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.48/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.48/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.48/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.48/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.48/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/pixelincrease/PixelIncreaseBehavior.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.pixelincrease;
23

  
24
import java.awt.event.MouseEvent;
25

  
26
import org.gvsig.andami.PluginServices;
27
import org.gvsig.andami.ui.mdiManager.IWindow;
28
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
29
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
30
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
31
import org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener;
32
import org.gvsig.raster.swing.pixelinspector.PixelInspector;
33

  
34

  
35
/**
36
 * Behavior para que se a?ada a los Behavior del Mapcontrol y poder
37
 * gestionar el evento de mover el rat?n sobre la vista de gvSIG.
38
 *
39
 * 12-may-2007
40
 * @author Nacho Brodin (nachobrodin@gmail.com)
41
 */
42
public class PixelIncreaseBehavior extends Behavior {
43

  
44
	private PixelInspector observer = null;
45
	
46
	/**
47
	 * Constructor. Asigna el dialogo
48
	 * @param dialog
49
	 */
50
	public PixelIncreaseBehavior(PixelInspector observer) {
51
		this.observer = observer;
52
	}
53
	
54
	/*
55
	 *  (non-Javadoc)
56
	 * @see com.iver.cit.gvsig.fmap.tools.Behavior.IBehavior#getListener()
57
	 */
58
	public ToolListener getListener() {
59
		return null;
60
	}
61
	
62
	/*
63
	 *  (non-Javadoc)
64
	 * @see com.iver.cit.gvsig.fmap.tools.Behavior.IBehavior#mouseMoved(java.awt.event.MouseEvent)
65
	 */
66
	public void mouseMoved(MouseEvent e) throws BehaviorException {
67
		IWindow active = PluginServices.getMDIManager().getActiveWindow();
68
		if(active instanceof AbstractViewPanel) {
69
			//System.out.println(((IView)active).getMapControl().getX() + " " + ((IView)active).getMapControl().getWidth());
70
			//System.out.println(((IView)active).getMapControl().getY() + " " + ((IView)active).getMapControl().getHeight());
71
			observer.setClear(false);
72
			observer.setDataBuffer(((AbstractViewPanel)active).getMapControl().getImage());
73
			//Calcula la posici?n donde se empezar? a dibujar en el componente. Para ello en ancho y el alto del componente
74
			//se ponen en la misma escala que la vista (w / scale), se calcula el punto medio del componente y se le resta el punto seleccionado
75
			//en la vista
76
			int pX = ((observer.getWidth() / observer.getScale()) >> 1) - e.getX();
77
			int pY = ((observer.getHeight() / observer.getScale()) >> 1) - e.getY();
78
			observer.setViewCoordinates((int)e.getPoint().getX(), (int)e.getPoint().getY());
79
			observer.setPosX(pX);
80
			observer.setPosY(pY);
81
			observer.repaint();
82
		}	
83
	}
84

  
85
}
0 86

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.48/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/pixelincrease/PixelIncreaseDialog.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.pixelincrease;
23

  
24
import java.awt.BorderLayout;
25
import java.awt.Color;
26
import java.awt.Graphics;
27
import java.awt.Graphics2D;
28
import java.awt.event.ActionEvent;
29
import java.awt.event.ActionListener;
30
import java.awt.event.MouseEvent;
31
import java.awt.event.MouseListener;
32
import java.awt.geom.AffineTransform;
33
import java.awt.image.BufferedImage;
34

  
35
import javax.swing.JCheckBoxMenuItem;
36
import javax.swing.JMenuItem;
37
import javax.swing.JPanel;
38
import javax.swing.JPopupMenu;
39
import javax.swing.event.PopupMenuEvent;
40
import javax.swing.event.PopupMenuListener;
41

  
42
import org.gvsig.andami.PluginServices;
43
import org.gvsig.andami.ui.mdiManager.IWindow;
44
import org.gvsig.andami.ui.mdiManager.WindowInfo;
45
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
46
import org.gvsig.fmap.mapcontrol.tools.CompoundBehavior;
47
import org.gvsig.raster.swing.pixelinspector.PixelInspector;
48

  
49

  
50

  
51
/**
52
 * Panel del zoom de la vista sobre el cursor.
53
 * 
54
 * @author Nacho Brodin (nachobrodin@gmail.com)
55
 */
56
public class PixelIncreaseDialog extends JPanel implements IWindow, MouseListener, PixelInspector {
57
    final private static long      serialVersionUID = -3370601314380922368L;
58
    private JPopupMenu             menu = null;
59
    /**
60
     * Ancho y alto de la ventana
61
     */
62
    private int                    width = 170;
63
    private int                    height = 170;
64
    /**
65
     * Ancho y alto de la ventana
66
     */
67
    private int                    w = 0;
68
    private int                    h = 0;
69
    /**
70
     * Posici?n de la ventana en X y en Y
71
     */
72
    private int                    posWindowX = 0;
73
    private int                    posWindowY = 0;
74
    /**
75
     * Escala del zoom
76
     */
77
    private int                    scale = 8;
78
    /**
79
     * Vista asociada al inspector de pixels
80
     */
81
    public BufferedImage           img = null;
82
    /**
83
     * Posici?n en X e Y donde se comienza a dibujar dentro del inspector de pixeles
84
     */
85
    private int						posX = 0;
86
    private int						posY = 0;
87
    /**
88
     * Posici?n del pixel en X e Y en relaci?n a las coordenadas del buffer de la vista
89
     */
90
    public int                      pixX = 0;
91
    public int                      pixY = 0;
92
    /**
93
     * Valores RGB del pixel seleccionado
94
     */    
95
    int                             red = 0, green = 0, blue = 0;
96
    private WindowInfo 				m_viewinfo = null;
97
    private boolean					clear = false;
98
    private Color					color = Color.red;
99
    private JCheckBoxMenuItem[] 	entry = new JCheckBoxMenuItem[6];
100
    
101
	/**
102
	 * Constructor de la ventana de dialogo para gvSIG.
103
	 */
104
	public PixelIncreaseDialog() {
105
		BorderLayout layout = new BorderLayout();
106
		setLayout(layout);
107
		setSize(width, height);
108
		addMouseListener(this);
109
		
110
		IWindow active = PluginServices.getMDIManager().getActiveWindow();
111
		if(active instanceof AbstractViewPanel) {
112
			img = ((AbstractViewPanel)active).getImage();
113
			WindowInfo wInfo = PluginServices.getMDIManager().getWindowInfo(active);
114
			posWindowX = wInfo.getX() + wInfo.getWidth() - width;
115
			posWindowY = wInfo.getY();
116
		}	
117
		
118
		CompoundBehavior.setAllControlsBehavior(new PixelIncreaseBehavior(this));
119
		initMenu();
120
		
121
	}
122
	
123
	/*
124
	 * (non-Javadoc)
125
	 * @see org.gvsig.raster.tools.app.basic.tool.pixelincrease.PixelInspector#setViewCoordinates(int, int)
126
	 */
127
	public void setViewCoordinates(int pixX, int pixY) {
128
		this.pixX = pixX;
129
		this.pixY = pixY;
130
	}
131
	
132
	/**
133
	 * 
134
	 * @param clear
135
	 */
136
	public void setClear(boolean clear) {
137
		this.clear = clear;
138
	}
139
	
140
	/**
141
	 * Inicializa el men? contextual con las opciones de selecci?n del 
142
	 * zoom.
143
	 */
144
	private void initMenu() {
145
		menu = new JPopupMenu();
146
		PopupMenuListener lis = new PopupMenuListener() {
147
			public void popupMenuCanceled( PopupMenuEvent evt ) {
148
				clear = true;
149
				repaint();
150
			}
151

  
152
			public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
153
			}
154

  
155
			public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
156
			}
157
		};
158
		menu.addPopupMenuListener(lis);
159
				
160
		ActionListener al = new ActionListener() {
161
			public void actionPerformed( ActionEvent evt ){
162
				String txt = ((JMenuItem)evt.getSource()).getText();
163
				if(txt.compareTo("X4") == 0) {
164
					scale = 4;
165
					for (int i = 1; i <= 3; i++) 
166
						entry[i].setSelected(false);	
167
					entry[0].setSelected(true);
168
				}
169
				if(txt.compareTo("X8") == 0) {
170
					scale = 8;
171
					entry[0].setSelected(false);
172
					entry[1].setSelected(true);
173
					entry[2].setSelected(false);
174
					entry[3].setSelected(false);
175
				}
176
				if(txt.compareTo("X16") == 0) {
177
					scale = 16;
178
					entry[0].setSelected(false);
179
					entry[1].setSelected(false);
180
					entry[2].setSelected(true);
181
					entry[3].setSelected(false);
182
				}
183
				if(txt.compareTo("X32") == 0) {
184
					scale = 32;
185
					for (int i = 0; i < 3; i++) 
186
						entry[i].setSelected(false);	
187
					entry[3].setSelected(true);
188
				}
189
				if(txt.compareTo(PluginServices.getText(this, "green")) == 0) {
190
					color = Color.GREEN;
191
					entry[4].setSelected(false);
192
					entry[5].setSelected(true);
193
				}
194
				if(txt.compareTo(PluginServices.getText(this, "red")) == 0) {
195
					color = Color.RED;
196
					entry[4].setSelected(true);
197
					entry[5].setSelected(false);
198
				}
199
			}
200
		};
201
		
202
		entry[0] = new JCheckBoxMenuItem( "X4" );
203
		entry[0].addActionListener( al );
204
	    menu.add(entry[0]);
205
	    entry[1] = new JCheckBoxMenuItem( "X8" );
206
	    entry[1].setSelected(true);
207
	    entry[1].addActionListener( al );
208
	    menu.add(entry[1]);
209
	    entry[2] = new JCheckBoxMenuItem( "X16" );
210
	    entry[2].addActionListener( al );
211
	    menu.add(entry[2]);
212
	    entry[3] = new JCheckBoxMenuItem( "X32" );
213
	    entry[3].addActionListener( al );
214
	    menu.add(entry[3]);
215
	    entry[4] = new JCheckBoxMenuItem( PluginServices.getText(this, "red") );
216
	    entry[4].addActionListener( al );
217
	    entry[4].setSelected(true);
218
	    menu.add(entry[4]);
219
	    entry[5] = new JCheckBoxMenuItem( PluginServices.getText(this, "green") );
220
	    entry[5].addActionListener( al );
221
	    menu.add(entry[5]);
222
	}
223
	
224
	/**
225
	 * Obtiene el buffer de la vista activa y lo dibuja sobre el panel
226
	 * con los datos de escala y desplazamiento seleccionados.
227
	 */
228
	protected void paintComponent(Graphics g) {
229
		w = getVisibleRect().width;
230
		h = getVisibleRect().height;
231
				
232
		if(clear) {
233
			g.setColor(Color.BLACK);
234
			g.fillRect(0, 0, w, h);
235
			return;
236
		}
237
		
238
		if(img != null) {
239
			int sizeCrux = 10;
240
			
241
			//Obtenemos valores RGB del Image
242
			int value = 0;
243
			try {
244
				value = img.getRGB(pixX, pixY);
245
			} catch (ArrayIndexOutOfBoundsException e) {
246
				
247
			}
248
			red = ((value & 0x00ff0000) >> 16);
249
			green = ((value & 0x0000ff00) >> 8);
250
			blue = (value & 0x000000ff);
251
			
252
			//Dibujamos el graphics con el zoom
253
			g.setColor(Color.BLACK);
254
			g.fillRect(0, 0, w, h);
255
			((Graphics2D)g).scale(scale, scale);
256
			g.drawImage(img, posX, posY , this);
257
			((Graphics2D)g).setTransform(new AffineTransform());
258
			
259
			//Dibujamos la informaci?n RGB y la cruz
260
			//g.setXORMode(Color.WHITE);
261
			g.setColor(color);
262
			int middleW = w >> 1;
263
			int middleH = h >> 1;
264
			g.drawLine(middleW - sizeCrux, middleH, middleW + sizeCrux, middleH);
265
			g.drawLine(middleW, middleH - sizeCrux, middleW , middleH + sizeCrux);
266
			g.drawString(red + "," + green + "," + blue, w - 85, h - 3);
267
		}
268
	}
269

  
270
	/**
271
	 * @see com.iver.mdiApp.ui.MDIManager.IWindow#getWindowInfo()
272
	 */
273
	public WindowInfo getWindowInfo() {
274
		m_viewinfo = new WindowInfo(WindowInfo.MODELESSDIALOG);
275
    	m_viewinfo.setTitle(PluginServices.getText(this, "increase"));
276
    	m_viewinfo.setX(posWindowX);
277
    	m_viewinfo.setY(posWindowY);
278
		return m_viewinfo;
279
	}
280

  
281
	/**
282
	 * Asigna el zoom de la vista sobre el inspector de pixels
283
	 * @param scale Escala
284
	 */
285
	public void setScale(int scale) {
286
		this.scale = scale;
287
	}
288

  
289
	/**
290
	 * Asigna la posici?n en X del control donde se empieza a dibujar
291
	 * @param posX posici?n X del Graphics donde se empieza a dibujar
292
	 */
293
	public void setPosX(int posX) {
294
		this.posX = posX;
295
	}
296

  
297
	/**
298
	 * Asigna la posici?n en Y del control donde se empieza a dibujar
299
	 * @param posY posici?n Y del Graphics donde se empieza a dibujar
300
	 */
301
	public void setPosY(int posY) {
302
		this.posY = posY;
303
	}
304

  
305
	/**
306
	 * Obtiene el alto del control
307
	 */
308
	public int getHeight() {
309
		return (h == 0) ? height : h;
310
	}
311

  
312
	/**
313
	 * Obtiene el ancho del control
314
	 */
315
	public int getWidth() {
316
		return (w == 0) ? width : w;
317
	}
318

  
319
	/**
320
	 * Obtiene el factor de escala
321
	 * @return 
322
	 */
323
	public int getScale() {
324
		return scale;
325
	}
326

  
327
	/**
328
	 * Obtiene la vista asociada al inspector de pixeles
329
	 * @return IView
330
	 */
331
	public BufferedImage getDataBuffer() {
332
		return img;
333
	}
334

  
335
	/**
336
	 * Asigna la vista asociada al inspector de pixeles
337
	 * @param IView
338
	 */
339
	public void setDataBuffer(BufferedImage view) {
340
		this.img = view;
341
	}
342

  
343
	/*
344
	 * (non-Javadoc)
345
	 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
346
	 */
347
	public void mouseClicked(MouseEvent e) {
348
		clear = true;
349
		repaint();
350
	}
351

  
352
	/*
353
	 * (non-Javadoc)
354
	 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
355
	 */
356
	public void mouseEntered(MouseEvent e) {
357
		clear = true;
358
		repaint();
359
	}
360

  
361
	/*
362
	 * (non-Javadoc)
363
	 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
364
	 */
365
	public void mouseExited(MouseEvent e) {
366
		clear = true;
367
		repaint();
368
	}
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff