Revision 7360

View differences:

org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/buildNumber.properties
1
#Mon Jun 26 00:02:48 CEST 2017
2
buildNumber=102
0 3

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/package.info
1
#
2
#Mon Jun 10 11:57:18 CEST 2013
3
owner=gvSIG Association
4
code=org.gvsig.raster.reproject.app.reprojectclient
5
java-version=j1_5
6
official=true
7
type=plugin
8
version=2.0.1-SNAPSHOT-12
9
state=testing
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.reproject/trunk/org.gvsig.raster.reproject/org.gvsig.raster.reproject.app.reprojectclient
13
web-url=http\://www.gvsig.com
14
architecture=all
15
model-version=1.0.1
16
categories=Raster
17
description=Reprojection support
18
buildNumber=12
19
gvSIG-version=2.0.0
20
name=Reprojection support
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/assembly/gvsig-plugin-package.xml
1
<assembly>
2
  <id>gvsig-plugin-package</id>
3
  <formats>
4
    <format>zip</format>
5
  </formats>
6
  <baseDirectory>${project.artifactId}</baseDirectory>
7
  <includeBaseDirectory>true</includeBaseDirectory>
8
  <files>
9
    <file>
10
      <source>target/${project.artifactId}-${project.version}.jar</source>
11
      <outputDirectory>lib</outputDirectory>
12
    </file>
13
    <file>
14
      <source>target/package.info</source>
15
    </file>
16
  </files>
17

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

  
25

  
26
  <dependencySets>
27
    <dependencySet>
28
      <useProjectArtifact>false</useProjectArtifact>
29
	  <useTransitiveDependencies>false</useTransitiveDependencies>
30
      <outputDirectory>lib</outputDirectory>
31
      <includes> 
32
				<include>org.gvsig:org.gvsig.raster.reproject.app.reprojectclient:jar</include>
33
				<include>org.gvsig:org.gvsig.raster.reproject.algorithm:jar</include>
34
	  </includes>
35
	</dependencySet>
36
  </dependencySets>
37
</assembly>
0 38

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/preparelayer/ReprojectionQueue.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.reproject.app.preparelayer;
23

  
24
import org.gvsig.fmap.dal.coverage.RasterLocator;
25
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
26
import org.gvsig.raster.algorithm.process.IProcessActions;
27
import org.gvsig.raster.algorithm.process.ProcessException;
28
import org.gvsig.raster.algorithm.process.DataProcess;
29
import org.gvsig.raster.util.Queue;
30
import org.slf4j.Logger;
31
import org.slf4j.LoggerFactory;
32

  
33
/**
34
 * Cola de procesos de ejecuci?n exclusiva. Los procesos de esta lista se ir?n ejecutando
35
 * por orden de llegada impidiendo que se ejecuten dos al mismo tiempo.
36
 * 
37
 * 16/05/2008
38
 * @author Nacho Brodin nachobrodin@gmail.com
39
 */
40
public class ReprojectionQueue extends Thread {
41
	private Queue                     queue                       = new Queue();
42
	private DataProcess             executionProcess            = null;
43
	static private ReprojectionQueue  singleton                   = null;
44
	private Logger                    logger                      = LoggerFactory.getLogger(ReprojectionQueue.class.toString());
45
	
46
	/**
47
	 * Devuelve una instancia al unico objeto de UniqueProcessQueue que puede existir.
48
	 * @return
49
	 */
50
	static public ReprojectionQueue getSingleton() {
51
		if(singleton == null) {
52
			singleton = new ReprojectionQueue();
53
			synchronized (singleton) {
54
				singleton.start();
55
			}
56
		}
57
		return singleton;
58
	}
59
	
60
	public void run() {
61
		//Cuando arranca el thread se duerme porque la cola est? vacia
62
		synchronized (this) {
63
			try {
64
				wait();
65
			} catch (InterruptedException e) {
66
			}
67
		}
68
		
69
		while(true) {
70
			if(queue.size() >= 1) {
71
				Object[] obj = (Object[])queue.get();
72
				executionProcess = ((DataProcess) obj[0]);
73
				if (executionProcess != null) {
74
					executionProcess.showIncrementableWindow();
75
					try {
76
						executionProcess.execute();
77
					} catch (ProcessInterruptedException e) {
78
					} catch (ProcessException e) {
79
						logger.debug(RasterLocator.getManager().getRasterUtils().getTrace(e));
80
					}
81
					executionProcess.getIncrementableTask().processFinalize();
82
					
83
					//Despierta el objeto que llam? cuando termina el calculo
84
					//para que pueda recoger los resultados
85
					synchronized (obj[1]) {
86
						obj[1].notify();	
87
					}
88
					
89
					//Cuando la cola est? vacia se suspende el hilo.
90
					if(queue.size() <= 0) {
91
						synchronized (this) {
92
							try {
93
								this.wait();
94
							} catch (InterruptedException e) {
95
							}
96
						}
97
					}
98
						
99
				}
100
			}
101
		}
102
	}	
103
	
104
	/**
105
	 * A?ade un proceso a la cola.
106
	 * @param id Identificador del proceso
107
	 * @param process Proceso
108
	 * @throws InterruptedException 
109
	 */
110
	public synchronized void add(DataProcess process, IProcessActions obj) {
111
		queue.put(new Object[]{process, obj});
112
	}
113

  
114
}
0 115

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/preparelayer/RasterProjectionActionsDialog.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA  02110-1301, USA.
20
*
21
*/
22
package org.gvsig.raster.reproject.app.preparelayer;
23

  
24
import java.awt.BorderLayout;
25
import java.awt.Point;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28

  
29
import javax.swing.JPanel;
30

  
31
import org.cresques.cts.IProjection;
32

  
33
import org.gvsig.andami.PluginServices;
34
import org.gvsig.andami.ui.mdiManager.IWindow;
35
import org.gvsig.andami.ui.mdiManager.IWindowListener;
36
import org.gvsig.andami.ui.mdiManager.WindowInfo;
37
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
38
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
39
import org.gvsig.raster.mainplugin.RasterMainPluginUtils;
40

  
41
/**
42
 * Dialogo de opciones de sobre la proyecci?n de la capa raster y la vista.
43
 *
44
 * @author Nacho Brodin nachobrodin@gmail.com
45
 */
46
public class RasterProjectionActionsDialog extends JPanel implements IWindow, IWindowListener, ActionListener {
47
	private static final long            serialVersionUID       = 6954391896451933337L;
48
	private RasterProjectionActionsPanel panel                  = null;
49
	private Point                        posWindow              = null;
50
	private int                          widthWindow            = 390;
51
	private int                          heightWindow           = 260;
52
	private boolean                      layerIsReprojectable   = true;
53
	private String                       layerName              = null;
54
	private int                          defaultAction          = RasterDataParameters.NEW_PROJETION_TO_THE_LAYER;
55
    private IProjection viewProj = null;
56
    private IProjection layerProj = null;
57

  
58
	   /**
59
     * Constructor.
60
     */
61
    public RasterProjectionActionsDialog(boolean layerIsReprojectable, String layerName, int defaultAction) {
62
        this(layerIsReprojectable, layerName, defaultAction, null, null);
63
    }
64
	/**
65
	 * Constructor.
66
	 */
67
	public RasterProjectionActionsDialog(boolean layerIsReprojectable, String layerName, int defaultAction, IProjection viewProj, IProjection layerProj) {
68
	    this.viewProj = viewProj;
69
	    this.layerProj = layerProj;
70
		this.layerIsReprojectable = layerIsReprojectable;
71
		this.layerName = layerName;
72
		this.defaultAction = defaultAction;
73
		BorderLayout bl = new BorderLayout();
74
		bl.setHgap(2);
75
		bl.setVgap(2);
76
		setLayout(bl);
77
		add(getRasterProjectionActionsPanel(), BorderLayout.CENTER);
78
		getRasterProjectionActionsPanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).addActionListener(this);
79
		getRasterProjectionActionsPanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL).addActionListener(this);
80
		getRasterProjectionActionsPanel().getCheckOption().addActionListener(this);
81
		posWindow = RasterMainPluginUtils.iwindowPosition(widthWindow, heightWindow);
82
		PluginServices.getMDIManager().addWindow(this);
83
	}
84

  
85
	public WindowInfo getWindowInfo() {
86
		WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODALDIALOG | WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE);
87
		m_viewinfo.setTitle(PluginServices.getText(this, "options"));
88
		m_viewinfo.setHeight(heightWindow);
89
		m_viewinfo.setWidth(widthWindow);
90
		if (posWindow != null) {
91
			m_viewinfo.setX((int) posWindow.getX());
92
			m_viewinfo.setY((int) posWindow.getY());
93
		}
94
		return m_viewinfo;
95
	}
96

  
97
	/**
98
	 * Obtiene el panel con las opciones de proyecci?n
99
	 * @return RasterProjectionActionsPanel
100
	 */
101
	public RasterProjectionActionsPanel getRasterProjectionActionsPanel() {
102
		if (panel == null) {
103
			panel = new RasterProjectionActionsPanel(layerIsReprojectable, layerName, defaultAction, viewProj, layerProj);
104
		}
105
		return panel;
106
	}
107

  
108
	/**
109
	 * Obtiene la selecci?n del panel
110
	 * @return entero con la selecci?n. Esta representada por las constantes de la
111
	 *         clase RasterReprojectionPanel.
112
	 */
113
	public int getSelection() {
114
		return getRasterProjectionActionsPanel().getSelection();
115
	}
116

  
117
	/**
118
	 * Obtiene la selecci?n del panel
119
	 * @return entero con la selecci?n. Esta representada por las constantes de la
120
	 *         clase RasterReprojectionPanel.
121
	 */
122
	public boolean getChangeProjectionOption() {
123
		return getRasterProjectionActionsPanel().getCheckOption().isSelected();
124
	}
125

  
126
	public void actionPerformed(ActionEvent e) {
127
		if (e.getSource() == getRasterProjectionActionsPanel().getCheckOption()) {
128
			return;
129
		}
130
		PluginServices.getMDIManager().closeWindow(this);
131
	}
132

  
133
	public void windowClosed() {}
134

  
135
	public void windowActivated() {}
136

  
137
	public Object getWindowProfile() {
138
		return WindowInfo.DIALOG_PROFILE;
139
	}
140
}
0 141

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/preparelayer/RasterProjectionActionsPanel.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA  02110-1301, USA.
20
*
21
*/
22
package org.gvsig.raster.reproject.app.preparelayer;
23

  
24
import java.awt.BorderLayout;
25
import java.awt.GridBagConstraints;
26
import java.awt.GridBagLayout;
27

  
28
import javax.swing.ButtonGroup;
29
import javax.swing.JCheckBox;
30
import javax.swing.JLabel;
31
import javax.swing.JPanel;
32
import javax.swing.JRadioButton;
33

  
34
import org.cresques.cts.IProjection;
35

  
36
import org.gvsig.andami.PluginServices;
37
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
38
import org.gvsig.i18n.Messages;
39
import org.gvsig.raster.swing.basepanel.AbstractButtonsPanel;
40
import org.gvsig.raster.swing.basepanel.IButtonsPanel;
41

  
42
/**
43
 * Obtiene el panel con las opciones a realizar con la proyecci?n. Nos ofrece
44
 * las siguientes posibilidades:
45
 * <UL>
46
 * <LI>Cambiar la proyecci?n de la vista</LI>
47
 * <LI>Reproyectar el raster</LI>
48
 * <LI>Ignorar la proyecci?n del raster y cargar</LI>
49
 * <LI>No cargar</LI>
50
 * </UL>
51
 *
52
 * @author Nacho Brodin nachobrodin@gmail.com
53
 */
54
public class RasterProjectionActionsPanel extends AbstractButtonsPanel {
55
	private static final long serialVersionUID = -3868504818382448187L;
56

  
57
	private JPanel        buttonsPanel           = null;
58
	private ButtonGroup   group                  = new ButtonGroup();
59
	private JRadioButton  changeViewProjection   = null;
60
	private JRadioButton  reproject              = null;
61
	private JRadioButton  ignoreRasterProjection = null;
62
	private JRadioButton  notLoad                = null;
63
	private JRadioButton  onTheFly               = null;
64
	private JCheckBox     allfiles               = null;
65
	private boolean       layerIsReprojectable   = true;
66

  
67
    private IProjection viewProj = null;
68

  
69
    private IProjection layerProj = null;
70

  
71

  
72
	/**
73
	 * Constructor. Llama al inicializador de componentes gr?ficos.
74
	 */
75
	public RasterProjectionActionsPanel(boolean layerIsReprojectable, String layerName, int defaultAction) {
76
	    this(layerIsReprojectable, layerName, defaultAction, null, null);
77
	}
78

  
79
	   /**
80
     * Constructor. Llama al inicializador de componentes gr?ficos.
81
     */
82
    public RasterProjectionActionsPanel(boolean layerIsReprojectable, String layerName, int defaultAction, IProjection viewProj, IProjection layerProj) {
83
        super(IButtonsPanel.BUTTONS_ACCEPTCANCEL);
84
        this.layerIsReprojectable = layerIsReprojectable;
85
        this.viewProj = viewProj;
86
        this.layerProj = layerProj;
87
        init(layerName);
88
        setSelection(defaultAction);
89
    }
90

  
91
	/**
92
	 * Inicializaci?n de componentes gr?ficos.
93
	 */
94
	public void init(String lyrName) {
95
		BorderLayout bl = new BorderLayout();
96
		bl.setVgap(5);
97
		setLayout(bl);
98
		String msg = "";
99
		if(this.viewProj!=null && this.layerProj!=null){
100
            msg =
101
                "<html><b>" + lyrName + "</b><BR><BR>" + Messages.getText("dif_proj_with_projections") + "<BR>"
102
                    + Messages.getText("view_proj") + ": " + viewProj.getAbrev() + "<BR>"
103
                    + Messages.getText("layer_proj") + ": " + layerProj.getAbrev() + "</html>";
104
		} else {
105
		    msg = "<html><b>" + lyrName + "</b><BR><BR>" + Messages.getText("dif_proj") + "</html>";
106
		}
107
        add(new JLabel(msg), BorderLayout.NORTH);
108
		add(getButtonsActionPanel(), BorderLayout.CENTER);
109
		add(getCheckOption(), BorderLayout.SOUTH);
110
	}
111

  
112
	/**
113
	 * Obtiene el panel con los botones se selecci?n de opci?n.
114
	 * @return JPanel
115
	 */
116
	private JPanel getButtonsActionPanel() {
117
		if (buttonsPanel == null) {
118
			buttonsPanel = new JPanel();
119
			buttonsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, Messages.getText("proj_options"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
120

  
121
			group.add(getIgnoreRasterProjectionButton());
122
			group.add(getChangeViewProjectionButton());
123
			group.add(getReprojectButton());
124
			group.add(getNotLoadButton());
125
			group.add(getOnTheFlyButton());
126

  
127
			buttonsPanel.setLayout(new GridBagLayout());
128
			GridBagConstraints gbc = new GridBagConstraints();
129
			gbc.insets = new java.awt.Insets(0, 5, 5, 0);
130

  
131
			gbc.gridx = 0;
132
			gbc.gridy = 0;
133
			gbc.weightx = 1;
134
			gbc.anchor = GridBagConstraints.WEST;
135
			buttonsPanel.add(getIgnoreRasterProjectionButton(), gbc);
136

  
137
			gbc.gridy = 1;
138
			buttonsPanel.add(getReprojectButton(), gbc);
139

  
140
			gbc.gridy = 2;
141
			buttonsPanel.add(getChangeViewProjectionButton(), gbc);
142

  
143
			gbc.gridy = 3;
144
			buttonsPanel.add(getNotLoadButton(), gbc);
145

  
146
			gbc.gridy = 4;
147
			buttonsPanel.add(getOnTheFlyButton(), gbc);
148
		}
149
		return buttonsPanel;
150
	}
151

  
152
	/**
153
	 * Obtiene el bot?n de cambio de projecci?n de la vista
154
	 * @return
155
	 */
156
	private JRadioButton getChangeViewProjectionButton() {
157
		if(changeViewProjection == null) {
158
			changeViewProjection = new JRadioButton(Messages.getText("change_view_proj"));
159

  
160
			/*IWindow activeWindow = PluginServices.getMDIManager().getActiveWindow();
161
			if (activeWindow instanceof AbstractViewPanel) {
162
				AbstractViewPanel activeView = (org.gvsig.app.project.documents.view.gui.AbstractViewPanel) activeWindow;
163
				if (activeView.getMapControl().getMapContext().getLayers().getLayersCount() >= 1)
164
					changeViewProjection.setEnabled(false);
165
			}*/
166
		}
167
		return changeViewProjection;
168
	}
169

  
170
	/**
171
	 * Obtiene el bot?n de cambio de reproyecci?n
172
	 * @return
173
	 */
174
	private JRadioButton getReprojectButton() {
175
		if(reproject == null) {
176
			reproject = new JRadioButton(Messages.getText("reproject"));
177
			reproject.setEnabled(layerIsReprojectable);
178
		}
179
		return reproject;
180
	}
181

  
182
	/**
183
	 * Obtiene el bot?n de ignorar la proyecci?n del raster
184
	 * @return
185
	 */
186
	private JRadioButton getIgnoreRasterProjectionButton() {
187
		if(ignoreRasterProjection == null) {
188
			ignoreRasterProjection = new JRadioButton(Messages.getText("ignore_raster_proj"));
189
		}
190
		return ignoreRasterProjection;
191
	}
192

  
193
	/**
194
	 * Obtiene el bot?n de no cargar el raster.
195
	 * @return
196
	 */
197
	private JRadioButton getNotLoadButton() {
198
		if(notLoad == null) {
199
			notLoad = new JRadioButton(Messages.getText("not_load"));
200
		}
201
		return notLoad;
202
	}
203

  
204
	/**
205
	 * Gets the button to reproject on the fly
206
	 * @return
207
	 */
208
	private JRadioButton getOnTheFlyButton() {
209
		if(onTheFly == null) {
210
			onTheFly = new JRadioButton(Messages.getText("reproject_on_the_fly") + " (Not implemented yet)");
211
			onTheFly.setEnabled(false);
212
		}
213
		return onTheFly;
214
	}
215

  
216
	/**
217
	 * Obtiene la selecci?n del panel
218
	 * @return entero con la selecci?n. Esta representada por las constantes de FileOpenRaster.
219
	 */
220
	public int getSelection() {
221
		if (getChangeViewProjectionButton().isSelected())
222
			return RasterDataParameters.REPROJECT_VIEW;
223
		if (getReprojectButton().isSelected())
224
			return RasterDataParameters.REPROJECT_DATA;
225
		if (getIgnoreRasterProjectionButton().isSelected())
226
			return RasterDataParameters.NEW_PROJETION_TO_THE_LAYER;
227
		if (getNotLoadButton().isSelected())
228
			return RasterDataParameters.NOT_LOAD;
229
		if (getOnTheFlyButton().isSelected())
230
			return RasterDataParameters.ON_THE_FLY;
231
		return RasterDataParameters.NEW_PROJETION_TO_THE_LAYER;
232
	}
233

  
234
	/**
235
	 * Asigna una selecci?n de opci?n
236
	 * @param entero con la selecci?n. Esta representada por las constantes de FileOpenRaster.
237
	 */
238
	public void setSelection(int value) {
239
		if (value == RasterDataParameters.NEW_PROJETION_TO_THE_LAYER)
240
			getIgnoreRasterProjectionButton().setSelected(true);
241
		if (value == RasterDataParameters.REPROJECT_DATA)
242
			getReprojectButton().setSelected(true);
243
		if (value == RasterDataParameters.REPROJECT_VIEW)
244
			getChangeViewProjectionButton().setSelected(true);
245
		if (value == RasterDataParameters.NOT_LOAD)
246
			getNotLoadButton().setSelected(true);
247
		if (value == RasterDataParameters.ON_THE_FLY)
248
			getOnTheFlyButton().setSelected(true);
249
	}
250

  
251
	/**
252
	 * Obtiene el check con la opci?n de aplicar a todos los ficheros
253
	 * @return
254
	 */
255
	public JCheckBox getCheckOption() {
256
		if (allfiles == null)
257
			allfiles = new JCheckBox(PluginServices.getText(this, "apply_all"));
258
		return allfiles;
259
	}
260
}
0 261

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/FileNameManagementImpl.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.reproject.app;
23

  
24
import java.util.ArrayList;
25
import java.util.List;
26

  
27
import org.gvsig.fmap.dal.coverage.RasterLocator;
28
import org.gvsig.fmap.dal.coverage.util.FileUtils;
29
import org.gvsig.raster.swing.newlayer.FileNameManagement;
30

  
31
/**
32
 * @author Nacho Brodin (nachobrodin@gmail.com)
33
 */
34
public class FileNameManagementImpl implements FileNameManagement {
35
	private FileUtils fileUtils = RasterLocator.getManager().getFileUtils();
36
	
37
	/*
38
	 * (non-Javadoc)
39
	 * @see org.gvsig.raster.swing.newlayer.FileNameManagement#getDefaultFilePath()
40
	 */
41
	public String getDefaultFilePath() {
42
		return System.getProperty("user.home");
43
	}
44

  
45
	/*
46
	 * (non-Javadoc)
47
	 * @see org.gvsig.raster.swing.newlayer.FileNameManagement#getPrefixSupported()
48
	 */
49
	public List<String> getPrefixSupported() {
50
		List<String> list = new ArrayList<String>();
51
		list.add("tif");
52
		return list;
53
	}
54

  
55
	/*
56
	 * (non-Javadoc)
57
	 * @see org.gvsig.raster.swing.newlayer.FileNameManagement#getUniqueLayerName()
58
	 */
59
	public String getUniqueLayerName() {
60
		return fileUtils.getOnlyLayerName();
61
	}
62

  
63
	/*
64
	 * (non-Javadoc)
65
	 * @see org.gvsig.raster.swing.newlayer.FileNameManagement#usesUniqueLayerName()
66
	 */
67
	public void usesUniqueLayerName() {
68
		fileUtils.usesOnlyLayerName();
69
	}
70

  
71
}
0 72

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/ReprojectionPanelDataModelImpl.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.reproject.app;
23

  
24
import java.awt.geom.Point2D;
25
import java.util.ArrayList;
26
import java.util.List;
27

  
28
import org.cresques.cts.ICoordTrans;
29
import org.cresques.cts.IProjection;
30
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
33
import org.gvsig.fmap.crs.CRSFactory;
34
import org.gvsig.fmap.dal.coverage.RasterLocator;
35
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
36
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
37
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
38
import org.gvsig.fmap.mapcontext.MapContext;
39
import org.gvsig.fmap.mapcontext.layers.FLayers;
40
import org.gvsig.raster.fmap.layers.FLyrRaster;
41
import org.gvsig.raster.reproject.algorithm.ReprojectProcess;
42
import org.gvsig.raster.reproject.algorithm.swing.api.ReprojectionPanelDataModel;
43

  
44
/**
45
 * Data model for the panel of reprojection
46
 * @author Nacho Brodin (nachobrodin@gmail.com)
47
 */
48
public class ReprojectionPanelDataModelImpl implements ReprojectionPanelDataModel {
49
	private double               cellSize                 = 0;
50
	private IProjection          dstProjection            = null;
51
	private IProjection          srcProjection            = null;
52
	private List<String>         interpolationMethodList  = null;
53
	private int                  interpolationMethod      = 0;
54
	private String               layerName                = null;
55
	private int[]                size                     = new int[]{0, 0};
56
	private FLyrRaster           lyr                      = null;
57
	private Extent               newBbox                  = null;
58
	
59
	public ReprojectionPanelDataModelImpl(FLyrRaster lyr) {
60
		this.lyr = lyr;
61
		cellSize = lyr.getDataStore().getCellSize();
62
		try {
63
			srcProjection = lyr.readProjection();
64
		} catch (RasterDriverException e) {
65
			srcProjection = getViewProjection(lyr);
66
		}
67
		if (srcProjection == null) 
68
			srcProjection = getViewProjection(lyr);
69
		if (srcProjection == null)
70
			srcProjection = CRSFactory.getCRS("EPSG:23030");
71

  
72
		dstProjection = srcProjection;
73
		
74
		layerName = lyr.getName();
75
		size = new int[]{(int)lyr.getDataStore().getWidth(), 
76
						 (int)lyr.getDataStore().getHeight()};
77
		
78
		interpolationMethod = -1;
79
		interpolationMethodList = new ArrayList<String>();
80
		for (int i = 0; i < ReprojectProcess.INTERP_METHODS.length; i++) {
81
			interpolationMethodList.add(ReprojectProcess.INTERP_METHODS[i]);
82
		}
83
		//updateValues(lyr.getDataStore());
84
	}
85
	
86
	/**
87
	 * Gets the projection of the view
88
	 * @param lyr
89
	 * @return
90
	 */
91
	private IProjection getViewProjection(FLyrRaster lyr) {
92
		IWindow[] w = PluginServices.getMDIManager().getAllWindows();
93
		for (int i = 0; i < w.length; i++) {
94
			if(w[i] instanceof AbstractViewPanel) {
95
				MapContext mapContext = ((AbstractViewPanel)w[i]).getMapControl().getMapContext();
96
				FLayers lyrs = mapContext.getLayers();
97
				for (int j = 0; j < lyrs.getLayersCount(); j++) {
98
					if(lyrs.getLayer(j) == lyr) {
99
						return ((AbstractViewPanel)w[i]).getProjection();
100
					}
101
				}
102
			}
103
		}
104
		return null;
105
	}
106
	
107
	private void updateValues(RasterDataStore store) {
108
		//      d1x                 d2x
109
		//   ---------           ---------
110
		//   |  p1x  |           |  p2x  |
111
		//d1y|p1y    |        d2y|p2y    |
112
		//   |       |           |       |
113
		//   ---------           ---------
114
		
115
		ICoordTrans transf = srcProjection.getCT(dstProjection);
116
		Extent bbox = store.getExtent();
117
		Point2D ul = new Point2D.Double(bbox.getULX(), bbox.getULY());
118
		Point2D lr = new Point2D.Double(bbox.getLRX(), bbox.getLRY());
119
		if(transf == null)
120
			return;
121
		ul = transf.convert(ul, ul);
122
		lr = transf.convert(lr, lr);
123
		newBbox = RasterLocator.getManager().getDataStructFactory().createExtent(ul, lr);
124
		
125
		//System.out.println("Old BBox: " + bbox.toString());
126
		//System.out.println("New BBox: " + newBbox.toString());
127
		//System.out.println("Old Pixel Size: " + store.getCellSize());
128
		
129
		//double p1x = store.getWidth();
130
		//double p1y = store.getHeight();
131
		//System.out.println("Old WxH: " + p1x + " " + p1y + " --- " + (p1x / p1y) + "  " + (p1y / p1x));
132
		
133
		//long nPixels = (long)(store.getWidth() * store.getHeight());
134
		double sumSideOldBBox = bbox.width() + bbox.height();
135
		double sumSideNewBBox = newBbox.width() + newBbox.height();
136
		double d1x = (bbox.width() * 100) / sumSideOldBBox; 
137
		double d1y = (bbox.height() * 100) / sumSideOldBBox;
138
		double d2x = (newBbox.width() * 100) / sumSideNewBBox;
139
		double d2y = (newBbox.height() * 100) / sumSideNewBBox;
140
		//System.out.println("Old nPixels: " + nPixels);
141
		//System.out.println("d1x: " + d1x + " d1y: " + d1y + " d2x: " + d2x + " d2y: " + d2y);
142
		double p2y = (store.getHeight() * d2y) / d1y;
143
		double p2x = (store.getWidth() * d2x) / d1x;
144
		//long newNPixels = (long)(p2x * p2y);
145
		//System.out.println("New nPixels: " + newNPixels);
146
		//System.out.println("New WxH: " + p2x + " " + p2y + " --- " + (p2x / p2y) + "  " + (p2y / p2x));
147
		double newCellSize = newBbox.width() / p2x;
148
		
149
		size[0] = (int)Math.round(p2x);
150
		size[1] = (int)Math.round(p2y);
151
		cellSize = newCellSize;
152
		//double newCellSizeY = newBbox.height() / p2y;
153
		//System.out.println("New Pixel Size: " + newCellSize + " " + newCellSizeY);
154
	}
155
	
156
	public double getCellSize() {
157
		return cellSize;
158
	}
159

  
160
	public IProjection getDstProjection() {
161
		return dstProjection;
162
	}
163

  
164
	public List<String> getInterpolationMethodList() {
165
		return interpolationMethodList;
166
	}
167

  
168
	public int getInterpolationMethodSelected() {
169
		return interpolationMethod;
170
	}
171

  
172
	public String getLayerName() {
173
		return layerName;
174
	}
175

  
176
	public int[] getSize() {
177
		return size;
178
	}
179

  
180
	public IProjection getSrcProjection() {
181
		return srcProjection;
182
	}
183

  
184
	public void setCellSize(double cellSize) {
185
		this.cellSize = cellSize;
186
		size[0] = (int)(newBbox.width() / cellSize);
187
		size[1] = (int)(newBbox.height() / cellSize);
188
	}
189

  
190
	public void setDstProjection(IProjection dst) {
191
		this.dstProjection = dst;
192
		updateValues(lyr.getDataStore());
193
	}
194
	
195
	public void setSrcProjection(IProjection src) {
196
		this.srcProjection = src;
197
		updateValues(lyr.getDataStore());
198
	}
199

  
200
	public void setInterpolationMethodList(List<String> list) {
201
		this.interpolationMethodList = list;
202
	}
203

  
204
	public void setInterpolationMethodSelected(int method) {
205
		this.interpolationMethod = method;
206
	}
207

  
208
	public void setLayerName(String layerName) {
209
		this.layerName = layerName;
210
	}
211

  
212
	public void setSize(int w, int h) {
213
		this.size = new int[]{w, h};
214
	}
215
}
0 216

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/ReprojectListener.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.reproject.app;
23

  
24
import java.awt.Component;
25
import java.awt.event.ActionEvent;
26
import java.awt.event.ActionListener;
27
import java.io.File;
28
import java.util.HashMap;
29

  
30
import javax.swing.JOptionPane;
31

  
32
import org.cresques.cts.IProjection;
33
import org.gvsig.andami.PluginServices;
34
import org.gvsig.andami.ui.mdiManager.IWindow;
35
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
36
import org.gvsig.fmap.mapcontext.layers.FLayer;
37
import org.gvsig.fmap.mapcontext.layers.FLayers;
38
import org.gvsig.i18n.Messages;
39
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
40
import org.gvsig.raster.algorithm.process.DataProcess;
41
import org.gvsig.raster.algorithm.process.IProcessActions;
42
import org.gvsig.raster.algorithm.process.ProcessException;
43
import org.gvsig.raster.fmap.layers.FLyrRaster;
44
import org.gvsig.raster.mainplugin.RasterMainPluginUtils;
45
import org.gvsig.raster.reproject.algorithm.ReprojectProcess;
46
import org.gvsig.raster.reproject.algorithm.swing.api.RasterReprojectionPanel;
47
import org.gvsig.raster.reproject.algorithm.swing.api.ReprojectionPanelDataModel;
48
import org.gvsig.raster.swing.RasterSwingLibrary;
49
import org.gvsig.raster.swing.RasterSwingLocator;
50
import org.gvsig.raster.util.RasterNotLoadException;
51

  
52

  
53
/**
54
 * Actions for the reprojection panel
55
 * 
56
 * @author Nacho Brodin (nachobrodin@gmail.com)
57
 */
58
public class ReprojectListener implements ActionListener, IProcessActions {
59
	private RasterReprojectionPanel            reprojectPanel   = null;
60
	private FLayer                             lyr              = null;
61
	private ReprojectionPanelDataModel         dataModel        = null;
62
	private ReprojectWindow                    window           = null;
63

  
64
	public ReprojectListener(FLayer lyr, ReprojectionPanelDataModel dataModel, ReprojectWindow window, RasterReprojectionPanel reprojectPanel) {
65
		this.lyr = lyr;
66
		this.dataModel = dataModel;
67
		this.window = window;
68
		this.reprojectPanel = reprojectPanel;
69
	}
70

  
71
	public void actionPerformed(ActionEvent e) {
72
		if(reprojectPanel.getObjectSelected(e.getSource()) == RasterReprojectionPanel.BUTTON_ACCEPT) {
73
			double cellsize = dataModel.getCellSize();
74
			int w = dataModel.getSize()[0];
75
			int h = dataModel.getSize()[1];
76
			IProjection srcPrj = dataModel.getSrcProjection();
77
			IProjection dstPrj = dataModel.getDstProjection();
78
			
79
			if(cellsize <= 0 || w <= 0 || h <= 0) {
80
				messageBoxError("wrong_size");
81
				return;
82
			}
83
			
84
			if(srcPrj == null || dstPrj == null) {
85
				messageBoxError("wrong_projection");
86
				return;
87
			}
88
			
89
			DataProcess process;
90
			try {
91
				process = RasterBaseAlgorithmLibrary.getManager().createRasterTask("RasterReprojectionProcess");
92
			} catch (ProcessException e1) {
93
				messageBoxError("error_creating_algorithm");
94
				return;
95
			}
96
			
97
			String path = getPath();
98
			if(path == null)
99
				return;
100
			
101
			process.setActions(this);
102
			process.addParam(ReprojectProcess.RASTER_STORE, ((FLyrRaster)lyr).getDataStore());
103
			process.addParam(ReprojectProcess.SIZEX, w);
104
			process.addParam(ReprojectProcess.SIZEY, h);
105
			process.addParam(ReprojectProcess.PATH, path);
106
			process.addParam(ReprojectProcess.SRC_PROJECTION, dataModel.getSrcProjection());
107
			process.addParam(ReprojectProcess.DST_PROJECTION, dataModel.getDstProjection());
108
			process.addParam(ReprojectProcess.CELLSIZE, dataModel.getCellSize());
109
			process.addParam(ReprojectProcess.INTERPOLATION, dataModel.getInterpolationMethodSelected());
110
			process.start();
111
			
112
		}
113
		if(reprojectPanel.getObjectSelected(e.getSource()) == RasterReprojectionPanel.BUTTON_CANCEL) {
114
			if(window != null) {
115
				PluginServices.getMDIManager().closeWindow(window);
116
				window = null;
117
			}
118
		}
119
	}
120
	
121
	/**
122
	 * Gets the path to the file
123
	 * @return
124
	 */
125
	private String getPath() {
126
		String file = reprojectPanel.getFileSelected();
127
		if(file == null || file.equals("") || !file.matches("[a-zA-Z0-9_]*")) {
128
			messageBoxError(
129
					Messages.getText("file_name_not_valid") + 
130
					"\n" + file + "\n " + 
131
					Messages.getText("valid_characters") + 
132
					" a-zA-Z0-9_");
133
			return null;
134
		}
135
		
136
		if(!file.endsWith(".tif"))
137
			file += ".tif";
138
		String dir = reprojectPanel.getDirectorySelected();
139
		if(!new File(dir).exists()) {
140
			messageBoxError("directory_does_not_exists");
141
			return null;
142
		}
143
		
144
		if(new File(dir + File.separator + file).exists()) {
145
			if(!RasterSwingLibrary.messageBoxYesOrNot(
146
					Messages.getText("file_exists") + 
147
					"\n " + (dir + File.separator + file) + "\n " + 
148
					Messages.getText("overwrite"), null))
149
			return null;
150
		}
151
		return (dir + File.separator + file);
152
	}
153
	
154
	/**
155
	 * Shows an error dialog with a text and a accept button 
156
	 * @param msg Message to show in the dialog
157
	 * @param parentWindow Parent window
158
	 */
159
	public static void messageBoxError(String msg) {
160
		String string = Messages.getText("accept");
161
		Object[] options = {string};
162
		JOptionPane.showOptionDialog((Component)PluginServices.getMainFrame(),
163
					"<html>" + Messages.getText(msg).replaceAll("\n", "<br>") + "</html>",
164
					Messages.getText("confirmacion"),
165
					JOptionPane.OK_OPTION,
166
					JOptionPane.ERROR_MESSAGE,
167
					null,
168
					options,
169
					string);
170
	}
171

  
172
	@SuppressWarnings("unchecked")
173
	public void end(Object params) {
174
		if(window != null) {
175
			PluginServices.getMDIManager().closeWindow(window);
176
			window = null;
177
		}
178
		if(params instanceof HashMap<?, ?>) {
179
			HashMap<String, Object>  map = (HashMap<String, Object>) params;
180
			String fName = (String)map.get(ReprojectProcess.FILENAME);
181
			long milis = (Long)map.get(ReprojectProcess.TIME);
182
			processFinalize(fName, milis);
183
			RasterSwingLocator.getSwingManager().showSummaryProcessDialog(fName, milis);
184
		}
185

  
186
	}
187
	
188
	/**
189
	 * Acciones que se realizan al finalizar de crear los recortes de imagen.
190
	 * Este m?todo es llamado por el thread TailRasterProcess al finalizar.
191
	 */
192
	private void processFinalize(String fileName, long milis) {
193
		if (!new File(fileName).exists())
194
			return;
195

  
196
		String viewName = getViewName();
197
		if(viewName != null) {
198
			if (RasterSwingLibrary.messageBoxYesOrNot("cargar_toc", null)) {
199
				try {
200
					RasterMainPluginUtils.loadLayer(viewName, fileName, null);
201
				} catch (RasterNotLoadException e) {
202
					messageBoxError("error_load_layer");
203
				}
204
			}
205
		}
206
	}
207
	
208
	/**
209
	 * Gets the view 
210
	 * @return
211
	 */
212
	private String getViewName() {
213
		IWindow[] w = PluginServices.getMDIManager().getAllWindows();
214
		for (int i = 0; i < w.length; i++) {
215
			if(w[i] instanceof AbstractViewPanel) {
216
				FLayers lyrs = ((AbstractViewPanel)w[i]).getMapControl().getMapContext().getLayers();
217
				for (int j = 0; j < lyrs.getLayersCount(); j++) {
218
					FLayer lyr = lyrs.getLayer(j);
219
					if(this.lyr == lyr) {
220
						return PluginServices.getMDIManager().getWindowInfo((AbstractViewPanel) w[i]).getTitle();
221
					}
222
				}
223
			}
224
		}
225
		return null;
226
	}
227

  
228
	public void interrupted() {
229
		
230
	}
231
	
232
	public void updateProgress(int current, int total) {
233
		
234
	}
235
}
0 236

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/ReprojectWindow.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2011-2012 Prodevelop S.L
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 */
21
package org.gvsig.raster.reproject.app;
22

  
23
import java.awt.BorderLayout;
24

  
25
import javax.swing.JComponent;
26
import javax.swing.JPanel;
27

  
28
import org.gvsig.andami.ui.mdiManager.IWindow;
29
import org.gvsig.andami.ui.mdiManager.WindowInfo;
30

  
31

  
32
/**
33
 * @author Nacho Brodin (nachobrodin@gmail.com)
34
 */
35
public class ReprojectWindow extends JPanel implements IWindow {
36
    
37
    private static final long serialVersionUID = -4401123724140025094L;
38

  
39
    private WindowInfo info;
40

  
41
    private Object profile = WindowInfo.EDITOR_PROFILE;
42

  
43
    public ReprojectWindow(JComponent panel, String title, int w, int h) {
44
        this.setLayout(new BorderLayout());
45
        add(panel, BorderLayout.CENTER);
46

  
47
        info = new WindowInfo(WindowInfo.PALETTE | WindowInfo.RESIZABLE);
48
        info.setTitle(title);
49
        info.setWidth(w);
50
        info.setHeight(h);
51
    }
52

  
53
    public WindowInfo getWindowInfo() {
54
        return info;
55
    }
56

  
57
    public Object getWindowProfile() {
58
        return profile;
59
    }
60
}
0 61

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/app/toolbox/ReprojectToolboxAction.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.reproject.app.toolbox;
27

  
28
import javax.swing.ImageIcon;
29

  
30
import org.gvsig.andami.IconThemeHelper;
31
import org.gvsig.fmap.mapcontext.layers.FLayer;
32
import org.gvsig.geoprocess.sextante.gui.core.GUIFactory;
33
import org.gvsig.i18n.Messages;
34
import org.gvsig.raster.reproject.app.ReprojectTocMenuEntry;
35

  
36
/**
37
 * Input in Sextante framework for Principal Components tool
38
 * 
39
 * @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a>
40
 */
41
public class ReprojectToolboxAction extends AbstractToolboxAction {
42
	
43
	public ReprojectToolboxAction() {
44
		ImageIcon ico = IconThemeHelper.getImageIcon("gvsig-icon16x16");
45
		GUIFactory.registerExternalTool(Messages.getText("gv_tools"), ico, this);
46
	}
47
	
48
	@Override
49
	public void execute() {
50
		if(!super.loadLayer())
51
			return;
52
		ReprojectTocMenuEntry.getSingleton().execute(null, new FLayer[]{lyr}); 
53
	}
54

  
55
	@Override
56
	public String getName() {
57
		return Messages.getText("reproject_layer");
58
	}
59

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

  
org.gvsig.raster.reproject/tags/org.gvsig.raster.reproject-2.2.50/org.gvsig.raster.reproject.app.reprojectclient/src/main/java/org/gvsig/raster/reproject/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.reproject.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
	 * @return Returns true if the plugin which gives the functionality is installed
72
     * in gvSIG
73
	 */
74
	public abstract boolean isPluginInstalled();
75

  
76
	/**
77
	 * Loads the raster layer for the tool
78
	 * @return true if layer load is successfully, otherwise fasle
79
	 */
80
	public boolean loadLayer() {
81
		if(!isPluginInstalled()) {
82
			RasterSwingLibrary.messageBoxError(Messages.getText("plugin_not_installed"), null);
83
			return false;
84
		}
85

  
86
		if(!isActive()) {
87
			RasterSwingLibrary.messageBoxError(Messages.getText("layer_not_valid"), null);
88
			return false;
89
		}
90

  
91
		boolean existsRasterButNotActive = false;
92
		lyr = null;
93
		IWindow[] windows = PluginServices.getMDIManager().getOrderedWindows();
94
		MapContext mapCtx = null;
95
		for (int i = 0; i < windows.length; i++) {
96
			if(windows[i] instanceof AbstractViewPanel) {
97
				mapCtx = ((AbstractViewPanel)windows[i]).getMapControl().getMapContext();
98
				break;
99
			}
100
		}
101

  
102
		IRasterLayer[] layers = SextanteGUI.getInputFactory().getRasterLayers();
103
		for (int i = 0; i < layers.length; i++) {
104
			FLyrRaster l = (FLyrRaster)((FLyrRasterIRasterLayer)layers[i]).getBaseDataObject();
105
			existsRasterButNotActive = true;
106
			if(l.isActive() && mapCtx == l.getMapContext()) {
107
				existsRasterButNotActive = false;
108
				lyr = l;
109
				break;
110
			}
111
		}
112

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

  
118
		return true;
119
	}
120

  
121
}
0 122

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

  
18
	public void registerTool() {
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff