Revision 2379

View differences:

org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/assembly/gvsig-plugin-package.xml
41 41
			<include>org.gvsig:org.gvsig.raster.principalcomponents.swing.api:jar</include>
42 42
			<include>org.gvsig:org.gvsig.raster.principalcomponents.swing.impl:jar</include>
43 43
			<include>org.gvsig:org.gvsig.raster.principalcomponents.algorithm:jar</include>
44
			<include>org.gvsig:org.gvsig.raster.principalcomponents.toolbox.algorithm:jar</include>
44 45
	  </includes>
45 46
	</dependencySet>
46 47
	
47
	<!-- Copia el algoritmo de toolbox a install/files cuando se empaqueta para que el script de ant lo meta donde toca al instalar -->
48
	
49
	<dependencySet>
50
      <useProjectArtifact>false</useProjectArtifact>
51
	  <useTransitiveDependencies>false</useTransitiveDependencies>
52
      <outputDirectory>${project.artifactId}/install/files</outputDirectory>
53
      <includes> 
54
			<include>org.gvsig:org.gvsig.raster.principalcomponents.toolbox.algorithm:jar</include>
55
	  </includes>
56
	</dependencySet> 
57
	
58
    <!-- Copia el algoritmo de toolbox al lib del plugin que añade las acciones al toolbox para ENTORNOS DE DESARROLLO 
59
	
60
	<dependencySet>
61
      <useProjectArtifact>false</useProjectArtifact>
62
	  <useTransitiveDependencies>false</useTransitiveDependencies>
63
      <outputDirectory>org.gvsig.raster.tools.toolbox.app.client/lib</outputDirectory>
64
      <includes> 
65
			<include>org.gvsig:org.gvsig.raster.principalcomponents.toolbox.algorithm:jar</include>
66
	  </includes>
67
	</dependencySet>-->
68
	
69 48
  </dependencySets>
70 49
</assembly>
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/java/org/gvsig/raster/principalcomponents/app/PrincipalComponentsExtension.java
23 23
import org.gvsig.raster.fmap.layers.FLyrRaster;
24 24
import org.gvsig.raster.principalcomponents.algorithm.PCStatsDataStructure;
25 25
import org.gvsig.raster.principalcomponents.algorithm.PrincipalComponentsAlgorithmLibrary;
26
import org.gvsig.raster.principalcomponents.app.toolbox.ToolboxPCLoader;
26 27
import org.gvsig.raster.principalcomponents.swing.PrincipalComponentsSwingLibrary;
27 28
import org.gvsig.raster.principalcomponents.swing.PrincipalComponentsSwingLocator;
28 29
import org.gvsig.raster.swing.RasterSwingLibrary;
......
66 67
    }
67 68
    
68 69
	public void postInitialize() {
70
		new ToolboxPCLoader().registerTool();
69 71
	}
70 72

  
71 73
    public void execute(String actionCommand) {
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/java/org/gvsig/raster/principalcomponents/app/toolbox/ToolboxPCLoader.java
1
package org.gvsig.raster.principalcomponents.app.toolbox;
2

  
3
import java.lang.reflect.Constructor;
4
import java.lang.reflect.InvocationTargetException;
5

  
6
import org.slf4j.Logger;
7
import org.slf4j.LoggerFactory;
8

  
9
/**
10
 * Loader for this tool in the toolbox dialog
11
 * 
12
 * @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a>
13
 */
14
public class ToolboxPCLoader {
15
	private Logger log      = LoggerFactory.getLogger(ToolboxPCLoader.class); 
16
	private String errorMsg = "The tool Principal components are not been added in the toolbox";
17

  
18
	public void registerTool() {
19
		try {
20
			Class<?> c = Class.forName("org.gvsig.raster.principalcomponents.app.toolbox.PCToolboxAction");
21
			Constructor<?> constructor = c.getConstructor();
22
			constructor.newInstance();
23
		} catch (ClassNotFoundException e) {
24
			log.info(errorMsg, e);
25
		} catch (SecurityException e) {
26
			log.info(errorMsg, e);
27
		} catch (NoSuchMethodException e) {
28
			log.info(errorMsg, e);
29
		} catch (IllegalArgumentException e) {
30
			log.info(errorMsg, e);
31
		} catch (InstantiationException e) {
32
			log.info(errorMsg, e);
33
		} catch (IllegalAccessException e) {
34
			log.info(errorMsg, e);
35
		} catch (InvocationTargetException e) {
36
			log.info(errorMsg, e);
37
		} catch (NoClassDefFoundError e) {
38
			log.info("Geoprocess are not installed." + errorMsg, e);
39
		}
40
	}
41

  
42
}
0 43

  
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/java/org/gvsig/raster/principalcomponents/app/toolbox/PCToolboxAction.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2012 gvSIG Association.
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

  
25

  
26
package org.gvsig.raster.principalcomponents.app.toolbox;
27

  
28
import javax.swing.ImageIcon;
29

  
30
import org.gvsig.fmap.mapcontext.layers.FLayer;
31
import org.gvsig.i18n.Messages;
32
import org.gvsig.raster.principalcomponents.app.PrincipalComponentsTocMenuEntry;
33

  
34
/**
35
 * Input in Sextante framework for Principal Components tool
36
 * 
37
 * @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a>
38
 */
39
public class PCToolboxAction extends AbstractToolboxAction {
40
	
41
	@Override
42
	public String getGroup() {
43
		return Messages.getText("multispectral");
44
	}
45
	
46
	@Override
47
	public void execute() {
48
		if(!super.loadLayer())
49
			return;
50
		PrincipalComponentsTocMenuEntry.getSingleton().execute(null, new FLayer[]{lyr}); 
51
	}
52

  
53
	@Override
54
	public String getName() {
55
		return Messages.getText("principalcomponents");
56
	}
57

  
58
	public ImageIcon getIcon() {
59
		return (ImageIcon)PrincipalComponentsTocMenuEntry.getSingleton().getIcon();
60
	}
61
	
62
	public boolean isPluginInstalled() {
63
		try {
64
			PrincipalComponentsTocMenuEntry.getSingleton();
65
		} catch(Exception e) {
66
			return false;
67
		} catch(Error e) {
68
			return false;
69
		}
70
		return true;
71
	}
72
}
0 73

  
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/java/org/gvsig/raster/principalcomponents/app/toolbox/AbstractToolboxAction.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2012 gvSIG Association.
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

  
25
package org.gvsig.raster.principalcomponents.app.toolbox;
26

  
27
import org.gvsig.andami.PluginServices;
28
import org.gvsig.andami.ui.mdiManager.IWindow;
29
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
30
import org.gvsig.fmap.mapcontext.MapContext;
31
import org.gvsig.fmap.mapcontext.layers.FLayers;
32
import org.gvsig.geoprocess.lib.sextante.dataObjects.FLyrRasterIRasterLayer;
33
import org.gvsig.i18n.Messages;
34
import org.gvsig.raster.fmap.layers.FLyrRaster;
35
import org.gvsig.raster.swing.RasterSwingLibrary;
36

  
37
import es.unex.sextante.dataObjects.IRasterLayer;
38
import es.unex.sextante.gui.core.SextanteGUI;
39
import es.unex.sextante.gui.core.ToolboxAction;
40

  
41
/**
42
 * Base class for toolBox actions
43
 * 
44
 * @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a>
45
 */
46
public abstract class AbstractToolboxAction extends ToolboxAction {
47
	protected FLyrRaster             lyr = null;
48

  
49
	@Override
50
	public String getGroup() {
51
		return Messages.getText("group_tools");
52
	}
53

  
54

  
55
	@Override
56
	public boolean isActive() {
57
		IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
58
		for (int i = 0; i < windows.length; i++) {
59
			if(windows[i] instanceof AbstractViewPanel) {
60
				FLayers lyrs = ((AbstractViewPanel)windows[i]).getMapControl().getMapContext().getLayers();
61
				for (int j = 0; j < lyrs.getLayersCount(); j++) {
62
					if(lyrs.getLayer(j) instanceof FLyrRaster)
63
						return true;
64
				}
65
			}
66
		}
67
		return false;
68
	}
69
	
70
	/**
71
	 * Returns true if the plugin which gives the functionality is installed
72
	 * in gvSIG
73
	 * @return
74
	 */
75
	public abstract boolean isPluginInstalled();
76

  
77
	/**
78
	 * Loads the raster layer for the tool
79
	 * @return
80
	 */
81
	public boolean loadLayer() {
82
		if(!isPluginInstalled()) {
83
			RasterSwingLibrary.messageBoxError(Messages.getText("plugin_not_installed"), null);
84
			return false;
85
		}
86
		
87
		if(!isActive()) {
88
			RasterSwingLibrary.messageBoxError(Messages.getText("layer_not_valid"), null);
89
			return false;
90
		}
91

  
92
		boolean existsRasterButNotActive = false;
93
		lyr = null;
94
		IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
95
		MapContext mapCtx = null;
96
		for (int i = 0; i < windows.length; i++) {
97
			if(windows[i] instanceof AbstractViewPanel) {
98
				mapCtx = ((AbstractViewPanel)windows[i]).getMapControl().getMapContext();
99
				break;
100
			}
101
		}
102
		
103
		IRasterLayer[] layers = SextanteGUI.getInputFactory().getRasterLayers();
104
		for (int i = 0; i < layers.length; i++) {
105
			FLyrRaster l = (FLyrRaster)((FLyrRasterIRasterLayer)layers[i]).getBaseDataObject();
106
			existsRasterButNotActive = true;
107
			if(l.isActive() && mapCtx == l.getMapContext()) {
108
				existsRasterButNotActive = false;
109
				lyr = l;
110
				break;
111
			}
112
		}
113

  
114
		if(existsRasterButNotActive) {
115
			RasterSwingLibrary.messageBoxError(Messages.getText("raster_layer_not_active"), null);
116
			return false;
117
		}
118

  
119
		return true;
120
	}
121

  
122
}
0 123

  
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/resources-plugin/config.xml
1 1
<?xml version="1.0" encoding="ISO-8859-1"?>
2 2
<plugin-config>
3 3
	<depends plugin-name="org.gvsig.raster.mainplugin" />
4
	
5
	<depends plugin-name="org.gvsig.geoprocess.app.mainplugin" optional="true" />
6
	<depends plugin-name="org.gvsig.geoprocess.app.algorithm" optional="true" />
7
	
4 8
	<resourceBundle name="text"/>
5 9
	<libraries library-dir="lib"/>
6 10
	<extensions>
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/resources-plugin/org/gvsig/raster/principalcomponents/app/i18n/text_en.properties
1 1
principalcomponents=Principal components
2 2
layer_not_found=There is not selected a valid layer
3
problems_creating_process=The process has not be created
3
problems_creating_process=The process has not be created
4
gv_tools=gvSIG Tools
5
group_tools=Tools for raster layers
6
raster_layer_not_active=This tool needs a raster layer selected in the view
7
multispectral=Multispectral raster
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/src/main/resources-plugin/org/gvsig/raster/principalcomponents/app/i18n/text.properties
1 1
principalcomponents=Componentes principales
2 2
layer_not_found=No hay seleccionada una capa v?lida
3
problems_creating_process=No se ha podido crear el proceso
3
problems_creating_process=No se ha podido crear el proceso
4
gv_tools=gvSIG Herramientas
5
group_tools=Capas raster
6
raster_layer_not_active=Esta herramienta necesita una capa raster seleccionada en la vista
7
multispectral=Raster multiespectral
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/org.gvsig.raster.principalcomponents.app.principalcomponentsclient/pom.xml
152 152
            <artifactId>org.gvsig.fmap.geometry.operation</artifactId>
153 153
            <scope>runtime</scope>
154 154
        </dependency>
155
        <dependency>
156
			<groupId>org.gvsig</groupId>
157
			<artifactId>org.gvsig.geoprocess.lib.sextante</artifactId>
158
			<scope>compile</scope>
159
		</dependency>
160
		<dependency>
161
			<groupId>org.gvsig</groupId>
162
			<artifactId>org.gvsig.geoprocess.app.mainplugin</artifactId>
163
			<scope>compile</scope>
164
		</dependency>
155 165
	</dependencies>
156 166
	<properties>
157 167
		<gvsig.package.info.state>testing</gvsig.package.info.state>
org.gvsig.raster.principalcomponents/branches/org.gvsig.raster.principalcomponents_dataaccess_refactoring/pom.xml
107 107
				<artifactId>org.gvsig.geoprocess.lib.sextante</artifactId>
108 108
				<version>2.1.0-SNAPSHOT</version>
109 109
			</dependency>
110
			<dependency>
111
				<groupId>org.gvsig</groupId>
112
				<artifactId>org.gvsig.geoprocess.app.mainplugin</artifactId>
113
				<version>2.1.0-SNAPSHOT</version>
114
			</dependency>
110 115
   			<dependency>
111 116
				<groupId>org.gvsig</groupId>
112 117
				<artifactId>org.gvsig.raster.principalcomponents.toolbox.algorithm</artifactId>

Also available in: Unified diff