Revision 3295

View differences:

org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/java/org/gvsig/raster/roimask/ROIMaskSextanteAlgorithm.java
1
package org.gvsig.raster.roimask;
2

  
3
import org.gvsig.fmap.dal.coverage.RasterLocator;
4
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
5
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
6
import org.gvsig.fmap.dal.coverage.exception.ROIException;
7
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
8
import org.gvsig.geoprocess.lib.sextante.dataObjects.FLyrRasterIRasterLayer;
9
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
10
import org.gvsig.raster.algorithm.process.DataProcess;
11
import org.gvsig.raster.algorithm.process.ProcessException;
12
import org.gvsig.raster.fmap.layers.FLyrRaster;
13
import org.gvsig.raster.roi.ROI;
14
import org.gvsig.raster.roimask.algorithm.ROIMaskProcess;
15

  
16
import es.unex.sextante.additionalInfo.AdditionalInfoNumericalValue;
17
import es.unex.sextante.core.AnalysisExtent;
18
import es.unex.sextante.core.Sextante;
19
import es.unex.sextante.dataObjects.IRasterLayer;
20
import es.unex.sextante.exceptions.GeoAlgorithmExecutionException;
21
import es.unex.sextante.exceptions.RepeatedParameterNameException;
22

  
23
/**
24
 * ...
25
 */
26
public class ROIMaskSextanteAlgorithm extends AbstractSextanteGeoProcess {
27

  
28
    public static final String RESULT            = "RESULT";
29
    public static final String LAYER             = ROIMaskProcess.RASTER_STORE1;
30
    public static final String ALPHA             = ROIMaskProcess.ALPHA;
31
    public static final String INVERSE           = ROIMaskProcess.INVERSE;
32
    public static final String NODATA            = ROIMaskProcess.NODATA;
33

  
34

  
35
    public void defineCharacteristics() {
36
        setName(getTranslation("mask"));
37
        setGroup(getTranslation("basic_raster_algorithms"));
38
        // setGeneratesUserDefinedRasterOutput(false);
39

  
40
        try {
41
            m_Parameters.addInputRasterLayer(LAYER, getTranslation("Input_layer"), true);
42
            m_Parameters.addNumericalValue(ALPHA, getTranslation("alpha"), 0,
43
                AdditionalInfoNumericalValue.NUMERICAL_VALUE_INTEGER);
44
            m_Parameters.addBoolean(INVERSE, getTranslation("Inverse"), false);
45
        } catch (RepeatedParameterNameException e) {
46
            Sextante.addErrorToLog(e);
47
        }
48
        addOutputRasterLayer(RESULT, getTranslation("mask"));
49
    }
50

  
51
    public boolean processAlgorithm() throws GeoAlgorithmExecutionException {
52

  
53
    	if(existsOutPutFile(ROIMaskSextanteAlgorithm.RESULT, 0)) {
54
    		throw new GeoAlgorithmExecutionException(getTranslation("file_exists"));
55
    	}
56

  
57
    	IRasterLayer input = m_Parameters.getParameterValueAsRasterLayer(LAYER);
58
    	int alpha = m_Parameters.getParameterValueAsInt(ALPHA);
59
    	boolean inverse = m_Parameters.getParameterValueAsBoolean(INVERSE);
60
    	FLyrRaster lyrRaster = ((FLyrRaster)input.getBaseDataObject());
61
    	ROI[] rois = null;
62
    	IRasterLayer output = null;
63
    	DataProcess task = null;
64
    	AnalysisExtent ext = getAnalysisExtent();
65
    	Extent bbox = RasterLocator.getManager().getDataStructFactory().createExtent(
66
    			ext.getXMin(), ext.getYMax(), ext.getXMax(), ext.getYMin());
67
		try {
68
			output = getNewRORasterLayer(
69
					RESULT,
70
					Sextante.getText("Mask_image"),
71
					input.getDataType(),
72
					input.getBandsCount());
73
			rois = lyrRaster.getRois().toArray(new ROI[lyrRaster.getRois().size()]);
74
			task = RasterBaseAlgorithmLibrary.getManager().createRasterTask("ROIMaskProcess");
75
		} catch (ProcessException e1) {
76
			 Sextante.addErrorToLog(e1);
77
		} catch (ROIException e1) {
78
			 Sextante.addErrorToLog(e1);
79
		}
80

  
81
    	String fileName = ((FLyrRasterIRasterLayer)output).getName();
82
    	task.addParam(ROIMaskProcess.PATH, fileName);
83
		task.addParam(ROIMaskProcess.RASTER_STORE1, lyrRaster.getDataStore());
84
		task.addParam(ROIMaskProcess.ROIS, rois);
85
		task.addParam(ROIMaskProcess.ALPHA, alpha);
86
		task.addParam(ROIMaskProcess.INVERSE, inverse);
87
		task.addParam(ROIMaskProcess.NODATA, lyrRaster.getNoDataValue());
88
		task.addParam(ROIMaskProcess.WINDOW, bbox);
89
		task.addParam(ROIMaskProcess.OUTPUT_WIDTH, ext.getNX());
90
		task.addParam(ROIMaskProcess.OUTPUT_HEIGHT, ext.getNY());
91

  
92
		try {
93
			task.execute();
94
			((FLyrRasterIRasterLayer)output).setBaseDataObject(fileName);
95
		} catch (ProcessInterruptedException e) {
96
			Sextante.addErrorToLog(e);
97
		} catch (ProcessException e) {
98
			Sextante.addErrorToLog(e);
99
		}
100

  
101
		if(getTaskMonitor().isCanceled())
102
			return false;
103

  
104
        return true;
105
    }
106

  
107
    /*
108
     * TODO: Customized panels
109
    @Override
110
    public Class<? extends GeoAlgorithmParametersPanel> getCustomParametersPanelClass() {
111
        return BufferParametersPanel.class;
112
    }*/
113
}
0 114

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/java/org/gvsig/raster/roimask/ROIMaskToolboxLibrary.java
1
package org.gvsig.raster.roimask;
2

  
3
import org.gvsig.i18n.Messages;
4
import org.gvsig.tools.library.AbstractLibrary;
5
import org.gvsig.tools.library.LibraryException;
6
import org.slf4j.LoggerFactory;
7

  
8
/**
9
 * Initialization of <code>ROIMaskToolboxLibrary</code> library.
10
 */
