Revision 1982

View differences:

org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.raster.roimask.ROIMaskSextanteLibrary
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/src/main/resources/org/gvsig/raster/roimask/i18n/text.properties
1
basic_raster_algorithms=Capas r?ster
2
mask=M?scara
0 3

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/src/main/resources/org/gvsig/raster/roimask/i18n/text_en.properties
1
basic_raster_algorithms=Raster layers
2
mask=Mask
0 3

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/src/main/resources/help/ROIMaskAlgorithm.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.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/src/main/resources/help/ROIMaskAlgorithm_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.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/src/main/java/org/gvsig/raster/roimask/ROIMaskSextanteLibrary.java
1
package org.gvsig.raster.roimask;
2

  
3
import org.gvsig.geoprocess.algorithm.base.core.AlgorithmAbstractLibrary;
4
import org.gvsig.i18n.Messages;
5
import org.gvsig.tools.library.LibraryException;
6

  
7
/**
8
 * Initialization of <code>ROIMaskSextanteLibrary</code> library.
9
 */
10
public class ROIMaskSextanteLibrary extends AlgorithmAbstractLibrary {
11

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

  
17
    @Override
18
    protected void doPostInitialize() throws LibraryException {
19
        Messages.addResourceFamily(
20
            "org.gvsig.raster.roimask.i18n.text", ROIMaskSextanteLibrary.class
21
                .getClassLoader(), ROIMaskSextanteLibrary.class.getClass().getName());
22
        registerGeoProcess(new ROIMaskSextanteAlgorithm());
23
    }
24

  
25
}
0 26

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/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.fmap.dal.coverage.grid.ROI;
8
import org.gvsig.geoprocess.lib.sextante.AbstractSextanteGeoProcess;
9
import org.gvsig.geoprocess.lib.sextante.dataObjects.FLyrRasterIRasterLayer;
10
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
11
import org.gvsig.raster.algorithm.process.ProcessException;
12
import org.gvsig.raster.algorithm.process.RasterProcess;
13
import org.gvsig.raster.fmap.layers.FLyrRaster;
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
    	RasterProcess 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).getFileName(); //getOutPutFile(RESULT);
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.EXPORT, true);
89
		task.addParam(ROIMaskProcess.TEST_EXTENT, bbox);
90
		task.addParam(ROIMaskProcess.TEST_WIDTH, ext.getNX());
91
		task.addParam(ROIMaskProcess.TEST_HEIGHT, ext.getNY());
92
		
93
		try {
94
			task.execute();
95
			((FLyrRasterIRasterLayer)output).setBaseDataObject(fileName);
96
		} catch (ProcessInterruptedException e) {
97
			Sextante.addErrorToLog(e);
98
		} catch (ProcessException e) {
99
			Sextante.addErrorToLog(e);
100
		} 
101

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

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

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.sextante/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"
3
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4
		 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5

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

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/distribution/distribution.xml
1
<assembly>
2
</assembly>
0 3

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Thu May 16 16:37:44 CET 2013
3
buildNumber=0
0 4

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/buildNumber.properties
1
#maven.buildNumber.plugin properties file
2
#Thu May 16 16:37:44 CET 2013
3
buildNumber=0
0 4

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/package.info
1
#
2
#Tue Jun 11 17:44:21 CEST 2013
3
owner=gvSIG Association
4
code=org.gvsig.raster.roimask.app.client
5
java-version=j1_5
6
official=true
7
type=plugin
8
version=2.0.0-SNAPSHOT-0
9
state=devel
10
operating-system=all
11
dependencies=required\: org.gvsig.raster.tilecache.app -ge 2.0.0-0, required\: org.gvsig.raster.tools.app.basic -ge 2.0.0-0
12
sources-url=https\://devel.gvsig.org/redmine/projects/gvsig-raster/repository/show/org.gvsig.raster.roimask.app/trunk/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client
13
web-url=http\://www.gvsig.com
14
architecture=all
15
model-version=1.0.1
16
categories=OGC, Remote Services, Raster
17
description=
18
buildNumber=0
19
gvSIG-version=2.0.0
20
name=
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/resources/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<plugin-config>
3
	<depends plugin-name="org.gvsig.raster.tools.app.basic" />
4
	<!--Only for sextante algorithms-->
5
	<depends plugin-name="org.gvsig.geoprocess.app.algorithm" />
6
	<resourceBundle name="text"/>
7
	<libraries library-dir="lib"/>
8
	<extensions>
9
		<extension class-name="org.gvsig.raster.roimask.app.ROIMaskExtension"
10
			description="" 
11
			active="true" 
12
			priority="1">
13
		</extension>	
14
	</extensions>
15
</plugin-config>
0 16

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/resources/org/gvsig/raster/roimask/app/i18n/text.properties
1
roimask=M?scara por regi?n de inter?s
0 2

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/resources/org/gvsig/raster/roimask/app/i18n/text_en.properties
1
roimask=Mask by region of interest
0 2

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/ROIMaskWindow.java
1
package org.gvsig.raster.roimask.app;
2

  
3
import java.awt.BorderLayout;
4
import java.awt.GridBagConstraints;
5
import java.awt.GridBagLayout;
6
import java.awt.event.ActionEvent;
7
import java.awt.event.ActionListener;
8

  
9
import javax.swing.JComponent;
10
import javax.swing.JPanel;
11
import javax.swing.JSplitPane;
12
import javax.swing.border.Border;
13
import javax.swing.plaf.basic.BasicSplitPaneDivider;
14
import javax.swing.plaf.basic.BasicSplitPaneUI;
15

  
16
import org.gvsig.andami.PluginServices;
17
import org.gvsig.andami.ui.mdiManager.IWindow;
18
import org.gvsig.andami.ui.mdiManager.WindowInfo;
19
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
20
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
21

  
22
public class ROIMaskWindow extends DefaultButtonsPanel implements IWindow, ActionListener {
23
    
24
    private static final long  serialVersionUID = -4401123724140025094L;
25
    private ActionListener     listener         = null;
26
    private WindowInfo         info             = null;
27

  
28
    private Object             profile = WindowInfo.EDITOR_PROFILE;
29

  
30
    public ROIMaskWindow(JComponent panel, 
31
    		JComponent preview, 
32
    		String title, 
33
    		int w, 
34
    		int h,
35
    		boolean fixedPreview,
36
    		ActionListener actionListener) {
37
    	this.listener = actionListener;
38
    	
39
    	if(fixedPreview)
40
    		fixedPreview(panel, preview);
41
    	else
42
    		redimPreview(panel, preview);
43

  
44
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).addActionListener(this);
45
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).addActionListener(this);
46
        getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL).addActionListener(this);
47
        
48
        info = new WindowInfo(WindowInfo.PALETTE | WindowInfo.RESIZABLE);
49
        info.setTitle(title);
50
        info.setWidth(w);
51
        info.setHeight(h);
52
    }
53
    
54
    private void fixedPreview(JComponent panel, JComponent preview) {
55
    	setLayout(new GridBagLayout());
56
		GridBagConstraints gbc = new GridBagConstraints();
57
		gbc.fill = GridBagConstraints.BOTH;
58
		gbc.weightx = 1;
59
		gbc.weighty = 1;
60
		add(panel, gbc);
61
		
62
		if(preview != null) {
63
			gbc.anchor = GridBagConstraints.NORTH;
64
			gbc.fill = GridBagConstraints.NONE;
65
			gbc.weightx = 0;
66
			gbc.weighty = 0;
67
			gbc.gridx = 1;
68
			add(preview, gbc);
69
		}
70
    }
71
    
72
    private void redimPreview(JComponent panel, JComponent preview) {
73
    	setLayout(new BorderLayout());
74
		JSplitPane splitPane = new JSplitPane();
75
		splitPane.setLeftComponent(panel);
76
		splitPane.setRightComponent(getPreviewForRedimPreviewPanel(preview));
77
		splitPane.setResizeWeight(1.0);
78
		splitPane.setContinuousLayout(true);
79
		splitPane.setOneTouchExpandable(true);
80
		splitPane.setUI(new BasicSplitPaneUI() {
81
			public BasicSplitPaneDivider createDefaultDivider() {
82
				return new BasicSplitPaneDivider(this) {
83
					private static final long serialVersionUID = 1L;
84

  
85
					public void setBorder(Border b) {
86
					}
87
				};
88
			}
89
		});
90
		splitPane.setBorder(null);
91
		add(splitPane, BorderLayout.CENTER);
92
    }
93
    
94
    private JSplitPane getPreviewForRedimPreviewPanel(JComponent preview) {
95
    	JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
96
    	splitPane.setTopComponent(preview);
97
		splitPane.setBottomComponent(new JPanel());
98
		splitPane.setResizeWeight(0);
99
		splitPane.setContinuousLayout(true);
100
		splitPane.setOneTouchExpandable(true);
101
		splitPane.setUI(new BasicSplitPaneUI() {
102
			public BasicSplitPaneDivider createDefaultDivider() {
103
				return new BasicSplitPaneDivider(this) {
104
					private static final long serialVersionUID = 1L;
105

  
106
					public void setBorder(Border b) {
107
					}
108
				};
109
			}
110
		});
111
		splitPane.setBorder(null);
112
		return splitPane;
113
    }
114

  
115
    public WindowInfo getWindowInfo() {
116
        return info;
117
    }
118

  
119
    public Object getWindowProfile() {
120
        return profile;
121
    }
122

  
123
    public void actionPerformed(ActionEvent e) {
124
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
125
    		listener.actionPerformed(e);
126
    		PluginServices.getMDIManager().closeWindow(this);
127
    	}
128
    	
129
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY)) {
130
    		listener.actionPerformed(e);
131
    	}
132
    	
133
    	if(e.getSource() == getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL)) {
134
    		PluginServices.getMDIManager().closeWindow(this);
135
    	}
136
    }
137
}
0 138

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/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.Component;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.io.File;
7
import java.util.ArrayList;
8
import java.util.HashMap;
9
import java.util.List;
10

  
11
import javax.swing.JComponent;
12
import javax.swing.JOptionPane;
13
import javax.swing.JPanel;
14

  
15
import org.gvsig.andami.IconThemeHelper;
16
import org.gvsig.andami.PluginServices;
17
import org.gvsig.andami.plugins.Extension;
18
import org.gvsig.andami.ui.mdiManager.IWindow;
19
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
20
import org.gvsig.fmap.dal.coverage.RasterLibrary;
21
import org.gvsig.fmap.dal.coverage.RasterLocator;
22
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
23
import org.gvsig.fmap.dal.coverage.exception.ROIException;
24
import org.gvsig.fmap.dal.coverage.grid.ROI;
25
import org.gvsig.fmap.dal.coverage.util.FileUtils;
26
import org.gvsig.fmap.dal.exception.ReadException;
27
import org.gvsig.fmap.mapcontext.layers.FLayer;
28
import org.gvsig.fmap.mapcontext.layers.FLayers;
29
import org.gvsig.fmap.mapcontrol.MapControl;
30
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
31
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
32
import org.gvsig.i18n.Messages;
33
import org.gvsig.raster.fmap.layers.FLyrRaster;
34
import org.gvsig.raster.roimask.algorithm.ROIMaskProcess;
35
import org.gvsig.raster.roimask.swing.ROIMaskPanel;
36
import org.gvsig.raster.roimask.swing.ROIMaskSwingLocator;
37
import org.gvsig.raster.swing.RasterSwingLocator;
38
import org.gvsig.raster.swing.newlayer.CreateNewLayerPanel;
39
import org.gvsig.raster.swing.newlayer.FileNameManagement;
40
import org.gvsig.raster.swing.preview.PreviewPanel;
41
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
42
import org.gvsig.raster.algorithm.process.IProcessActions;
43
import org.gvsig.raster.algorithm.process.ProcessException;
44
import org.gvsig.raster.algorithm.process.RasterProcess;
45
import org.gvsig.raster.tools.algorithm.swing.bean.LayerComboElement;
46
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
47
import org.gvsig.raster.tools.app.basic.raster.bean.endinfo.EndInfoDialog;
48
import org.gvsig.raster.util.RasterNotLoadException;
49
import org.gvsig.tools.ToolsLocator;
50
import org.gvsig.tools.extensionpoint.ExtensionPoint;
51
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
52
import org.slf4j.Logger;
53
import org.slf4j.LoggerFactory;
54

  
55

  
56
public class ROIMaskExtension extends Extension implements ActionListener, IProcessActions {
57
	private int                      windowWidth         = 600;
58
	private int                      windowHeight        = 370;
59
	private IWindow                  window              = null;
60
	private PreviewPanel             previewPanel        = null;
61
	private ROIMaskPreview           processPreview      = null;
62
	private ROIMaskPanel             panel               = null;
63
	private CreateNewLayerPanel      newLayerPanel       = null;
64
	private static final Logger      logger              = LoggerFactory.getLogger(ROIMaskExtension.class);
65
	
66
    public void initialize() {
67
    	
68
    	// Adds an entry to the TOC's floating menu to those layers defined in this extension
69
    	
70
		//ExtensionPoint exPoint = ToolsLocator.getExtensionPointManager().add("My_TocActions");
71
		//exPoint.append("MyMenuEntry", "", new ROIMaskTocMenuEntry());
72

  
73
        // Adds a new tab to the "add layer" dialog
74
    	
75
    	//AddLayer.addWizard(ROIMaskWizard.class);
76
    	
77
    	// Adds a new button in the raster bar
78
    	
79
		ExtensionPointManager extensionPoints = ToolsLocator.getExtensionPointManager();
80
		ExtensionPoint point = extensionPoints.add("GenericToolBarMenu");
81
		point.append("ROIMask", "", ROIMaskTocMenuEntry.getSingleton());
82
		ROIMaskTocMenuEntry.setExtension(this);
83
    	
84
        Messages.addResourceFamily("org.gvsig.raster.roimask.app.i18n.text",
85
        		ROIMaskExtension.class.getClassLoader(),
86
        		ROIMaskExtension.class.getClass().getName()); 
87

  
88
    	initilizeIcons();
89
    }
90
    
91
	public void postInitialize() {
92
	}
93

  
94
    public void execute(String actionCommand) {
95
    	if (actionCommand.compareTo("ROIMask") == 0) {
96
    		if(getSelectedLayer() == null) {
97
    			messageBoxError("layer_not_selected", null, null);
98
    			return;
99
    		}
100
    		try {
101
    			initializeMainPanel();
102
    		} catch (ReadException e) {
103
    			logger.error("Error initializing the main panel", e);
104
    		} catch (ROIException e) {
105
    			logger.error("Error getting ROI", e);
106
			}
107
    	}
108
    }
109
    
110
    /**
111
     * Creates and initializes the main panel
112
     * @throws ReadException
113
     * @throws ROIException 
114
     */
115
    private void initializeMainPanel() throws ReadException, ROIException {
116
    	try {
117
    		loadROIMaskPanel();
118
    	} catch (NotInitializeException e) {
119
    		throw new ReadException("Error loading the table", e);
120
    	}
121

  
122
    	MainPanel mainPanel = new MainPanel(
123
    			getROIMaskPanel().getComponent(), 
124
    			(JComponent)getNewLayerPanel());
125

  
126
    	window = new ROIMaskWindow(
127
    			mainPanel, 
128
    			(JPanel)getPreviewPanel(), 
129
    			Messages.getText("roimask"), 
130
    			windowWidth, 
131
    			windowHeight,
132
    			false,
133
    			this);
134

  
135
    	PluginServices.getMDIManager().addWindow(window);
136
    	getPreviewPanel().previewInitializeSizes();
137
    	getPreviewPanel().refreshPreview();
138
    }
139
    
140
    /**
141
     * Loads the main panel with the data
142
     * @throws NotInitializeException 
143
     * @throws ROIException 
144
     */
145
    private void loadROIMaskPanel() throws NotInitializeException, ROIException {
146
    	FLyrRaster lyr = getSelectedLayer();
147
    	LayerElement element = new LayerElement(lyr);
148
    	getROIMaskPanel().getDataModel().setInputLayer(element);
149
    	
150
    	if(lyr.getDataStore().getDataType()[0] == Buffer.TYPE_BYTE &&
151
    		(lyr.getDataStore().getBandCount() == 3 || lyr.getDataStore().getBandCount() == 4)) {
152
    		getROIMaskPanel().activeSlider(true);
153
    	} else
154
    		getROIMaskPanel().activeSlider(false);
155
    	
156
    	if(lyr.getRois() == null || lyr.getRois().size() == 0)
157
    		getROIMaskPanel().showWarning(true);
158
    	else
159
    		getROIMaskPanel().showWarning(false);
160
    	
161
		getROIMaskPanel().getDataModel().clearROIs();
162
		
163
    	List<ROI> roisArray = lyr.getRois();
164
		if (roisArray != null) {
165
			for (int i = 0; i < roisArray.size(); i++) {
166
				ROI roi = (ROI) roisArray.get(i);
167
	
168
				Object row[] = {"", "", ""};
169
				
170
				boolean active = false;
171
				
172
				row[0] = new Boolean(active);
173
				row[1] = roi.getName(); 
174
				row[2] = new Integer(i);
175
				getROIMaskPanel().getDataModel().addROI(row);
176
			}
177
		}
178
		
179
		if(lyr != null) {
180
			switch(lyr.getDataStore().getDataType()[0]) {
181
			case Buffer.TYPE_BYTE:
182
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultByteNoDataValue);
183
				break;
184
			case Buffer.TYPE_SHORT:
185
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultShortNoDataValue);
186
				break;
187
			case Buffer.TYPE_INT:
188
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultIntegerNoDataValue);
189
				break;
190
			case Buffer.TYPE_FLOAT:
191
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultFloatNoDataValue);
192
				break;
193
			case Buffer.TYPE_DOUBLE:
194
				getROIMaskPanel().getDataModel().setValueNoData(RasterLibrary.defaultDoubleNoDataValue);
195
				break;
196
			}
197
		}
198
    }
199

  
200
    
201
    /**
202
     * Gets the list of layers from the gvSIG view
203
     * @return
204
     */
205
    private FLayers getLayers() {
206
        MapControl mapControl = null;
207
        IWindow[] windowList = PluginServices.getMDIManager().getAllWindows();
208
        for (int i = 0; i < windowList.length; i++) {
209
            if (windowList[i] instanceof AbstractViewPanel)
210
                mapControl = ((AbstractViewPanel) windowList[i]).getMapControl();
211
        }
212
        if (mapControl != null)
213
            return mapControl.getMapContext().getLayers();
214
        return null;
215
    }
216
    
217
    /**
218
     * Gets the selected layer
219
     * @return
220
     */
221
    private FLyrRaster getSelectedLayer() {
222
    	FLayers lyrs = getLayers();
223
    	for (int i = 0; i < lyrs.getLayersCount(); i++) {
224
			FLayer lyr = lyrs.getLayer(i);
225
			if(lyr.isActive() && lyr instanceof FLyrRaster)
226
				return (FLyrRaster)lyr;
227
		}
228
    	return null;
229
    }
230
    
231
    public boolean isEnabled() {
232
        return false;
233
    }
234

  
235
    public boolean isVisible() {
236
        return false;
237
    }
238

  
239
    void initilizeIcons() {
240
		IconThemeHelper.registerIcon(null, "gvsig-icon", this);
241
		IconThemeHelper.registerIcon(null, "mask-icon", this);
242
    }
243
    
244
    /**
245
     * Gets the {@link ROIMaskPanel}
246
     * @return {@link ROIMaskPanel}
247
     */
248
    private CreateNewLayerPanel getNewLayerPanel() {
249
    	if(newLayerPanel == null)
250
    		 newLayerPanel = RasterSwingLocator.getSwingManager().createNewLayerPanel(
251
    				 new FileNameManagementImpl(),
252
    				 Messages.getText("create_output_layer"));
253
    	return newLayerPanel;
254
    }
255
    
256
    /**
257
     * Gets the {@link PreviewPanel}
258
     * @return {@link PreviewPanel}
259
     */
260
    private PreviewPanel getPreviewPanel() {
261
    	if(previewPanel == null)
262
    		previewPanel = RasterSwingLocator.getSwingManager().createSinglePreviewPanel(null, getDataSourcePreview());
263
    	return previewPanel;
264
    }
265
    
266
    /**
267
     * Gets the {@link ROIMaskPreview}
268
     * @return {@link ROIMaskPreview}
269
     */
270
    private ROIMaskPreview getDataSourcePreview() {
271
    	if(processPreview == null) {
272
    		processPreview = new ROIMaskPreview();
273
    	}
274
    	processPreview.setData(getROIMaskPanel().getDataModel());
275
    	return processPreview;
276
    }
277
    
278
    /**
279
     * Gets the {@link ROIMaskPanel}
280
     * @return {@link ROIMaskPanel}
281
     */
282
    private ROIMaskPanel getROIMaskPanel() {
283
    	if(panel == null) {
284
    		panel = ROIMaskSwingLocator.getSwingManager().createROIMaskPanel();
285
    		panel.addListener(this);
286
    	}
287
    	return panel;
288
    }
289

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

  
316
	@SuppressWarnings("unchecked")
317
	public void end(Object params) {
318
		if(params instanceof HashMap<?, ?>) {
319
			HashMap<String, Object>  map = (HashMap<String, Object>) params;
320
			String fName = (String)map.get(ROIMaskProcess.FILENAME);
321
			long milis = (Long)map.get(ROIMaskProcess.TIME);
322
			processFinalize(fName, milis);
323
			EndInfoDialog.show(fName, milis);
324
		}
325
	}
326
	
327
	private void processFinalize(String fileName, long milis) {
328
		if (!new File(fileName).exists())
329
			return;
330

  
331
		String viewName = getViewName();
332
		if(viewName != null) {
333
			if (RasterToolsUtil.messageBoxYesOrNot("cargar_toc", this)) {
334
				try {
335
					RasterToolsUtil.loadLayer(viewName, fileName, null);
336
				} catch (RasterNotLoadException e) {
337
					messageBoxError("error_load_layer", null, null);
338
				}
339
			}
340
		}
341
	}
342
	
343
	private String getViewName() {
344
		FLyrRaster lyrRaster = getSelectedLayer();
345
		IWindow[] w = PluginServices.getMDIManager().getAllWindows();
346
		for (int i = 0; i < w.length; i++) {
347
			if(w[i] instanceof AbstractViewPanel) {
348
				FLayers lyrs = ((AbstractViewPanel)w[i]).getMapControl().getMapContext().getLayers();
349
				for (int j = 0; j < lyrs.getLayersCount(); j++) {
350
					FLayer lyr = lyrs.getLayer(j);
351
					if(lyrRaster == lyr) {
352
						return PluginServices.getMDIManager().getWindowInfo((AbstractViewPanel) w[i]).getTitle();
353
					}
354
				}
355
			}
356
		}
357
		return null;
358
	}
359

  
360
	public void interrupted() {
361
		
362
	}
363
	
364
	/**
365
	 * Shows a error dialog with a text and a accept button 
366
	 * @param msg Message to show in the dialog
367
	 * @param parentWindow Parent window
368
	 */
369
	public static void messageBoxError(String msg, Object parentWindow, Exception exception) {
370
		if(exception != null) {
371
			LoggerFactory.getLogger(ROIMaskExtension.class).debug(Messages.getText(msg), exception);
372
		}
373
		String string = Messages.getText("accept");
374
		Object[] options = {string};
375
		JOptionPane.showOptionDialog((Component)parentWindow,
376
					"<html>" + Messages.getText(msg).replaceAll("\n", "<br>") + "</html>",
377
					Messages.getText("confirmacion"),
378
					JOptionPane.OK_OPTION,
379
					JOptionPane.ERROR_MESSAGE,
380
					null,
381
					options,
382
					string);
383
	}
384
	
385
	public class FileNameManagementImpl implements FileNameManagement {
386
		private FileUtils fileUtils = RasterLocator.getManager().getFileUtils();
387
		
388
		public String getDefaultFilePath() {
389
			return System.getProperty("user.home");
390
		}
391

  
392
		public List<String> getPrefixSupported() {
393
			List<String> list = new ArrayList<String>();
394
			list.add("tif");
395
			return list;
396
		}
397

  
398
		public String getUniqueLayerName() {
399
			return fileUtils.getOnlyLayerName();
400
		}
401

  
402
		public void usesUniqueLayerName() {
403
			fileUtils.usesOnlyLayerName();
404
		}
405

  
406
	}
407
	
408
	public class LayerElement implements LayerComboElement {
409
		private FLayer     lyr  = null;
410
		public LayerElement(FLayer lyr) {
411
			this.lyr = lyr;
412
		}
413
		
414
		public FLayer getLayer() {
415
			return lyr;
416
		}
417
		
418
		public String toString() {
419
			return lyr.getName();
420
		}
421
		
422
		public int getNumOfElements() {
423
			if(lyr instanceof FLyrRaster)
424
				return ((FLyrRaster)lyr).getDataStore().getBandCount();
425
			return 0;
426
		}
427
	}
428
}
0 429

  
org.gvsig.raster.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/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.tools.app.basic.raster.gui.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 "RasterProcess";
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.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/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.tools/trunk/templates/examples/org.gvsig.raster.roimask_v2_0/org.gvsig.raster.roimask.app/org.gvsig.raster.roimask.app.client/src/main/java/org/gvsig/raster/roimask/app/ROIMaskPreview.java
1
package org.gvsig.raster.roimask.app;
2

  
3
import java.awt.Graphics2D;
4
import java.awt.geom.Rectangle2D;
5
import java.awt.image.BufferedImage;
6
import java.io.File;
7
import java.util.ArrayList;
8
import java.util.HashMap;
9
import java.util.List;
10

  
11
import org.gvsig.fmap.dal.coverage.RasterLocator;
12
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
13
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
14
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
15
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
16
import org.gvsig.fmap.dal.coverage.exception.ROIException;
17
import org.gvsig.fmap.dal.coverage.grid.ROI;
18
import org.gvsig.fmap.dal.coverage.grid.render.ImageDrawer;
19
import org.gvsig.fmap.dal.coverage.store.props.Transparency;
20
import org.gvsig.gui.beans.imagenavigator.ImageUnavailableException;
21
import org.gvsig.raster.fmap.layers.FLyrRaster;
22
import org.gvsig.raster.roimask.algorithm.ROIMaskProcess;
23
import org.gvsig.raster.roimask.app.ROIMaskExtension.LayerElement;
24
import org.gvsig.raster.roimask.swing.ROIMaskData;
25
import org.gvsig.raster.swing.preview.DataSourcePreview;
26
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
27
import org.gvsig.raster.algorithm.process.ProcessException;
28
import org.gvsig.raster.algorithm.process.RasterProcess;
29
import org.gvsig.tools.task.Cancellable;
30
import org.slf4j.Logger;
31
import org.slf4j.LoggerFactory;
32

  
33
@SuppressWarnings("deprecation")
34
public class ROIMaskPreview implements DataSourcePreview {
35
	private FLyrRaster              inputLyr          = null;
36
	private Extent                  bbox              = null;
37
	private ROIMaskData             data              = null;
38
	private static final Logger     logger            = LoggerFactory.getLogger(ROIMaskPreview.class);
39
	
40
	
41
	public void setData(ROIMaskData data) {
42
		this.data = data;
43
		loadLayers();
44
	}
45
	
46
	private void loadLayers() {
47
		if(data == null)
48
			return;
49
		Object obj = data.getInputLayer();
50
		if(obj != null)
51
			inputLyr = (FLyrRaster)((LayerElement)data.getInputLayer()).getLayer();
52
		if(inputLyr != null)
53
			bbox = inputLyr.getFullRasterExtent();		
54
	}
55
	
56
	public void closePreviewLayer() {
57
		
58
	}
59

  
60
	public double getCellSize() {
61
		if(inputLyr != null)
62
			return inputLyr.getDataStore().getCellSize();
63
		return 1;
64
	}
65
	
66
	public DataSourcePreview cloneDataSourcePreview() {
67
		return this;
68
	}
69

  
70
	public void popStatus() {
71
	}
72

  
73
	public void pushStatus() {
74
	}
75
	
76
	public void draw(BufferedImage image, Graphics2D g, double[] coords, int w, int h, Cancellable cancel, double scale) throws ImageUnavailableException {
77
		//Posici?n de inicio dibujado dentro del Graphics
78
		int x = 0;
79
		int y = 0;
80
		//Coordenadas de la petici?n
81
		double iniX = coords[0];
82
		double iniY = coords[1];
83
		double endX = coords[2];
84
		double endY = coords[3];
85
		
86
		//Se ajustan las coordenadas de petici?n, ancho y alto en coordenadas p?xel, 
87
		//as? como la coordenada de inicio de dibujado 
88
		if(bbox.getULX() > coords[0]) {
89
			iniX = bbox.getULX();
90
			x = (int)(((iniX - coords[0]) * w) / Math.abs(coords[2] - coords[0]));
91
		}
92
				
93
		if(bbox.getULY() < coords[1]) {
94
			iniY = bbox.getULY();
95
			y = (int)(((coords[1] - iniY) * h) / Math.abs(coords[3] - coords[1]));
96
		}
97
		
98
		if(bbox.getLRX() < coords[2]) 
99
			endX = bbox.getLRX();
100
		
101
		if(bbox.getLRY() > coords[3]) 
102
			endY = bbox.getLRY();
103
		
104
		if(iniX != coords[0] || endX != coords[2]) {
105
			w = (int)((Math.abs(endX - iniX) * w) / Math.abs(coords[2] - coords[0]));
106
		}
107
		
108
		if(iniY != coords[1] || endY != coords[3]) {
109
			h = (int)((Math.abs(iniY - endY) * h) / Math.abs(coords[3] - coords[1]));
110
		}
111
		
112
		Extent ext = RasterLocator.getManager().getDataStructFactory().createExtent(iniX, iniY, endX, endY);
113
		BufferedImage img = throwProcess(ext, w, h);
114
		g.drawImage(img, x, y, null);
115
	}
116
	
117
	/**
118
	 * Throws the process sequentially. Since the preview is small,
119
	 * it should not taken a lot of time
120
	 * is small
121
	 * @param ext
122
	 * @param w
123
	 * @param h
124
	 * @return
125
	 */
126
	@SuppressWarnings("unchecked")
127
	private BufferedImage throwProcess(Extent ext, int w, int h) {
128
		loadLayers();
129
		
130
		RasterProcess task;
131
		try {
132
			task = RasterBaseAlgorithmLibrary.getManager().createRasterTask("ROIMaskProcess");
133
			task.addParam(ROIMaskProcess.RASTER_STORE1, inputLyr.getDataStore());
134
			task.addParam(ROIMaskProcess.TEST_EXTENT, ext);
135
			task.addParam(ROIMaskProcess.TEST_WIDTH, w);
136
			task.addParam(ROIMaskProcess.TEST_HEIGHT, h);
137
			task.addParam(ROIMaskProcess.ROIS, getROIsSelected());
138
			task.addParam(ROIMaskProcess.ALPHA, data.getAlpha());
139
			task.addParam(ROIMaskProcess.INVERSE, data.isInverse());
140
			task.addParam(ROIMaskProcess.NODATA, getNoDataSelected());
141
			task.addParam(ROIMaskProcess.EXPORT, false);
142
		} catch (ProcessException e1) {
143
			e1.printStackTrace();
144
			return null;
145
		} catch (ROIException e) {
146
			e.printStackTrace();
147
			return null;
148
		}
149
		
150
		task.init();
151
		try {
152
			task.process();
153
		} catch (ProcessInterruptedException e1) {
154
			return null;
155
		} catch (ProcessException e) {
156
			logger.debug("Error in process");
157
			return null;
158
		}
159
		
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff