Revision 2193 org.gvsig.raster.mosaic/trunk/org.gvsig.raster.mosaic/org.gvsig.raster.mosaic.swing/org.gvsig.raster.mosaic.swing.impl/src/main/java/org/gvsig/raster/mosaic/swing/impl/main/AddFilesPanelImpl.java

View differences:

AddFilesPanelImpl.java
26 26
import javax.swing.table.TableColumnModel;
27 27

  
28 28
import org.gvsig.andami.IconThemeHelper;
29
import org.gvsig.fmap.dal.DALLocator;
30
import org.gvsig.fmap.dal.DataServerExplorer;
31
import org.gvsig.fmap.dal.DataServerExplorerParameters;
32
import org.gvsig.fmap.dal.coverage.RasterLocator;
29 33
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
34
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
35
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
36
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
37
import org.gvsig.fmap.dal.exception.InitializeException;
38
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
39
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
40
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
30 41
import org.gvsig.gui.beans.swing.JFileChooser;
31 42
import org.gvsig.i18n.Messages;
43
import org.gvsig.raster.impl.provider.RasterProvider;
44
import org.gvsig.raster.mosaic.io.MosaicDataParameters;
45
import org.gvsig.raster.mosaic.io.MosaicProvider;
32 46
import org.gvsig.raster.mosaic.swing.main.AddFilesEvent;
33 47
import org.gvsig.raster.mosaic.swing.main.AddFilesListener;
34 48
import org.gvsig.raster.mosaic.swing.main.AddFilesPanel;
49
import org.gvsig.tools.locator.LocatorException;
50
import org.slf4j.Logger;
51
import org.slf4j.LoggerFactory;
35 52

  
36 53
/**
37 54
 * Main panel to add files in a mosaic
......
41 58
	private static final long            serialVersionUID       = 1L;
42 59
	private String                       pathToImagesForTest    = "/src/main/resources/images/";
43 60
	private String                       lastFolder             = System.getProperty("user.home");
61
	private Logger                       log                    = LoggerFactory.getLogger(AddFilesPanelImpl.class);
44 62
	
45 63
	private final String                 BYTE                   = "Byte";
46 64
	private final String                 SHORT                  = "Short";
......
80 98
	
81 99
	private AddFilesListener             listener               = null;
82 100
	private List<String>                 suffixList             = null;
101
	private String                       file                   = null;
102
	private String                       folder                 = null;
83 103
	
84
	public AddFilesPanelImpl(List<String> suffixList) {
104
	public AddFilesPanelImpl(String file, String folder, List<String> suffixList) {
85 105
		columnNames = new String[]{ Messages.getText("bands"), Messages.getText("file")};
86 106
		entriesSrc = new ArrayList<TableEntry>();
87 107
		entriesDst = new ArrayList<TableEntry>();
88 108
		this.suffixList = suffixList;
109
		this.file = file;
110
		this.folder = folder;
89 111
		initialize();
90 112
	}
91 113
	
92
	public AddFilesPanelImpl(String[] suffixList) {
114
	public AddFilesPanelImpl(String file, String folder, String[] suffixList) {
93 115
		columnNames = new String[]{ Messages.getText("bands"), Messages.getText("file")};
94 116
		entriesSrc = new ArrayList<TableEntry>();
95 117
		entriesDst = new ArrayList<TableEntry>();
96 118
		this.suffixList = Arrays.asList(suffixList);
119
		this.file = file;
120
		this.folder = folder;
97 121
		initialize();
98 122
	}
99 123
	
......
102 126
		String text  = null;
103 127
		int bandCount = 0;
104 128
		int dataType = 0;
129
		double cellsize = 0;
105 130
		
106
		public TableEntry(String text, Object obj, int bandCount, int dataType) {
131
		public TableEntry(String text, Object obj, int bandCount, int dataType, double cellsize) {
107 132
			this.obj = obj;
108 133
			this.text = text;
109 134
			this.bandCount = bandCount;
110 135
			this.dataType = dataType;
136
			this.cellsize = cellsize;
111 137
		}
112 138
		
113 139
		public String toString() {
......
118 144
	//*******************************************************
119 145
	//***************API Implementation**********************
120 146
	
121
	public void addSrcFile(Object data, String text, int nBands, int datatype) {
122
		TableEntry entry = new TableEntry(text, data, nBands, datatype);
147
	public void addSrcFile(Object data, String text, int nBands, int datatype, double cellsize) {
148
		TableEntry entry = new TableEntry(text, data, nBands, datatype, cellsize);
123 149
		entriesSrc.add(entry);
124 150
		updateUISrcTable();
125 151
	}
126 152
	
127
	public void addDstFile(Object data, String text, int nBands, int datatype) {
128
		TableEntry entry = new TableEntry(text, data, nBands, datatype);
153
	public void addDstFile(Object data, String text, int nBands, int datatype, double cellsize) {
154
		TableEntry entry = new TableEntry(text, data, nBands, datatype, cellsize);
129 155
		entriesDst.add(entry);
130 156
		updateUIDstTable();
131 157
	}
......
163 189
	}
164 190
	
165 191
	private void updateOutputNumBands() {
166
		if(entriesDst.size() == 0) {
167
			setUIOutputNumBands(0);
192
		setUIOutputNumBands(0);
193
		
194
		if(entriesDst.size() <= 0)
168 195
			return;
169
		}
170 196
		
171
		for (int i = 0; i < entriesDst.size(); i++) {
172
			int currentOutputBands = getOutputNumBands();
173
			if(entriesDst.get(i).bandCount > currentOutputBands)
174
				setUIOutputNumBands(entriesDst.get(i).bandCount);
197
		int currentOutputBands = entriesDst.get(0).bandCount;
198
		
199
		for (int i = 1; i < entriesDst.size(); i++) {
200
			int bandCount = entriesDst.get(i).bandCount;
201
			if(bandCount > currentOutputBands) 
202
				currentOutputBands = bandCount;
175 203
		}
176 204
		
205
		setUIOutputNumBands(currentOutputBands);
177 206
		enableUIRGBOutput();
178 207
	}
179 208
	
......
260 289
		getNbandsJComboBox().setSelectedIndex(getNbandsJComboBox().getItemCount() - 1);
261 290
	}
262 291
	
263
	private int getOutputNumBands() {
292
	private int getUIOutputNumBands() {
264 293
		String value = (String)getNbandsJComboBox().getSelectedItem();
265 294
		try {
266 295
			return Integer.valueOf(value);
......
270 299
	}
271 300
	
272 301
	private void enableUIRGBOutput() {
273
		int outputNumBands = getOutputNumBands();
302
		int outputNumBands = getUIOutputNumBands();
274 303
		boolean enable = outputNumBands >= 3;
275 304
		
276 305
		getRGBOutputCheckBox().setEnabled(enable);
......
611 640
		if(e.getSource() == getUpArrowButton()) {
612 641
			int[] rows = getFileListDst().getSelectedRows();
613 642
			
614
			for (int i = 0; i < rows.length; i++) {
643
			for (int i = rows.length - 1; i >= 0; i--) {
615 644
				TableEntry entry = entriesDst.remove(rows[i]);
616 645
				entriesSrc.add(entry);
617 646
			}
......
681 710
		}
682 711
		return fileChooser;
683 712
	}
713
	
714
	public Object getResult() {
715
		try {
716
			DataManagerProviderServices dataManager = (DataManagerProviderServices)DALLocator.getDataManager();
717
			DataServerExplorerParameters explParams = dataManager.createServerExplorerParameters(MosaicProvider.NAME);
718
			DataServerExplorer explorer = dataManager.openServerExplorer(MosaicProvider.NAME, explParams);
719
			MosaicDataParameters newParamsMosaic = (MosaicDataParameters)dataManager.createStoreParameters(explorer.getProviderName());
720
			
721
			newParamsMosaic.setURI(folder + File.separator + file);
722
			newParamsMosaic.setPixelSize(getMinPixelSize());
723
			
724
			for (int i = 0; i < entriesDst.size(); i++) {
725
				RasterDataStore store = (RasterDataStore)entriesDst.get(i).obj;
726
				RasterProvider prov = (RasterProvider)store.getProvider();
727
				if(prov != null)
728
					newParamsMosaic.addProvider(prov);
729
			}
730
			
731
			MosaicProvider provider = (MosaicProvider)dataManager.createProvider(null, newParamsMosaic);
732
			return RasterLocator.getManager().getProviderServices().open(provider, provider.getDataStoreParameters());
733
		} catch(ValidateDataParametersException e) {
734
			log.debug("Error validating parameters", e);
735
		} catch (InitializeException e) {
736
			log.debug("Error initializating Mosaic Store", e);
737
		} catch (ProviderNotRegisteredException e) {
738
			log.debug("Error looking for the provider", e);
739
		} catch (RasterDriverException e) {
740
			log.debug("Error creating the Store", e);
741
		} catch (LocatorException e) {
742
			log.debug("Error creating the Store", e);
743
		} catch (NotSupportedExtensionException e) {
744
			log.debug("Error creating the Store", e);
745
		} 
746
		
747
		return null;
748
	}
749
	
750
	private double getMinPixelSize() {
751
		double cellsize = Integer.MAX_VALUE;
752
		for (int i = 0; i < entriesDst.size(); i++) {
753
			if(entriesDst.get(i).cellsize < cellsize)
754
				cellsize = entriesDst.get(i).cellsize;
755
		}
756
		return cellsize;
757
	}
684 758
}

Also available in: Unified diff