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
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