11
public class ROIMaskToolboxLibrary extends AbstractLibrary {
12

  
13
    @Override
14
    protected void doInitialize() throws LibraryException {
15
        // Nothing to do
16
    }
17

  
18
    @Override
19
    protected void doPostInitialize() throws LibraryException {
20
        Messages.addResourceFamily(
21
            "org.gvsig.raster.roimask.roimask", ROIMaskToolboxLibrary.class
22
                .getClassLoader(), ROIMaskToolboxLibrary.class.getClass().getName());
23
        try {
24
        	org.gvsig.geoprocess.lib.api.GeoProcessLocator.getGeoProcessManager().registerGeoProcess(
25
        			new ROIMaskSextanteAlgorithm());
26
        } catch (NoClassDefFoundError e) {
27
    		LoggerFactory.getLogger(ROIMaskToolboxLibrary.class).debug("", e);
28
    	}
29
    }
30

  
31
}
0 32

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/resources-plugin/org/gvsig/raster/roimask/sextante/i18n/text.properties
1
basic_raster_algorithms=Capas raster
2
mask=M?scara por ROI
0 3

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/resources-plugin/org/gvsig/raster/roimask/sextante/i18n/text_en.properties
1
basic_raster_algorithms=Raster layers
2
mask=ROI mask
0 3

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.raster.roimask.ROIMaskToolboxLibrary
0 2

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/resources/org/gvsig/raster/roimask/roimask.properties
1
applying_mask=Aplicando m?scara
2
mask_process=Proceso de m?scara
3
mask=M?scara por ROI
4
basic_raster_algorithms=Capas r?ster
5
alpha=Transparencia
6
inverse=Inversa
0 7

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/resources/org/gvsig/raster/roimask/roimask_en.properties
1
applying_mask=Applying mask
2
mask_process=Mask process
3
mask=ROI mask
4
basic_raster_algorithms=Raster layers
5
alpha=Alpha
6
inverse=Inverse
0 7

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/resources/help/ROIMaskSextanteAlgorithm.xml
1
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
2
<help>
3
	<element name="DESCRIPTION"
4
		text=""
5
		description="Descripci&#243;n" type="0">
6
		<!-- <image description="" file="">
7
		</image> -->
8
	</element>
9
	<element name="ADDITIONAL_INFO" text=""
10
		description="Informaci&#243;n adicional" type="0">
11
	</element>
12
	<element name="EXTENSION_AUTHOR" text=""
13
		description="Algoritmo creado por" type="0">
14
	</element>
15
	<element name="HELP_AUTHOR" text="" description="Ayuda creada por"
16
		type="0">
17
	</element>
18
	<element name="USER_NOTES" text="" description="Notas de usuario"
19
		type="0">
20
	</element>
21
</help>
0 22

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/src/main/resources/help/ROIMaskSextanteAlgorithm_en.xml
1
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
2
<help>
3
	<element name="DESCRIPTION"
4
		text=""
5
		description="Descripci&#243;n" type="0">
6
		<!-- <image description="" file="">
7
		</image> -->
8
	</element>
9
	<element name="ADDITIONAL_INFO" text=""
10
		description="Informaci&#243;n adicional" type="0">
11
	</element>
12
	<element name="EXTENSION_AUTHOR" text=""
13
		description="Algoritmo creado por" type="0">
14
	</element>
15
	<element name="HELP_AUTHOR" text="" description="Ayuda creada por"
16
		type="0">
17
	</element>
18
	<element name="USER_NOTES" text="" description="Notas de usuario"
19
		type="0">
20
	</element>
21
</help>
0 22

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.toolbox.algorithm/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<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/xsd/maven-4.0.0.xsd">
3

  
4
	<modelVersion>4.0.0</modelVersion>
5
	<artifactId>org.gvsig.raster.roimask.toolbox.algorithm</artifactId>
6
	<packaging>jar</packaging>
7
	<name>org.gvsig.raster.roimask.toolbox.algorithm</name>
8
	<parent>
9
		<groupId>org.gvsig</groupId>
10
		<artifactId>org.gvsig.raster.roimask</artifactId>
11
		<version>2.2.5</version>
12
	</parent>
13
	<dependencies>
14
		<dependency>
15
		    <groupId>org.gvsig</groupId>
16
   			<artifactId>org.gvsig.geoprocess.algorithm.base</artifactId>
17
            <scope>compile</scope>
18
   		</dependency>
19
   		<dependency>
20
			<groupId>org.gvsig</groupId>
21
			<artifactId>org.gvsig.raster.algorithm</artifactId>
22
			<scope>compile</scope>
23
		</dependency>
24
		<dependency>
25
			<groupId>org.gvsig</groupId>
26
			<artifactId>org.gvsig.raster.roimask.algorithm</artifactId>
27
			<scope>compile</scope>
28
		</dependency>
29
		<dependency>
30
			<groupId>org.gvsig</groupId>
31
			<artifactId>org.gvsig.geoprocess.lib.sextante</artifactId>
32
			<scope>compile</scope>
33
		</dependency>
34
		<dependency>
35
			<groupId>org.gvsig</groupId>
36
			<artifactId>org.gvsig.tools.lib</artifactId>
37
			<scope>compile</scope>
38
		</dependency>
39
		<dependency>
40
			<groupId>org.gvsig</groupId>
41
			<artifactId>org.gvsig.ui</artifactId>
42
			<scope>compile</scope>
43
		</dependency>
44
	    <dependency>
45
			<groupId>org.gvsig</groupId>
46
			<artifactId>org.gvsig.i18n</artifactId>
47
			<scope>compile</scope>
48
		</dependency>
49
		<dependency>
50
            <groupId>org.gvsig</groupId>
51
            <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
52
            <scope>compile</scope>
53
        </dependency>
54
        <dependency>
55
            <groupId>org.gvsig</groupId>
56
            <artifactId>org.gvsig.fmap.mapcontext.impl</artifactId>
57
            <scope>runtime</scope>
58
        </dependency>
59
		<dependency>
60
            <groupId>org.gvsig</groupId>
61
            <artifactId>org.gvsig.projection.api</artifactId>
62
            <scope>compile</scope>
63
        </dependency>
64
        <dependency>
65
            <groupId>org.gvsig</groupId>
66
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
67
            <scope>runtime</scope>
68
        </dependency>
69
   		<dependency>
70
            <groupId>org.gvsig</groupId>
71
            <artifactId>org.gvsig.metadata.lib.basic.api</artifactId>
72
            <scope>compile</scope>
73
        </dependency>
74
	</dependencies>
75
</project>
0 76

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app/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/xsd/maven-4.0.0.xsd">
4
    <modelVersion>4.0.0</modelVersion>
5
    <artifactId>org.gvsig.raster.roimask.app</artifactId>
6
    <packaging>pom</packaging>
7
    <name>org.gvsig.raster.roimask.app</name>
8
    <description />
9
    
10
    <parent>
11
      <groupId>org.gvsig</groupId>
12
      <artifactId>org.gvsig.raster.roimask</artifactId>
13
      <version>2.2.5</version>
14
    </parent>
15

  
16
    <scm>
17
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app</connection>
18
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-raster/org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app</developerConnection>
19
        <url>https://devel.gvsig.org/redmine/projects/gvsig-raster/repository/show/org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app</url>
20
    </scm>
21
    
22
    <developers>
23
        <developer>
24
            <id>nbrodin</id>
25
            <name>Nacho Brodin</name>
26
            <email>nachobrodin@gmail.com</email>
27
            <roles>
28
                <role>Architect</role>
29
                <role>Developer</role>
30
            </roles>
31
        </developer>
32
    </developers>
33
    <repositories>
34
        <repository>
35
            <id>gvsig-public-http-repository</id>
36
            <name>gvSIG maven public HTTP repository</name>
37
            <url>http://devel.gvsig.org/m2repo/j2se</url>
38
            <releases>
39
                <enabled>true</enabled>
40
                <updatePolicy>daily</updatePolicy>
41
                <checksumPolicy>warn</checksumPolicy>
42
            </releases>
43
            <snapshots>
44
                <enabled>true</enabled>
45
                <updatePolicy>daily</updatePolicy>
46
                <checksumPolicy>warn</checksumPolicy>
47
            </snapshots>
48
        </repository>
49
    </repositories>
50
    <dependencies>
51
        <dependency>
52
            <groupId>org.gvsig</groupId>
53
            <artifactId>org.gvsig.andami</artifactId>
54
            <scope>compile</scope>
55
        </dependency>
56
        <dependency>
57
            <groupId>org.gvsig</groupId>
58
            <artifactId>org.gvsig.i18n</artifactId>
59
            <scope>compile</scope>
60
        </dependency>
61
        <dependency>
62
            <groupId>org.gvsig</groupId>
63
            <artifactId>org.gvsig.tools.lib</artifactId>
64
            <scope>compile</scope>
65
        </dependency>
66
        <dependency>
67
            <groupId>org.slf4j</groupId>
68
            <artifactId>slf4j-api</artifactId>
69
            <scope>compile</scope>
70
        </dependency>
71
        <dependency>
72
            <groupId>org.slf4j</groupId>
73
            <artifactId>slf4j-log4j12</artifactId>
74
            <scope>runtime</scope>
75
        </dependency>
76
    </dependencies>
77
    <modules>
78
        <module>org.gvsig.raster.roimask.app.client</module>
79
    </modules>
80
</project>
0 81

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/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>.</baseDirectory>
7
  <includeBaseDirectory>true</includeBaseDirectory>
8
  <files>
9
    <file>
10
      <source>target/${project.artifactId}-${project.version}.jar</source>
11
      <outputDirectory>${project.artifactId}/lib</outputDirectory>
12
    </file>
13
    <file>
14
      <source>target/package.info</source>
15
      <outputDirectory>${project.artifactId}</outputDirectory>
16
    </file>
17
  </files>
18
  
19
  <fileSets>
20
    <fileSet>
21
      <directory>src/main/resources-plugin</directory>
22
      <outputDirectory>${project.artifactId}</outputDirectory>
23
    </fileSet>
24
  </fileSets>
25

  
26

  
27
  <dependencySets>
28
    <dependencySet>
29
      <useProjectArtifact>false</useProjectArtifact>
30
	  <useTransitiveDependencies>false</useTransitiveDependencies>
31
      <outputDirectory>${project.artifactId}/lib</outputDirectory>
32
      <includes> 
33
			<include>org.gvsig:org.gvsig.raster.roimask.app.client:jar</include>
34
			<include>org.gvsig:org.gvsig.raster.roimask.lib.api:jar</include>
35
			<include>org.gvsig:org.gvsig.raster.roimask.lib.impl:jar</include>
36
			<include>org.gvsig:org.gvsig.raster.roimask.swing.api:jar</include>
37
			<include>org.gvsig:org.gvsig.raster.roimask.swing.impl:jar</include>
38
			<include>org.gvsig:org.gvsig.raster.roimask.algorithm:jar</include>
39
			<include>org.gvsig:org.gvsig.raster.roimask.toolbox.algorithm:jar</include>
40
	  </includes>
41
	</dependencySet>
42
	
43
	<!-- Copia el algoritmo de toolbox a install/files cuando se empaqueta para que el script de ant lo meta donde toca al instalar 
44
	
45
	<dependencySet>
46
      <useProjectArtifact>false</useProjectArtifact>
47
	  <useTransitiveDependencies>false</useTransitiveDependencies>
48
      <outputDirectory>${project.artifactId}/install/files</outputDirectory>
49
      <includes> 
50
			<include>org.gvsig:org.gvsig.raster.roimask.toolbox.algorithm:jar</include>
51
	  </includes>
52
	</dependencySet>-->
53
  </dependencySets>
54
</assembly>
0 55

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/ROIMaskExtension.java
1
package org.gvsig.raster.roimask.app;
2

  
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.io.File;
6
import java.util.HashMap;
7
import java.util.List;
8

  
9
import javax.swing.JComponent;
10
import javax.swing.JPanel;
11

  
12
import org.gvsig.andami.IconThemeHelper;
13
import org.gvsig.andami.PluginServices;
14
import org.gvsig.andami.plugins.Extension;
15
import org.gvsig.andami.ui.mdiManager.IWindow;
16
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
17
import org.gvsig.fmap.dal.coverage.RasterLibrary;
18
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
19
import org.gvsig.fmap.dal.coverage.exception.ROIException;
20
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
21
import org.gvsig.fmap.dal.exception.ReadException;
22
import org.gvsig.fmap.mapcontext.layers.FLayer;
23
import org.gvsig.fmap.mapcontext.layers.FLayers;
24
import org.gvsig.fmap.mapcontrol.MapControl;
25
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
26
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
27
import org.gvsig.i18n.Messages;
28
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
29
import org.gvsig.raster.algorithm.process.DataProcess;
30
import org.gvsig.raster.algorithm.process.IProcessActions;
31
import org.gvsig.raster.algorithm.process.ProcessException;
32
import org.gvsig.raster.fmap.layers.FLyrRaster;
33
import org.gvsig.raster.mainplugin.RasterMainPluginUtils;
34
import org.gvsig.raster.roi.ROI;
35
import org.gvsig.raster.roimask.algorithm.ROIMaskProcess;
36
import org.gvsig.raster.roimask.app.toolbox.ToolboxROIMaskLoader;
37
import org.gvsig.raster.roimask.swing.ROIMaskPanel;
38
import org.gvsig.raster.roimask.swing.ROIMaskSwingLocator;
39
import org.gvsig.raster.swing.RasterSwingLibrary;
40
import org.gvsig.raster.swing.RasterSwingLocator;
41
import org.gvsig.raster.swing.newlayer.CreateNewLayerPanel;
42
import org.gvsig.raster.swing.preview.PreviewPanel;
43
import org.gvsig.raster.util.RasterNotLoadException;
44
import org.gvsig.tools.ToolsLocator;
45
import org.gvsig.tools.extensionpoint.ExtensionPoint;
46
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
47
import org.slf4j.Logger;
48
import org.slf4j.LoggerFactory;
49

  
50

  
51
public class ROIMaskExtension extends Extension implements ActionListener, IProcessActions {
52
	private int                      windowWidth         = 600;
53
	private int                      windowHeight        = 370;
54
	private IWindow                  window              = null;
55
	private PreviewPanel             previewPanel        = null;
56
	private ROIMaskPreview           processPreview      = null;
57
	private ROIMaskPanel             panel               = null;
58
	private CreateNewLayerPanel      newLayerPanel       = null;
59
	private static final Logger      logger              = LoggerFactory.getLogger(ROIMaskExtension.class);
60

  
61
    public void initialize() {
62

  
63
    	// Adds an entry to the TOC's floating menu to those layers defined in this extension
64

  
65
		//ExtensionPoint exPoint = ToolsLocator.getExtensionPointManager().add("My_TocActions");
66
		//exPoint.append("MyMenuEntry", "", new ROIMaskTocMenuEntry());
67

  
68
        // Adds a new tab to the "add layer" dialog
69

  
70
    	//AddLayer.addWizard(ROIMaskWizard.class);
71

  
72
    	// Adds a new button in the raster bar
73

  
74
		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
75
		ExtensionPoint point = extensionPoints.add("GenericToolBarMenu");
76
		point.append("ROIMask", "", ROIMaskTocMenuEntry.getSingleton());
77
		ROIMaskTocMenuEntry.setExtension(this);
78

  
79
        Messages.addResourceFamily("org.gvsig.raster.roimask.app.i18n.text",
80
        		ROIMaskExtension.class.getClassLoader(),
81
        		ROIMaskExtension.class.getClass().getName());
82

  
83
    	initilizeIcons();
84
    }
85

  
86
	public void postInitialize() {
87
		new ToolboxROIMaskLoader().registerTool();
88
	}
89

  
90
    public void execute(String actionCommand) {
91
    	if (actionCommand.compareTo("ROIMask") == 0) {
92
    		if(getSelectedLayer() == null) {
93
    			RasterSwingLibrary.messageBoxError("layer_not_selected", null);
94
    			return;
95
    		}
96
    		try {
97
    			initializeMainPanel();
98
    		} catch (ReadException e) {
99
    			logger.error("Error initializing the main panel", e);
100
    		} catch (ROIException e) {
101
    			logger.error("Error getting ROI", e);
102
			}
103
    	}
104
    }
105

  
106
    /**
107
     * Creates and initializes the main panel
108
     * @throws ReadException
109
     * @throws ROIException
110
     */
111
    private void initializeMainPanel() throws ReadException, ROIException {
112
    	try {
113
    		loadROIMaskPanel();
114
    	} catch (NotInitializeException e) {
115
    		throw new ReadException("Error loading the table", e);
116
    	}
117

  
118
    	MainPanel mainPanel = new MainPanel(
119
    			getROIMaskPanel().getComponent(),
120
    			(JComponent)getNewLayerPanel());
121

  
122
    	window = new ROIMaskWindow(
123
    			mainPanel,
124
    			(JPanel)getPreviewPanel(),
125
    			Messages.getText("roimask"),
126
    			windowWidth,
127
    			windowHeight,
128
    			false,
129
    			this);
130

  
131
    	PluginServices.getMDIManager().addWindow(window);
132
    	getPreviewPanel().previewInitializeSizes();
133
    	getPreviewPanel().refreshPreview();
134
    }
135

  
136
    /**
137
     * Loads the main panel with the data
138
     * @throws NotInitializeException
139
     * @throws ROIException
140
     */
141
    private void loadROIMaskPanel() throws NotInitializeException, ROIException {
142
    	FLyrRaster lyr = getSelectedLayer();
143
    	LayerElement element = new LayerElement(lyr);
144
    	getROIMaskPanel().getDataModel().setInputLayer(element);
145
    	ColorInterpretation ci = lyr.getDataStore().getColorInterpretation();
146

  
147
    	if(ci.isRGB() || ci.isRGBA()) {
148
    		getROIMaskPanel().activeSlider(true);
149
    	} else
150
    		getROIMaskPanel().activeSlider(false);
151

  
152
    	if(lyr.getRois() == null || lyr.getRois().size() == 0)
153
    		getROIMaskPanel().showWarning(true);
154
    	else
155
    		getROIMaskPanel().showWarning(false);
156

  
157
		getROIMaskPanel().getDataModel().clearROIs();
158

  
159
    	List<ROI> roisArray = lyr.getRois();
160
		if (roisArray != null) {
161
			for (int i = 0; i < roisArray.size(); i++) {
162
				ROI roi = (ROI) roisArray.get(i);
163

  
164
				Object row[] = {"", "", ""};
165

  
166
				boolean active = false;
167

  
168
				row[0] = new Boolean(active);
169
				row[1] = roi.getName();
170
				row[2] = new Integer(i);
171
				getROIMaskPanel().getDataModel().addROI(row);
172
			}
173
		}
174

  
175
		if(lyr != null) {
176
			switch(lyr.getDataStore().getDataType()[0]) {
177
			case Buffer.TYPE_BYTE:
178
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultByteNoDataValue);
179
				break;
180
			case Buffer.TYPE_SHORT:
181
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultShortNoDataValue);
182
				break;
183
			case Buffer.TYPE_INT:
184
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultIntegerNoDataValue);
185
				break;
186
			case Buffer.TYPE_FLOAT:
187
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultFloatNoDataValue);
188
				break;
189
			case Buffer.TYPE_DOUBLE:
190
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultDoubleNoDataValue);
191
				break;
192
			}
193
		}
194
    }
195

  
196

  
197
    /**
198
     * Gets the list of layers from the gvSIG view
199
     * @return
200
     */
201
    private FLayers getLayers() {
202
        MapControl mapControl = null;
203
        IWindow[] windowList = PluginServices.getMDIManager().getOrderedWindows();
204
        for (int i = 0; i < windowList.length; i++) {
205
            if (windowList[i] instanceof AbstractViewPanel) {
206
                mapControl = ((AbstractViewPanel) windowList[i]).getMapControl();
207
                break;
208
            }
209
        }
210
        if (mapControl != null)
211
            return mapControl.getMapContext().getLayers();
212
        return null;
213
    }
214

  
215
    /**
216
     * Gets the selected layer
217
     * @return
218
     */
219
    private FLyrRaster getSelectedLayer() {
220
    	FLayers lyrs = getLayers();
221
    	for (int i = 0; i < lyrs.getLayersCount(); i++) {
222
			FLayer lyr = lyrs.getLayer(i);
223
			if(lyr.isActive() && lyr instanceof FLyrRaster)
224
				return (FLyrRaster)lyr;
225
		}
226
    	return null;
227
    }
228

  
229
    public boolean isEnabled() {
230
        return false;
231
    }
232

  
233
    public boolean isVisible() {
234
        return false;
235
    }
236

  
237
    void initilizeIcons() {
238
		IconThemeHelper.registerIcon(null, "gvsig-icon", this);
239
		IconThemeHelper.registerIcon(null, "mask-icon", this);
240
		IconThemeHelper.registerIcon(null, "gvsig-icon16x16", this);
241
    }
242

  
243
    /**
244
     * Gets the {@link ROIMaskPanel}
245
     * @return {@link ROIMaskPanel}
246
     */
247
    private CreateNewLayerPanel getNewLayerPanel() {
248
    	if(newLayerPanel == null)
249
    		 newLayerPanel = RasterSwingLocator.getSwingManager().createNewLayerPanel(
250
    				 Messages.getText("create_output_layer"));
251
    	return newLayerPanel;
252
    }
253

  
254
    /**
255
     * Gets the {@link PreviewPanel}
256
     * @return {@link PreviewPanel}
257
     */
258
    private PreviewPanel getPreviewPanel() {
259
    	if(previewPanel == null)
260
    		previewPanel = RasterSwingLocator.getSwingManager().createSinglePreviewPanel(null, getDataSourcePreview());
261
    	return previewPanel;
262
    }
263

  
264
    /**
265
     * Gets the {@link ROIMaskPreview}
266
     * @return {@link ROIMaskPreview}
267
     */
268
    private ROIMaskPreview getDataSourcePreview() {
269
    	if(processPreview == null) {
270
    		processPreview = new ROIMaskPreview();
271
    	}
272
    	processPreview.setData(getROIMaskPanel().getDataModel());
273
    	return processPreview;
274
    }
275

  
276
    /**
277
     * Gets the {@link ROIMaskPanel}
278
     * @return {@link ROIMaskPanel}
279
     */
280
    private ROIMaskPanel getROIMaskPanel() {
281
    	if(panel == null) {
282
    		panel = ROIMaskSwingLocator.getSwingManager().createROIMaskPanel();
283
    		panel.addListener(this);
284
    	}
285
    	return panel;
286
    }
287

  
288
	public void actionPerformed(ActionEvent e) {
289
		if(window != null &&
290
			(e.getSource() == ((ROIMaskWindow)window).getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT) ||
291
			e.getSource() == ((ROIMaskWindow)window).getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY))) {
292
			DataProcess task = null;
293
			try {
294
				task = RasterBaseAlgorithmLibrary.getManager().createRasterTask("ROIMaskProcess");
295
			} catch (ProcessException e1) {
296
				RasterSwingLibrary.messageBoxError("error_processing_layer", null, e1);
297
			}
298
			task.setActions(this);
299
			try {
300
				getDataSourcePreview().addParams(task,
301
						getNewLayerPanel().getDirectorySelected(),
302
						getNewLayerPanel().getFileSelected());
303
			} catch (ROIException e1) {
304
				RasterSwingLibrary.messageBoxError("error_processing_layer", null, e1);
305
			}
306
			task.start();
307
			return;
308
		}
309

  
310
		getPreviewPanel().refreshPreview();
311
	}
312

  
313
	@SuppressWarnings("unchecked")
314
	public void end(Object params) {
315
		if(params instanceof HashMap<?, ?>) {
316
			HashMap<String, Object>  map = (HashMap<String, Object>) params;
317
			String fName = (String)map.get(ROIMaskProcess.FILENAME);
318
			long milis = (Long)map.get(ROIMaskProcess.TIME);
319
			processFinalize(fName, milis);
320
			RasterSwingLocator.getSwingManager().showSummaryProcessDialog(fName, milis);
321
		}
322
	}
323

  
324
	private void processFinalize(String fileName, long milis) {
325
		if (!new File(fileName).exists())
326
			return;
327

  
328
		String viewName = getViewName();
329
		if(viewName != null) {
330
			if (RasterSwingLibrary.messageBoxYesOrNot("cargar_toc", this)) {
331
				try {
332
					RasterMainPluginUtils.loadLayer(viewName, fileName, null);
333
				} catch (RasterNotLoadException e) {
334
					RasterSwingLibrary.messageBoxError("error_load_layer", null, e);
335
				}
336
			}
337
		}
338
	}
339

  
340
	private String getViewName() {
341
		FLyrRaster lyrRaster = getSelectedLayer();
342
		IWindow[] w = PluginServices.getMDIManager().getAllWindows();
343
		for (int i = 0; i < w.length; i++) {
344
			if(w[i] instanceof AbstractViewPanel) {
345
				FLayers lyrs = ((AbstractViewPanel)w[i]).getMapControl().getMapContext().getLayers();
346
				for (int j = 0; j < lyrs.getLayersCount(); j++) {
347
					FLayer lyr = lyrs.getLayer(j);
348
					if(lyrRaster == lyr) {
349
						return PluginServices.getMDIManager().getWindowInfo((AbstractViewPanel) w[i]).getTitle();
350
					}
351
				}
352
			}
353
		}
354
		return null;
355
	}
356

  
357
	public void interrupted() {
358

  
359
	}
360

  
361
	public class LayerElement {
362
		private FLayer     lyr  = null;
363
		public LayerElement(FLayer lyr) {
364
			this.lyr = lyr;
365
		}
366

  
367
		public FLayer getLayer() {
368
			return lyr;
369
		}
370

  
371
		public String toString() {
372
			return lyr.getName();
373
		}
374

  
375
		public int getNumOfElements() {
376
			if(lyr instanceof FLyrRaster)
377
				return ((FLyrRaster)lyr).getDataStore().getBandCount();
378
			return 0;
379
		}
380
	}
381

  
382
	public void updateProgress(int current, int total) {
383
		// TODO Auto-generated method stub
384

  
385
	}
386
}
0 387

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/ROIMaskTocMenuEntry.java
1
package org.gvsig.raster.roimask.app;
2

  
3
import javax.swing.Icon;
4

  
5
import org.gvsig.andami.IconThemeHelper;
6
import org.gvsig.andami.plugins.Extension;
7
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
8
import org.gvsig.app.project.documents.view.toc.ITocItem;
9
import org.gvsig.fmap.mapcontext.layers.FLayer;
10
import org.gvsig.i18n.Messages;
11
import org.gvsig.raster.fmap.layers.FLyrRaster;
12
import org.gvsig.raster.mainplugin.toolbar.IGenericToolBarMenuItem;
13

  
14
public class ROIMaskTocMenuEntry extends AbstractTocContextMenuAction implements IGenericToolBarMenuItem {
15
	static private ROIMaskTocMenuEntry singleton  = null;
16
	private static Extension                     extension  = null;
17
	
18
	
19
	public static void setExtension(Extension ext) {
20
		extension = ext;
21
	}
22

  
23
	private ROIMaskTocMenuEntry() {}
24

  
25
	static public ROIMaskTocMenuEntry getSingleton() {
26
		if (singleton == null)
27
			singleton = new ROIMaskTocMenuEntry();
28
		return singleton;
29
	}
30
	
31
	public String getGroup() {
32
		return "Enhanced";
33
	}
34

  
35
	public int getGroupOrder() {
36
		return 55;
37
	}
38

  
39
	public int getOrder() {
40
		return 0;
41
	}
42

  
43
	public String getText() {
44
		return Messages.getText("roimask");
45
	}
46

  
47
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
48
		if(selectedItems == null || selectedItems.length == 0)
49
			return false;
50
		for (int i = 0; i < selectedItems.length; i++) {
51
			if(selectedItems[i] != null && 
52
				selectedItems[i].isActive() && 
53
				selectedItems[i] instanceof FLyrRaster)
54
				return true;
55
		}
56
		return false;
57
	}
58

  
59
	public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
60
		return true;
61
	}
62

  
63
	public void execute(ITocItem item, FLayer[] selectedItems) {
64
		extension.execute("ROIMask");
65
	}
66
	
67
	public Icon getIcon() {
68
		return IconThemeHelper.getImageIcon("mask-icon");
69
	}
70
}
0 71

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/MainPanel.java
1
package org.gvsig.raster.roimask.app;
2

  
3
import java.awt.GridBagConstraints;
4
import java.awt.GridBagLayout;
5

  
6
import javax.swing.JComponent;
7
import javax.swing.JPanel;
8

  
9
public class MainPanel extends JPanel {
10
	private static final long serialVersionUID = 1L;
11

  
12
	public MainPanel(JComponent panel, JComponent createLayer) {
13
		setLayout(new GridBagLayout());
14
		GridBagConstraints gbc = new GridBagConstraints();
15
		gbc.anchor = GridBagConstraints.WEST;
16
		gbc.fill = GridBagConstraints.BOTH;
17
		gbc.weightx = 1;
18
		gbc.weighty = 1;
19
		gbc.gridy = 0;
20
		add(panel, gbc);
21
		
22
		gbc.fill = GridBagConstraints.HORIZONTAL;
23
		gbc.weightx = 1;
24
		gbc.weighty = 0;
25
		gbc.gridy = 1;
26
		
27
		add(createLayer, gbc);
28
	}
29
}
0 30

  
org.gvsig.raster.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/toolbox/ToolboxROIMaskLoader.java
1
package org.gvsig.raster.roimask.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 ToolboxROIMaskLoader {
15
	private Logger log      = LoggerFactory.getLogger(ToolboxROIMaskLoader.class); 
16
	private String errorMsg = "The tool ROIMask are not been added in the toolbox";
17

  
18
	public void registerTool() {
19
		try {
20
			Class<?> c = Class.forName("org.gvsig.raster.roimask.app.toolbox.ROIMaskToolboxAction");
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.roimask/tags/org.gvsig.raster.roimask-2.2.5/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/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
 *
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff