Revision: 6491
http://sourceforge.net/p/jump-pilot/code/6491
Author: ma15569
Date: 2020-09-17 04:35:01 +0000 (Thu, 17 Sep 2020)
Log Message:
-----------
Extended save option to tif file
Modified Paths:
--------------
core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java
Modified:
core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java
===================================================================
--- core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java
2020-09-17 04:32:14 UTC (rev 6490)
+++ core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java
2020-09-17 04:35:01 UTC (rev 6491)
@@ -34,37 +34,56 @@
package org.openjump.core.ui.plugin.raster;
import java.awt.BasicStroke;
+import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dialog;
import java.awt.Dimension;
+import java.awt.FlowLayout;
import java.awt.Image;
+import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Window;
+import java.awt.event.ActionEvent;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
import java.awt.geom.NoninvertibleTransformException;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.awt.image.IndexColorModel;
import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.io.File;
import java.io.IOException;
import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
+import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import org.openjump.core.CheckOS;
+import org.openjump.core.apitools.IOTools;
+import org.openjump.core.rasterimage.RasterImageIO;
import org.openjump.core.rasterimage.RasterImageLayer;
import
org.openjump.core.rasterimage.RasterImageLayer.RasterDataNotFoundException;
+import org.openjump.core.ui.io.file.FileNameExtensionFilter;
+import com.sun.media.jai.codecimpl.util.RasterFactory;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jump.I18N;
+import com.vividsolutions.jump.util.FileUtil;
+import com.vividsolutions.jump.workbench.JUMPWorkbench;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.model.FenceLayerFinder;
import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
+import com.vividsolutions.jump.workbench.ui.GUIUtil;
import com.vividsolutions.jump.workbench.ui.JTablePanel;
import com.vividsolutions.jump.workbench.ui.cursortool.RectangleTool;
import com.vividsolutions.jump.workbench.ui.images.IconLoader;
@@ -185,7 +204,8 @@
DefaultTableModel tableModel = new DefaultTableModel(data,
columnNames);
final JTablePanel jTablePanel = new JTablePanel(tableModel);
- jTablePanel.getCommandPanel().removeAll();
+ // jTablePanel.getCommandPanel().removeAll();
+ jTablePanel.getAllComponetsExceptTable().removeAll();
jTablePanel.getTable().setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jTablePanel.getTable().setTableHeader(null);
@@ -202,12 +222,127 @@
}
}
});
+ JPanel pan = new JPanel(new BorderLayout());
-
- jTablePanel.setPreferredSize(new Dimension(400,300));
-
-
- JOptionPane.showOptionDialog(null, jTablePanel,
I18N.get("org.openjump.core.ui.plugin.raster.RasterQueryPlugIn"),
JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE, null,
- new Object[]{}, null);
+ pan.setPreferredSize(new Dimension(400,300));
+ pan.add(jTablePanel, BorderLayout.CENTER);
+ pan.add( savePanel(jTablePanel.getTable()), BorderLayout.SOUTH);
+
+
+ JOptionPane.showOptionDialog(null, pan,
I18N.get("org.openjump.core.ui.plugin.raster.RasterQueryPlugIn"),
JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE, null,
+ new Object[]{}, null);
}
+ private JPanel savePanel(JTable jTable) {
+ final JPanel save = new JPanel();
+ save.setLayout(new FlowLayout(FlowLayout.RIGHT));
+ final JButton saveButton = new JButton(
+ I18N.get("deejump.plugin.SaveLegendPlugIn.Save"));
+ saveButton.addActionListener(new java.awt.event.ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ try {
+ File file = null;
+ final FileNameExtensionFilter filter2 = new
FileNameExtensionFilter(
+ "Comma-Separated Values (csv)", "csv");
+ final FileNameExtensionFilter filter3 = new
FileNameExtensionFilter(
+ "Tagged Image Format", "tif");
+ final JFileChooser fc = new
GUIUtil.FileChooserWithOverwritePrompting();
+
+ fc.setFileFilter(filter3);
+ fc.setFileFilter(filter2);
+ fc.addChoosableFileFilter(filter2);
+ final int returnVal = fc.showSaveDialog(JUMPWorkbench
+ .getInstance().getFrame());
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
+ if (fc.getFileFilter().equals(filter2)) {
+ file = new File(fc.getSelectedFile() + ".csv");
+ FileUtil.addExtensionIfNone(file, "csv");
+ IOTools.saveCSV(jTable, file.getAbsolutePath());
+ saved(file);
+ } else if (fc.getFileFilter().equals(filter3)) {
+ file = new File(fc.getSelectedFile() + ".tif");
+ FileUtil.addExtensionIfNone(file, "tif");
+
+ Envelope envWanted =
getRectangle().getEnvelopeInternal();
+ Rectangle subset =
rLayer.getRectangleFromEnvelope(envWanted);
+ Raster raster = rLayer.getRasterData(subset);
+ if (rLayer.getImage().getColorModel() instanceof
IndexColorModel) {
+ IndexColorModel indexColorModel =
(IndexColorModel) rLayer
+ .getImage().getColorModel();
+ DataBuffer dataBufferIn =
raster.getDataBuffer();
+ DataBufferByte dataBufferOut = new
DataBufferByte(subset.width
+ * subset.height * 3, 3);
+ int index = 0;
+ int nCells = subset.height * subset.width;
+ for (int r = 0; r < subset.height; r++) {
+ for (int c = 0; c < subset.width; c++) {
+ int value =
dataBufferIn.getElem(index);
+ dataBufferOut.setElem(0, index,
+
indexColorModel.getRed(value));
+ dataBufferOut.setElem(1, index +
nCells,
+
indexColorModel.getGreen(value));
+ dataBufferOut.setElem(2, index +
nCells * 2,
+
indexColorModel.getBlue(value));
+ index++;
+ }
+ }
+
+ int[] bankIndices = new int[3];
+ bankIndices[0] = 0;
+ bankIndices[1] = 1;
+ bankIndices[2] = 2;
+
+ int[] bandOffsets = new int[3];
+ bandOffsets[0] = 0;
+ bandOffsets[1] = raster.getWidth() *
raster.getHeight();
+ bandOffsets[2] = 2 * raster.getWidth() *
raster.getHeight();
+
+ WritableRaster wRaster =
RasterFactory.createBandedRaster(
+ dataBufferOut, raster.getWidth(),
raster.getHeight(),
+ raster.getWidth(), bankIndices,
bandOffsets,
+ new Point(0, 0));
+ raster = wRaster;
+ }
+
+ RasterImageIO rasterImageIO = new RasterImageIO();
+
+ rasterImageIO.writeImage(file , raster, envWanted,
+ rasterImageIO.new
CellSizeXY(rLayer.getMetadata()
+ .getOriginalCellSize(),
rLayer.getMetadata()
+ .getOriginalCellSize()),
rLayer.getMetadata()
+ .getNoDataValue());
+
+ saved(file);
+
+ }
+
+ }
+
+ } catch (final Exception ex) {
+ notsaved();
+ }
+
+ }
+ });
+ save.add(saveButton);
+ return save;
+ }
+
+ protected void saved(File file) {
+ JUMPWorkbench.getInstance().getFrame()
+ .setStatusMessage(sSaved + " :" + file.getAbsolutePath());
+ }
+
+ protected void notsaved() {
+ JUMPWorkbench.getInstance().getFrame().warnUser(SCouldNotSave);
+
+ }
+
+
+
+ private final String sSaved = I18N
+
.get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.file.saved");
+ private final String SCouldNotSave = I18N
+
.get("org.openjump.sextante.gui.additionalResults.AdditionalResultsPlugIn.Could-not-save-selected-result");
+
}
\ No newline at end of file
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel