Revision: 6479
          http://sourceforge.net/p/jump-pilot/code/6479
Author:   ma15569
Date:     2020-09-15 10:12:10 +0000 (Tue, 15 Sep 2020)
Log Message:
-----------
Test drag operation to retive a set of values

Modified Paths:
--------------
    core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java

Added Paths:
-----------
    core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java

Added: 
core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java
===================================================================
--- core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java  
                        (rev 0)
+++ core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java  
2020-09-15 10:12:10 UTC (rev 6479)
@@ -0,0 +1,316 @@
+/*
+ * The Unified Mapping Platform (JUMP) is an extensible, interactive GUI 
+ * for visualizing and manipulating spatial features with geometry and 
attributes.
+ *
+ * JUMP is Copyright (C) 2003 Vivid Solutions
+ *
+ * This program implements extensions to JUMP and is
+ * Copyright (C) 2004 Integrated Systems Analysts, Inc.
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ * 
+ * For more information, contact:
+ *
+ * Integrated Systems Analysts, Inc.
+ * 630C Anchors St., Suite 101
+ * Fort Walton Beach, Florida
+ * USA
+ *
+ * (850)862-7321
+ */
+
+package org.openjump.core.ui.plugin.raster;
+
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.Image;
+import java.awt.Rectangle;
+import java.awt.Window;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.HierarchyListener;
+import java.awt.event.MouseEvent;
+import java.awt.geom.NoninvertibleTransformException;
+import java.awt.image.Raster;
+import java.io.IOException;
+
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+import javax.swing.JTable;
+import javax.swing.SwingUtilities;
+import javax.swing.table.DefaultTableModel;
+
+import org.openjump.core.CheckOS;
+import org.openjump.core.rasterimage.RasterImageLayer;
+import 
org.openjump.core.rasterimage.RasterImageLayer.RasterDataNotFoundException;
+
+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.workbench.WorkbenchContext;
+import com.vividsolutions.jump.workbench.model.FenceLayerFinder;
+import com.vividsolutions.jump.workbench.model.Layerable;
+import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
+import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
+import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import com.vividsolutions.jump.workbench.ui.JTablePanel;
+import com.vividsolutions.jump.workbench.ui.LayerNamePanel;
+import com.vividsolutions.jump.workbench.ui.cursortool.RectangleTool;
+import com.vividsolutions.jump.workbench.ui.images.IconLoader;
+
+public class RasterQueryDragTool extends RectangleTool {
+
+    /*
+     * [2013_05_27] Giuseppe Aruta Simple plugin that allows to inspect raster
+     * cell value for DTM ver 0.1 2013_05_27
+     * 
+     * [2014_01_24] Giuseppe Aruta - Extended inspection to multiband raster
+     * layers. Now multiple measure are displayed (and saved) by default. Press
+     * SHIFT to display only last measure. Moving cursor on image shows raster
+     * cell value on lower panel
+     * 
+     * [2014_02_24] Giuseppe Aruta - Fixed minor bug on lower panel 
[2015_07_08]
+     * Giuseppe Aruta - Fixed bug #407 Sextante raster : displaying cell values
+     * throws NPE
+     */
+
+    protected Coordinate tentativeCoordinate;
+    public static final String LAYER_NAME = I18N
+            
.get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.cell.values");
+    public static final String LAYER = I18N
+            
.get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.layer");
+    private final static String RASTER_NODATA = I18N
+            
.get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.cell.nodata");
+    private String lastClick = "-";
+    // protected int width, height; // The dimensions of the image
+
+    private String VALUE = I18N
+            .get("org.openjump.core.ui.plugin.raster.RasterQueryPlugIn.value");
+    private String name;
+    PlugInContext context;
+    LayerNamePanel namePanel;
+    RasterImageLayer rLayer;
+
+    public RasterQueryDragTool() {
+        setColor(Color.magenta);
+
+    }
+
+    @Override
+    public Icon getIcon() {
+        return IconLoader.icon("information_16x16.png");
+    }
+
+    @Override
+    public Cursor getCursor() {
+        // [ede 03.2103] linux currently support only 2 color cursors
+        Image i = !CheckOS.isLinux() ? IconLoader
+                .image("information_cursor.png") : IconLoader
+                .image("information_cursor_2color.gif");
+        return createCursor(i);
+    }
+
+    @Override
+    protected void gestureFinished() throws NoninvertibleTransformException,
+            IOException, RasterDataNotFoundException {
+        reportNothingToUndoYet();
+
+       
+
+        final WorkbenchContext wbcontext = this.getWorkbench().getContext();
+        @SuppressWarnings("unchecked")
+               RasterImageLayer[] ls = (RasterImageLayer[]) 
wbcontext.getLayerableNamePanel()
+                .selectedNodes(RasterImageLayer.class)
+                .toArray(new RasterImageLayer[] {});
+                
+        if (ls != null && ls.length > 0) {
+               rLayer = ls[0];
+               
+               reportNothingToUndoYet();
+
+            //Don't want viewport to change at this stage. [Jon Aquino]
+            getPanel().setViewportInitialized(true);
+
+            FenceLayerFinder fenceLayerFinder = new 
FenceLayerFinder(getPanel());
+            fenceLayerFinder.setFence(getRectangle());
+
+            if (!fenceLayerFinder.getLayer().isVisible()) {
+                fenceLayerFinder.getLayer().setVisible(true);
+            }
+               
+            printArray(rLayer, getRectangle());
+        }      
+
+    }
+ 
+  
+
+    public MultiEnableCheck createEnableCheck(
+            final WorkbenchContext workbenchContext) {
+        EnableCheckFactory checkFactory = new EnableCheckFactory(
+                workbenchContext);
+        /*
+         * Works only with one selected RasterImageLayer
+         */
+        return new MultiEnableCheck()
+                .add(checkFactory
+                        .createWindowWithLayerNamePanelMustBeActiveCheck())
+                .add(checkFactory
+                        .createWindowWithLayerViewPanelMustBeActiveCheck())
+                .add(checkFactory.createExactlyNLayerablesMustBeSelectedCheck(
+                        1, RasterImageLayer.class));
+
+    }
+
+     
+    
+    /*
+     * Displays cell values on system bar while moving cursor on the raster
+     */
+    PlugInContext gContext;
+
+   
+    
+    public double cellValue(MouseEvent me,RasterImageLayer layer,Coordinate 
coordinate, int band) {
+       double value =0.0D;
+       try {
+       value=  layer.getCellValue(coordinate, band);
+       }catch (Exception e) {
+       Object object;
+               try {
+                       object = 
layer.getRasterData(null).getDataElements(me.getX(), me.getY(), band);
+               value =new Double(object.toString());
+               } catch (IOException e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               }
+       
+       }   
+       return value;
+    }
+    
+    
+    
+    @Override
+   public void mouseMoved(MouseEvent me) {
+
+        final WorkbenchContext wbcontext = this.getWorkbench().getContext();
+          
+        for (Object layerable : 
wbcontext.getLayerableNamePanel().selectedNodes(Layerable.class)) {
+            Layerable layer = (Layerable)layerable;
+        
+                if (layer instanceof RasterImageLayer) {
+        String cellValues = null;
+        try {
+            cellValues = "";
+            Double cellValue = Double.NaN;
+            Coordinate tentativeCoordinate = getPanel().getViewport()
+                    .toModelCoordinate(me.getPoint());
+            for (int b = 0; b < ((RasterImageLayer) layer).getNumBands(); b++) 
{
+               
+               // cellValue = cellValue(me,((RasterImageLayer) 
layer),tentativeCoordinate, b);
+               try {
+                               cellValue = ((RasterImageLayer) 
layer).getCellValue(tentativeCoordinate.x,
+                                           tentativeCoordinate.y, b);
+                       } catch (RasterDataNotFoundException | IOException e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       } 
+                
+                if (cellValue != null) {
+                    if (((RasterImageLayer) layer).isNoData(cellValue)) {
+                        cellValues = cellValues.concat(Double
+                                .toString(cellValue))
+                                + "("
+                                + RASTER_NODATA
+                                + ") ";
+                    } else {
+                        cellValues = cellValues.concat(Double
+                                .toString(cellValue));
+                    }
+                }
+                cellValues = cellValues.concat("  ");
+            }
+
+        } catch (NoninvertibleTransformException e) {
+                cellValues = " - ";
+        }
+        name = ((RasterImageLayer) layer).getName();
+        getPanel().getContext().setStatusMessage(
+                "[" + LAYER + ": " + name + "] " + VALUE + ": "
+                        + cellValues.toString());}
+        }
+    } 
+    
+   
+    
+    @Override
+    public String getName() {
+       return  
I18N.get("org.openjump.core.ui.plugin.raster.RasterQueryPlugIn");
+    }
+    
+    
+    
+    public  void printArray(RasterImageLayer rLayer, Geometry fence) throws 
NoninvertibleTransformException, IOException {
+        Rectangle subset;
+         Raster raster = null;
+         Envelope envWanted;
+        
+               envWanted = fence.getEnvelopeInternal().intersection(
+          rLayer.getWholeImageEnvelope());
+               subset = rLayer.getRectangleFromEnvelope(envWanted);
+               raster = rLayer.getRasterData(subset);
+                 final int w = raster.getWidth(), h = raster.getHeight();
+                
+                 Object[][] data = new Object[w][h];
+                 Object columnNames[] = new Object[w];
+        for (int x = 0; x < w; x++) {
+               columnNames[x]="Col"+x;
+            for (int y = 0; y < h; y++) {
+                data[x][y] = raster.getSampleDouble(x, y, 0);
+            }
+        }
+        
+        DefaultTableModel tableModel = new DefaultTableModel(data, 
columnNames);
+      
+        final JTablePanel jTablePanel = new JTablePanel(tableModel);
+        jTablePanel.getCommandPanel().removeAll();
+        jTablePanel.getTable().setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+        jTablePanel.getTable().setTableHeader(null);
+        
+       
+        jTablePanel.addHierarchyListener(new HierarchyListener() {
+               @Override
+                       public void hierarchyChanged(HierarchyEvent e) {
+                       Window window = 
SwingUtilities.getWindowAncestor(jTablePanel);
+                       if (window instanceof Dialog) {
+                               Dialog dialog = (Dialog) window;
+                               if (!dialog.isResizable()) {
+                                       dialog.setResizable(true);
+                               }
+                       }
+               }
+       });
+        
+        
+      jTablePanel.setPreferredSize(new Dimension(300,300));
+     
+        
+       JOptionPane.showMessageDialog(null, jTablePanel, "Values",
+             JOptionPane.INFORMATION_MESSAGE);
+     }
+}
\ No newline at end of file


Property changes on: 
core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryDragTool.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: 
core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java
===================================================================
--- core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java    
2020-09-14 21:13:44 UTC (rev 6478)
+++ core/trunk/src/org/openjump/core/ui/plugin/raster/RasterQueryPlugIn.java    
2020-09-15 10:12:10 UTC (rev 6479)
@@ -45,6 +45,8 @@
 import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
 import com.vividsolutions.jump.workbench.ui.MenuNames;
+import com.vividsolutions.jump.workbench.ui.cursortool.OrCompositeTool;
+import com.vividsolutions.jump.workbench.ui.cursortool.QuasimodeTool;
 import com.vividsolutions.jump.workbench.ui.images.IconLoader;
 
 public class RasterQueryPlugIn extends AbstractPlugIn {
@@ -61,7 +63,8 @@
     private final static String sErrorSeeOutputWindow = I18N
             
.get("org.openjump.core.ui.plugin.tools.MeasureM_FPlugIn.Error-see-output-window");
 
-    public void initialize(PlugInContext context) throws Exception {
+    @Override
+       public void initialize(PlugInContext context) throws Exception {
 
         context.getFeatureInstaller()
                 .addMainMenuPlugin(
@@ -81,11 +84,22 @@
     }
     
     
-    public boolean execute(PlugInContext context) throws Exception {
+    @Override
+       public boolean execute(PlugInContext context) throws Exception {
         try {
 
-            context.getLayerViewPanel().setCurrentCursorTool(
-                    new RasterQueryCursorTool());
+               
+               
context.getLayerViewPanel().setCurrentCursorTool(QuasimodeTool.createWithDefaults((new
 OrCompositeTool() 
+               {
+                 @Override
+                               public String getName() {
+                   return "Test dragging to retrive a set of values";
+                 }
+               }).add(new RasterQueryCursorTool()).add(new 
RasterQueryDragTool())));
+               
+                
+       //     context.getLayerViewPanel().setCurrentCursorTool(
+       //             new RasterQueryCursorTool());
             return true;
         } catch (Exception e) {
             e.printStackTrace();



_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to