Revision: 6103
          http://sourceforge.net/p/jump-pilot/code/6103
Author:   ma15569
Date:     2019-01-19 08:10:42 +0000 (Sat, 19 Jan 2019)
Log Message:
-----------
added monitoring to raster generation

Modified Paths:
--------------
    
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/HydroDistPlugIn.java
    
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/RoutingTimePlugIn.java
    
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/UpslopeAreaPlugIn.java
    
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/WatershedPlugIn.java

Modified: 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/HydroDistPlugIn.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/HydroDistPlugIn.java
   2019-01-19 08:00:37 UTC (rev 6102)
+++ 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/HydroDistPlugIn.java
   2019-01-19 08:10:42 UTC (rev 6103)
@@ -1,17 +1,26 @@
 package com.geomaticaeambiente.klemgui.plugin.hydrology;
 
-import com.geomaticaeambiente.klemgui.utils.PluginUtils;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.openjump.core.rasterimage.RasterImageLayer;
+
 import com.geomaticaeambiente.klemgui.ui.CustomComboBox;
 import com.geomaticaeambiente.klemgui.ui.GUIUtils;
 import com.geomaticaeambiente.klemgui.ui.InitialDialog;
+import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.ui.MainPanel;
-import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.utils.AbstractInputKlemPlugin;
 import com.geomaticaeambiente.klemgui.utils.ActionObject;
 import com.geomaticaeambiente.klemgui.utils.ComponentsTreeMap;
 import com.geomaticaeambiente.klemgui.utils.GeometryUtils;
+import com.geomaticaeambiente.klemgui.utils.InitialData;
+import com.geomaticaeambiente.klemgui.utils.PluginUtils;
 import com.geomaticaeambiente.klemgui.utils.RasterUtils;
-import com.geomaticaeambiente.klemgui.utils.InitialData;
 import com.geomaticaeambiente.openjump.klem.flowdir.FlowDirsCalculator;
 import com.geomaticaeambiente.openjump.klem.flowdir.FlowDirsStripe;
 import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
@@ -18,17 +27,15 @@
 import com.geomaticaeambiente.openjump.klem.grid.FlowDirBasicGrid;
 import com.geomaticaeambiente.openjump.klem.hydrodistance.HydroDistCalculator;
 import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jump.task.TaskMonitor;
 import com.vividsolutions.jump.util.StringUtil;
+import com.vividsolutions.jump.workbench.Logger;
 import com.vividsolutions.jump.workbench.model.Layer;
+import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import com.vividsolutions.jump.workbench.plugin.ThreadedBasePlugIn;
 import com.vividsolutions.jump.workbench.ui.ErrorDialog;
-import java.awt.geom.NoninvertibleTransformException;
-import java.io.File;
-import javax.swing.JButton;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import org.openjump.core.rasterimage.RasterImageLayer;
+import com.vividsolutions.jump.workbench.ui.task.TaskMonitorManager;
 
 /**
  *
@@ -36,7 +43,8 @@
  */
 public class HydroDistPlugIn extends AbstractInputKlemPlugin {
 
-    public HydroDistPlugIn(PlugInContext context, InitialDialog initialDialog, 
LayerablesList layerablesList) {
+    public HydroDistPlugIn(PlugInContext context, InitialDialog initialDialog,
+            LayerablesList layerablesList) {
         super(context, initialDialog);
         this.context = context;
         this.layerablesList = layerablesList;
@@ -45,95 +53,153 @@
     @Override
     public InitialData setInitialData() {
 
-//        ar_rasterImageLayers = PluginUtils.getRasterImageLayers(context);
+        //        ar_rasterImageLayers = 
PluginUtils.getRasterImageLayers(context);
 
-        InitialData initialData = new InitialData();
+        final InitialData initialData = new InitialData();
         //input data        
-        
initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(RASTER_DEM_LABEL), 
PluginUtils.getRasterImageLayers(layerablesList.getLayerables()), 
GUIUtils.INPUT);//combobox with rasterImageLayer        
+        initialData.setParam_Label_TextBox(GUIUtils
+                .setGUILabel(RASTER_DEM_LABEL), PluginUtils
+                .getRasterImageLayers(layerablesList.getLayerables()),
+                GUIUtils.INPUT);//combobox with rasterImageLayer        
         initialData.setParam_Label_TextBox(
-                
GUIUtils.setGUILabel(PluginUtils.getResources().getString("HydrographKlemPlugin.Bluelines.label")),
-                PluginUtils.getLayers(layerablesList.getLayerables()), 
GUIUtils.INPUT);
-        
+                GUIUtils.setGUILabel(PluginUtils.getResources().getString(
+                        "HydrographKlemPlugin.Bluelines.label")),
+                PluginUtils.getLayers(layerablesList.getLayerables()),
+                GUIUtils.INPUT);
+
         //output data
-        
initialData.setParam_Label_TextBox_Button(GUIUtils.setGUILabel(HYDRODIST_LABEL),
 "", new ActionObject(""), GUIUtils.OUTPUT);
+        initialData.setParam_Label_TextBox_Button(
+                GUIUtils.setGUILabel(HYDRODIST_LABEL), "",
+                new ActionObject(""), GUIUtils.OUTPUT);
 
         return initialData;
     }
 
     @Override
-    public ComponentsTreeMap setComponentsActions(ComponentsTreeMap 
personalTreeMap) {
+    public ComponentsTreeMap setComponentsActions(
+            ComponentsTreeMap personalTreeMap) {
 
-        final JTextField outputTextField = (JTextField) 
personalTreeMap.getComponent("00", GUIUtils.OUTPUT, 1);
-        JButton outputButton = (JButton) personalTreeMap.getComponent("00", 
GUIUtils.OUTPUT, 2);
+        final JTextField outputTextField = (JTextField) personalTreeMap
+                .getComponent("00", GUIUtils.OUTPUT, 1);
+        final JButton outputButton = (JButton) personalTreeMap.getComponent(
+                "00", GUIUtils.OUTPUT, 2);
         outputButton.setIcon(PluginUtils.getFolderIcon());
-        
outputButton.addActionListener(GUIUtils.setSaveRasterTif(outputTextField));
+        outputButton.addActionListener(GUIUtils
+                .setSaveRasterTif(outputTextField));
 
         return personalTreeMap;
     }
 
+    public void hydroDistCommand(final ComponentsTreeMap componentsWithActions)
+            throws Exception {
+        //get input raster names
+        final String rasterDem = GUIUtils.getStringValue(componentsWithActions
+                .getComponent("00", GUIUtils.INPUT, 1));
+
+        //get output raster name
+        final String outRasterName = GUIUtils
+                .getStringValue(componentsWithActions.getComponent("00",
+                        GUIUtils.OUTPUT, 1));
+
+        //check input values
+        GUIUtils.checkStringValue(rasterDem, RASTER_DEM_LABEL);
+
+        //check output values
+        GUIUtils.checkFileValue(outRasterName, 
GUIUtils.getOutputRasterString());
+
+        //get input raster as rasterImageLayer from string
+        final RasterImageLayer inputRasterSelected = PluginUtils
+                .getRasterImageLayerSelected((CustomComboBox.RasterComboBox) 
componentsWithActions
+                        .getComponent("00", GUIUtils.INPUT, 1));
+        final DoubleBasicGrid demGrid = RasterUtils
+                .getDoubleBasicGrid(inputRasterSelected);
+
+        //Flow direction
+
+        final Layer bluelinesLayer = PluginUtils
+                .getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions
+                        .getComponent("01", GUIUtils.INPUT, 1));
+        LineString[] bluelines = null;
+        if (bluelinesLayer != null) {
+            bluelines = GeometryUtils.getLineStringsFromFeatures(bluelinesLayer
+                    .getFeatureCollectionWrapper());
+        }
+
+        final FlowDirsCalculator flowDirsCalculator = new FlowDirsCalculator(
+                demGrid, FlowDirsStripe.FlowDirAlgorithm.D8, bluelines, 100d);
+        final FlowDirBasicGrid flowDirsGrid = flowDirsCalculator.calculate();
+
+        //Calculate hydrography distance
+        final HydroDistCalculator hydroDistCalc = new HydroDistCalculator();
+        final DoubleBasicGrid hydroDistGrid = hydroDistCalc
+                .calcD8(flowDirsGrid);
+
+        //Create the output file and display on OJ           
+        //Save grid as tiff
+        RasterUtils.saveOutputRasterAsTiff(hydroDistGrid, new File(
+                outRasterName));
+        //Display raster on OJ from file                
+        RasterUtils.displayRasterFileOnOJ(context.getWorkbenchContext(),
+                new File(outRasterName), null);
+
+        JOptionPane.showMessageDialog(super.getInitialDialog(), PluginUtils
+                .getResources().getString("SetWorkspacePlugin.Done.message"),
+                PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
+
+    }
+
     @Override
     public JPanel buildPluginPanel(final ComponentsTreeMap 
componentsWithActions) {
 
-        if(this.mainPanel != null) {
-            return this.mainPanel;
+        if (mainPanel != null) {
+            return mainPanel;
         }
-        this.mainPanel = new MainPanel(super.getInitialDialog(), 
componentsWithActions, false, false, true,
-                
PluginUtils.getResources().getString("MainPanel.ExecuteButton.text"), 
layerablesList) {
+        mainPanel = new MainPanel(super.getInitialDialog(),
+                componentsWithActions, false, false, true, PluginUtils
+                        .getResources().getString(
+                                "MainPanel.ExecuteButton.text"), 
layerablesList) {
 
+            /**
+                     * 
+                     */
+            private static final long serialVersionUID = 1L;
+
             @Override
             public void rightButton() {
 
                 try {
 
-                    //get input raster names
-                    String rasterDem = 
GUIUtils.getStringValue(componentsWithActions.getComponent("00", 
GUIUtils.INPUT, 1));
+                    AbstractPlugIn.toActionListener(new ThreadedBasePlugIn() {
+                        @Override
+                        public String getName() {
+                            return null;
+                        }
 
-                    //get output raster name
-                    String outRasterName = 
GUIUtils.getStringValue(componentsWithActions.getComponent("00", 
GUIUtils.OUTPUT, 1));
+                        @Override
+                        public boolean execute(PlugInContext context)
+                                throws Exception {
+                            return true;
+                        }
 
-                    //check input values
-                    GUIUtils.checkStringValue(rasterDem, RASTER_DEM_LABEL);
+                        @Override
+                        public void run(TaskMonitor monitor,
+                                PlugInContext context) throws Exception {
+                            monitor.report(PluginUtils.getResources()
+                                    .getString("OpenKlem.executing-process"));
+                            // monitor.allowCancellationRequests();
+                            reportNothingToUndoYet(context);
+                            try {
+                                hydroDistCommand(componentsWithActions);
+                            } catch (final Exception ex) {
+                                Logger.error(getName(), ex);
+                            }
+                        }
+                    }, context.getWorkbenchContext(), new TaskMonitorManager())
+                            .actionPerformed(null);
 
-                    //check output values
-                    GUIUtils.checkFileValue(outRasterName, 
GUIUtils.getOutputRasterString());
-
-                    //get input raster as rasterImageLayer from string
-                    RasterImageLayer inputRasterSelected = 
PluginUtils.getRasterImageLayerSelected(
-                            (CustomComboBox.RasterComboBox) 
componentsWithActions.getComponent("00", GUIUtils.INPUT, 1));
-                    DoubleBasicGrid demGrid = 
RasterUtils.getDoubleBasicGrid(inputRasterSelected);
-
-                    //Flow direction
-                    
-                    Layer bluelinesLayer = 
PluginUtils.getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions.getComponent("01", GUIUtils.INPUT, 1));
-                    LineString[] bluelines = null;
-                    if(bluelinesLayer != null) {   
-                        bluelines = 
GeometryUtils.getLineStringsFromFeatures(bluelinesLayer.getFeatureCollectionWrapper());
-                    }
-                    
-                    FlowDirsCalculator flowDirsCalculator = new 
FlowDirsCalculator(demGrid, FlowDirsStripe.FlowDirAlgorithm.D8, bluelines, 
100d);
-                    FlowDirBasicGrid flowDirsGrid = 
flowDirsCalculator.calculate();
-                    
-                    //Calculate hydrography distance
-                    HydroDistCalculator hydroDistCalc = new 
HydroDistCalculator();
-                    DoubleBasicGrid hydroDistGrid = 
hydroDistCalc.calcD8(flowDirsGrid);
-
-                    //Create the output file and display on OJ           
-                    //Save grid as tiff
-                    RasterUtils.saveOutputRasterAsTiff(hydroDistGrid, new 
File(outRasterName));
-                    //Display raster on OJ from file                
-                    RasterUtils.displayRasterFileOnOJ(
-                            context.getWorkbenchContext(),
-                            new File(outRasterName),
-                            null);
-
-                    JOptionPane.showMessageDialog(super.getInitialDialog(),
-                            
PluginUtils.getResources().getString("SetWorkspacePlugin.Done.message"), 
PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
-
-                } catch (Exception ex) {
-                    ErrorDialog.show(
-                            super.getInitialDialog(),
-                            PluginUtils.plugInName,
-                            ex.toString(),
+                } catch (final Exception ex) {
+                    ErrorDialog.show(super.getInitialDialog(),
+                            PluginUtils.plugInName, ex.toString(),
                             StringUtil.stackTrace(ex));
                 }
             }
@@ -147,18 +213,21 @@
             }
 
         };
-        return this.mainPanel;
+        return mainPanel;
     }
 
     @Override
     public String toString() {
-        return 
PluginUtils.getResources().getString("HydroDistancePlugIn.PlugInName.label");
+        return PluginUtils.getResources().getString(
+                "HydroDistancePlugIn.PlugInName.label");
     }
 
     private MainPanel mainPanel;
     private final PlugInContext context;
-    private final String RASTER_DEM_LABEL = 
PluginUtils.getResources().getString("KlemGUI.InputFilledDem.label");
-    private final String HYDRODIST_LABEL = 
PluginUtils.getResources().getString("HydroDistancePlugIn.PlugInName.label");
+    private final String RASTER_DEM_LABEL = PluginUtils.getResources()
+            .getString("KlemGUI.InputFilledDem.label");
+    private final String HYDRODIST_LABEL = PluginUtils.getResources()
+            .getString("HydroDistancePlugIn.PlugInName.label");
     private final LayerablesList layerablesList;
 
 }

Modified: 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/RoutingTimePlugIn.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/RoutingTimePlugIn.java
 2019-01-19 08:00:37 UTC (rev 6102)
+++ 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/RoutingTimePlugIn.java
 2019-01-19 08:10:42 UTC (rev 6103)
@@ -1,19 +1,25 @@
 package com.geomaticaeambiente.klemgui.plugin.hydrology;
 
-import com.geomaticaeambiente.klemgui.exceptions.WarningException;
-import com.geomaticaeambiente.klemgui.utils.PluginUtils;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
 import com.geomaticaeambiente.klemgui.ui.CustomComboBox;
 import com.geomaticaeambiente.klemgui.ui.GUIUtils;
 import com.geomaticaeambiente.klemgui.ui.InitialDialog;
+import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.ui.MainPanel;
-import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.utils.AbstractInputKlemPlugin;
 import com.geomaticaeambiente.klemgui.utils.ActionObject;
 import com.geomaticaeambiente.klemgui.utils.ComponentsTreeMap;
 import com.geomaticaeambiente.klemgui.utils.GeometryUtils;
 import com.geomaticaeambiente.klemgui.utils.HydroUtils;
+import com.geomaticaeambiente.klemgui.utils.InitialData;
+import com.geomaticaeambiente.klemgui.utils.PluginUtils;
 import com.geomaticaeambiente.klemgui.utils.RasterUtils;
-import com.geomaticaeambiente.klemgui.utils.InitialData;
 import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
 import com.geomaticaeambiente.openjump.klem.routing.RoutingTimeCalculator;
 import com.geomaticaeambiente.openjump.klem.routing.RoutingTimeParameters;
@@ -20,15 +26,15 @@
 import com.geomaticaeambiente.openjump.klem.units.Area;
 import com.geomaticaeambiente.openjump.klem.units.Length;
 import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jump.task.TaskMonitor;
 import com.vividsolutions.jump.util.StringUtil;
+import com.vividsolutions.jump.workbench.Logger;
 import com.vividsolutions.jump.workbench.model.Layer;
+import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import com.vividsolutions.jump.workbench.plugin.ThreadedBasePlugIn;
 import com.vividsolutions.jump.workbench.ui.ErrorDialog;
-import java.io.File;
-import javax.swing.JButton;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
+import com.vividsolutions.jump.workbench.ui.task.TaskMonitorManager;
 
 /**
  *
@@ -36,7 +42,8 @@
  */
 public class RoutingTimePlugIn extends AbstractInputKlemPlugin {
 
-    public RoutingTimePlugIn(PlugInContext context, InitialDialog 
initialDialog, LayerablesList layerablesList) {
+    public RoutingTimePlugIn(PlugInContext context,
+            InitialDialog initialDialog, LayerablesList layerablesList) {
         super(context, initialDialog);
         this.context = context;
         this.layerablesList = layerablesList;
@@ -45,117 +52,265 @@
     @Override
     public InitialData setInitialData() {
 
-//        rasterImageLayers = PluginUtils.getRasterImageLayers(context);
+        //        rasterImageLayers = 
PluginUtils.getRasterImageLayers(context);
 
-        InitialData initialData = new InitialData();
+        final InitialData initialData = new InitialData();
 
         //input data
-        initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(DEM_LABEL), 
PluginUtils.getRasterImageLayers(layerablesList.getLayerables()), 
GUIUtils.INPUT);//dem
-                initialData.setParam_Label_TextBox(
-                
GUIUtils.setGUILabel(PluginUtils.getResources().getString("HydrographKlemPlugin.Bluelines.label")),
-                PluginUtils.getLayers(layerablesList.getLayerables()), 
GUIUtils.INPUT); // Bluelines
-        
initialData.setParam_Label_TextBox_Label(GUIUtils.setGUILabel(SLOPE_VELOCITY_LABEL),
 "0.02", M_S, GUIUtils.INPUT); //slope velocity
-        
initialData.setParam_Label_TextBox_Label(GUIUtils.setGUILabel(CHANNEL_VELOCITY_LABEL),
 "2.0", M_S, GUIUtils.INPUT); //channel velocity
-        
initialData.setParam_Label_TextBox_Label(GUIUtils.setGUILabel(MIN_THRESHOLD_LABEL),
 "0.01", KMQ, GUIUtils.INPUT); //min threshold 
-        
initialData.setParam_Label_TextBox_Label(GUIUtils.setGUILabel(MAX_THRESHOLD_LABEL),
 "100000000", KMQ, GUIUtils.INPUT); //max threshold
-        initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(EXPONENT), 
"0", GUIUtils.INPUT); //exponent
+        initialData
+                .setParam_Label_TextBox(GUIUtils.setGUILabel(DEM_LABEL),
+                        PluginUtils.getRasterImageLayers(layerablesList
+                                .getLayerables()), GUIUtils.INPUT);//dem
+        initialData.setParam_Label_TextBox(
+                GUIUtils.setGUILabel(PluginUtils.getResources().getString(
+                        "HydrographKlemPlugin.Bluelines.label")),
+                PluginUtils.getLayers(layerablesList.getLayerables()),
+                GUIUtils.INPUT); // Bluelines
+        initialData.setParam_Label_TextBox_Label(
+                GUIUtils.setGUILabel(SLOPE_VELOCITY_LABEL), "0.02", M_S,
+                GUIUtils.INPUT); //slope velocity
+        initialData.setParam_Label_TextBox_Label(
+                GUIUtils.setGUILabel(CHANNEL_VELOCITY_LABEL), "2.0", M_S,
+                GUIUtils.INPUT); //channel velocity
+        initialData.setParam_Label_TextBox_Label(
+                GUIUtils.setGUILabel(MIN_THRESHOLD_LABEL), "0.01", KMQ,
+                GUIUtils.INPUT); //min threshold 
+        initialData.setParam_Label_TextBox_Label(
+                GUIUtils.setGUILabel(MAX_THRESHOLD_LABEL), "100000000", KMQ,
+                GUIUtils.INPUT); //max threshold
+        initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(EXPONENT), "0",
+                GUIUtils.INPUT); //exponent
 
         //output data
-        
initialData.setParam_Label_TextBox_Button(GUIUtils.setGUILabel(ROUTINGTIME_LABEL),
 "", new ActionObject(""), GUIUtils.OUTPUT);     //output raster           
+        initialData.setParam_Label_TextBox_Button(GUIUtils
+                .setGUILabel(ROUTINGTIME_LABEL), "", new ActionObject(""),
+                GUIUtils.OUTPUT); //output raster           
 
         return initialData;
     }
 
     @Override
-    public ComponentsTreeMap setComponentsActions(ComponentsTreeMap 
personalTreeMap) {
+    public ComponentsTreeMap setComponentsActions(
+            ComponentsTreeMap personalTreeMap) {
 
-        final JTextField outputTextField = (JTextField) 
personalTreeMap.getComponent("00", GUIUtils.OUTPUT, 1);
-        JButton outputButton = (JButton) personalTreeMap.getComponent("00", 
GUIUtils.OUTPUT, 2);
+        final JTextField outputTextField = (JTextField) personalTreeMap
+                .getComponent("00", GUIUtils.OUTPUT, 1);
+        final JButton outputButton = (JButton) personalTreeMap.getComponent(
+                "00", GUIUtils.OUTPUT, 2);
         outputButton.setIcon(PluginUtils.getFolderIcon());
-        
outputButton.addActionListener(GUIUtils.setSaveRasterTif(outputTextField));
+        outputButton.addActionListener(GUIUtils
+                .setSaveRasterTif(outputTextField));
 
         return personalTreeMap;
     }
 
+    public void routingTimeCommand(final ComponentsTreeMap 
componentsWithActions)
+            throws Exception {
+        //get input raster names
+        final String demRasterSelected = GUIUtils
+                .getStringValue(componentsWithActions.getComponent("00",
+                        GUIUtils.INPUT, 1));
+        final Layer bluelinesLayer = PluginUtils
+                .getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions
+                        .getComponent("01", GUIUtils.INPUT, 1));
+
+        //get input values
+        final double slopeVelValue = GUIUtils
+                .getDoubleValue(componentsWithActions.getComponent("02",
+                        GUIUtils.INPUT, 1));
+        final double channelVelValue = GUIUtils
+                .getDoubleValue(componentsWithActions.getComponent("03",
+                        GUIUtils.INPUT, 1));
+        final double minThresholdValue = GUIUtils
+                .getDoubleValue(componentsWithActions.getComponent("04",
+                        GUIUtils.INPUT, 1));
+        final double maxThresholdValue = GUIUtils
+                .getDoubleValue(componentsWithActions.getComponent("05",
+                        GUIUtils.INPUT, 1));
+        final double exponent = GUIUtils.getDoubleValue(componentsWithActions
+                .getComponent("06", GUIUtils.INPUT, 1));
+
+        //get output raster name
+        final String outRasterName = GUIUtils
+                .getStringValue(componentsWithActions.getComponent("00",
+                        GUIUtils.OUTPUT, 1));
+
+        //checks
+        GUIUtils.checkStringValue(demRasterSelected, DEM_LABEL);
+        GUIUtils.checkFileValue(outRasterName, 
GUIUtils.getOutputRasterString());
+        //convert string values in correct objects
+        //get input dem                    
+        final DoubleBasicGrid demGrid = RasterUtils
+                .getDoubleBasicGrid((CustomComboBox.RasterComboBox) 
componentsWithActions
+                        .getComponent("00", GUIUtils.INPUT, 1));
+
+        //get Parameters
+        final RoutingTimeParameters routingTimeParameters = new 
RoutingTimeParameters(
+                HydroUtils.calculateSpeed(slopeVelValue),
+                HydroUtils.calculateSpeed(channelVelValue), new Area(
+                        minThresholdValue, Length.LengthUnit.km), new Area(
+                        maxThresholdValue, Length.LengthUnit.km), exponent);
+
+        LineString[] bluelines = null;
+        if (bluelinesLayer != null) {
+            bluelines = GeometryUtils.getLineStringsFromFeatures(bluelinesLayer
+                    .getFeatureCollectionWrapper());
+        }
+
+        //Routing time
+        final RoutingTimeCalculator routingTimeCalculator = new 
RoutingTimeCalculator();
+        final DoubleBasicGrid routingTimeGrid = routingTimeCalculator.calcD8(
+                demGrid, bluelines, 100d, routingTimeParameters);
+
+        //Create the output file and display on OJ 
+        //Save grid as tiff
+        RasterUtils.saveOutputRasterAsTiff(routingTimeGrid, new File(
+                outRasterName));
+        //Display raster on OJ from file                
+        RasterUtils.displayRasterFileOnOJ(context.getWorkbenchContext(),
+                new File(outRasterName), null);
+
+        JOptionPane.showMessageDialog(super.getInitialDialog(), PluginUtils
+                .getResources().getString("SetWorkspacePlugin.Done.message"),
+                PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
+    }
+
     @Override
     public JPanel buildPluginPanel(final ComponentsTreeMap 
componentsWithActions) {
 
-        if(this.mainPanel != null) {
-            return this.mainPanel;
+        if (mainPanel != null) {
+            return mainPanel;
         }
-        this.mainPanel = new MainPanel(super.getInitialDialog(), 
componentsWithActions, false, false, true,
-                
PluginUtils.getResources().getString("MainPanel.ExecuteButton.text"), 
layerablesList) {
+        mainPanel = new MainPanel(super.getInitialDialog(),
+                componentsWithActions, false, false, true, PluginUtils
+                        .getResources().getString(
+                                "MainPanel.ExecuteButton.text"), 
layerablesList) {
 
+            /**
+                     * 
+                     */
+            private static final long serialVersionUID = 1L;
+
             @Override
             public void rightButton() {
                 try {
 
+                    AbstractPlugIn.toActionListener(new ThreadedBasePlugIn() {
+                        @Override
+                        public String getName() {
+                            return null;
+                        }
+
+                        @Override
+                        public boolean execute(PlugInContext context)
+                                throws Exception {
+                            return true;
+                        }
+
+                        @Override
+                        public void run(TaskMonitor monitor,
+                                PlugInContext context) throws Exception {
+                            monitor.report(PluginUtils.getResources()
+                                    .getString("OpenKlem.executing-process"));
+                            // monitor.allowCancellationRequests();
+                            reportNothingToUndoYet(context);
+                            try {
+                                routingTimeCommand(componentsWithActions);
+                            } catch (final Exception ex) {
+                                Logger.error(getName(), ex);
+                            }
+                        }
+                    }, context.getWorkbenchContext(), new TaskMonitorManager())
+                            .actionPerformed(null);
+
                     //get input raster names
-                    String demRasterSelected = 
GUIUtils.getStringValue(componentsWithActions.getComponent("00", 
GUIUtils.INPUT, 1));
-                    Layer bluelinesLayer = 
PluginUtils.getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions.getComponent("01", GUIUtils.INPUT, 1));
-                    
-                    //get input values
-                    double slopeVelValue = 
GUIUtils.getDoubleValue(componentsWithActions.getComponent("02", 
GUIUtils.INPUT, 1));
-                    double channelVelValue = 
GUIUtils.getDoubleValue(componentsWithActions.getComponent("03", 
GUIUtils.INPUT, 1));
-                    double minThresholdValue = 
GUIUtils.getDoubleValue(componentsWithActions.getComponent("04", 
GUIUtils.INPUT, 1));
-                    double maxThresholdValue = 
GUIUtils.getDoubleValue(componentsWithActions.getComponent("05", 
GUIUtils.INPUT, 1));
-                    double exponent = 
GUIUtils.getDoubleValue(componentsWithActions.getComponent("06", 
GUIUtils.INPUT, 1));
+                    /*      final String demRasterSelected = GUIUtils
+                                  
.getStringValue(componentsWithActions.getComponent(
+                                          "00", GUIUtils.INPUT, 1));
+                          final Layer bluelinesLayer = PluginUtils
+                                  
.getLayerSelected((CustomComboBox.LayerComboBox) componentsWithActions
+                                          .getComponent("01", GUIUtils.INPUT, 
1));
 
-                    //get output raster name
-                    String outRasterName = 
GUIUtils.getStringValue(componentsWithActions.getComponent("00", 
GUIUtils.OUTPUT, 1));
+                          //get input values
+                          final double slopeVelValue = GUIUtils
+                                  
.getDoubleValue(componentsWithActions.getComponent(
+                                          "02", GUIUtils.INPUT, 1));
+                          final double channelVelValue = GUIUtils
+                                  
.getDoubleValue(componentsWithActions.getComponent(
+                                          "03", GUIUtils.INPUT, 1));
+                          final double minThresholdValue = GUIUtils
+                                  
.getDoubleValue(componentsWithActions.getComponent(
+                                          "04", GUIUtils.INPUT, 1));
+                          final double maxThresholdValue = GUIUtils
+                                  
.getDoubleValue(componentsWithActions.getComponent(
+                                          "05", GUIUtils.INPUT, 1));
+                          final double exponent = GUIUtils
+                                  
.getDoubleValue(componentsWithActions.getComponent(
+                                          "06", GUIUtils.INPUT, 1));
 
-                    //checks
-                    GUIUtils.checkStringValue(demRasterSelected, DEM_LABEL);
-                    GUIUtils.checkFileValue(outRasterName, 
GUIUtils.getOutputRasterString());
-                    //convert string values in correct objects
-                    //get input dem                    
-                    DoubleBasicGrid demGrid = RasterUtils.getDoubleBasicGrid(
-                            (CustomComboBox.RasterComboBox) 
componentsWithActions.getComponent("00", GUIUtils.INPUT, 1));
+                          //get output raster name
+                          final String outRasterName = GUIUtils
+                                  
.getStringValue(componentsWithActions.getComponent(
+                                          "00", GUIUtils.OUTPUT, 1));
 
-                    //get Parameters
-                    RoutingTimeParameters routingTimeParameters = new 
RoutingTimeParameters(
-                            HydroUtils.calculateSpeed(slopeVelValue),
-                            HydroUtils.calculateSpeed(channelVelValue),
-                            new Area(minThresholdValue, Length.LengthUnit.km),
-                            new Area(maxThresholdValue, Length.LengthUnit.km),
-                            exponent);
+                          //checks
+                          GUIUtils.checkStringValue(demRasterSelected, 
DEM_LABEL);
+                          GUIUtils.checkFileValue(outRasterName,
+                                  GUIUtils.getOutputRasterString());
+                          //convert string values in correct objects
+                          //get input dem                    
+                          final DoubleBasicGrid demGrid = RasterUtils
+                                  
.getDoubleBasicGrid((CustomComboBox.RasterComboBox) componentsWithActions
+                                          .getComponent("00", GUIUtils.INPUT, 
1));
 
-                    LineString[] bluelines = null;
-                    if(bluelinesLayer != null) {   
-                        bluelines = 
GeometryUtils.getLineStringsFromFeatures(bluelinesLayer.getFeatureCollectionWrapper());
-                    }
-                    
-                    //Routing time
-                    RoutingTimeCalculator routingTimeCalculator = new 
RoutingTimeCalculator();
-                    DoubleBasicGrid routingTimeGrid = 
routingTimeCalculator.calcD8(demGrid, bluelines, 100d, routingTimeParameters);
+                          //get Parameters
+                          final RoutingTimeParameters routingTimeParameters = 
new RoutingTimeParameters(
+                                  HydroUtils.calculateSpeed(slopeVelValue),
+                                  HydroUtils.calculateSpeed(channelVelValue),
+                                  new Area(minThresholdValue, 
Length.LengthUnit.km),
+                                  new Area(maxThresholdValue, 
Length.LengthUnit.km),
+                                  exponent);
 
-                    //Create the output file and display on OJ 
-                    //Save grid as tiff
-                    RasterUtils.saveOutputRasterAsTiff(routingTimeGrid, new 
File(outRasterName));
-                    //Display raster on OJ from file                
-                    RasterUtils.displayRasterFileOnOJ(
-                            context.getWorkbenchContext(),
-                            new File(outRasterName),
-                            null);
+                          LineString[] bluelines = null;
+                          if (bluelinesLayer != null) {
+                              bluelines = GeometryUtils
+                                      
.getLineStringsFromFeatures(bluelinesLayer
+                                              .getFeatureCollectionWrapper());
+                          }
 
-                    JOptionPane.showMessageDialog(super.getInitialDialog(), 
-                            
PluginUtils.getResources().getString("SetWorkspacePlugin.Done.message"), 
PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
-                    
-                } catch (WarningException ex) {
-                    JOptionPane.showMessageDialog(
-                            super.getInitialDialog(),
-                            ex.getMessage(),
-                            PluginUtils.plugInName,
-                            JOptionPane.WARNING_MESSAGE);
-                } catch (Exception ex) {
-                    ErrorDialog.show(
-                            super.getInitialDialog(),
-                            PluginUtils.plugInName,
-                            ex.toString(),
+                          //Routing time
+                          final RoutingTimeCalculator routingTimeCalculator = 
new RoutingTimeCalculator();
+                          final DoubleBasicGrid routingTimeGrid = 
routingTimeCalculator
+                                  .calcD8(demGrid, bluelines, 100d,
+                                          routingTimeParameters);
+
+                          //Create the output file and display on OJ 
+                          //Save grid as tiff
+                          RasterUtils.saveOutputRasterAsTiff(routingTimeGrid,
+                                  new File(outRasterName));
+                          //Display raster on OJ from file                
+                          RasterUtils.displayRasterFileOnOJ(context
+                                  .getWorkbenchContext(), new 
File(outRasterName),
+                                  null);
+
+                          JOptionPane.showMessageDialog(
+                                  super.getInitialDialog(),
+                                  PluginUtils.getResources().getString(
+                                          "SetWorkspacePlugin.Done.message"),
+                                  PluginUtils.plugInName,
+                                  JOptionPane.INFORMATION_MESSAGE);
+
+                      } catch (final WarningException ex) {
+                          
JOptionPane.showMessageDialog(super.getInitialDialog(),
+                                  ex.getMessage(), PluginUtils.plugInName,
+                                  JOptionPane.WARNING_MESSAGE);*/
+                } catch (final Exception ex) {
+                    ErrorDialog.show(super.getInitialDialog(),
+                            PluginUtils.plugInName, ex.toString(),
                             StringUtil.stackTrace(ex));
                 }
             };
-            
+
             @Override
             public void leftButton() {
             }
@@ -165,27 +320,35 @@
             }
         };
 
-        return this.mainPanel;
+        return mainPanel;
     }
 
     @Override
     public String toString() {
-        return 
PluginUtils.getResources().getString("RoutingTimePlugIn.RoutingTime.label");
+        return PluginUtils.getResources().getString(
+                "RoutingTimePlugIn.RoutingTime.label");
     }
 
     private MainPanel mainPanel;
     private final PlugInContext context;
-    private final String DEM_LABEL = 
PluginUtils.getResources().getString("KlemGUI.InputFilledDem.label");
+    private final String DEM_LABEL = PluginUtils.getResources().getString(
+            "KlemGUI.InputFilledDem.label");
     //private final String UPSLOPE_LABEL = 
PluginUtils.getResources().getString("KlemGUI.InputUpslope.label");
-    private final String SLOPE_VELOCITY_LABEL = 
PluginUtils.getResources().getString("RoutingTimePlugIn.SlopeVelociti.label");
-    private final String CHANNEL_VELOCITY_LABEL = 
PluginUtils.getResources().getString("RoutingTimePlugIn.ChannelVelocity.label");
-    private final String MIN_THRESHOLD_LABEL = 
PluginUtils.getResources().getString("RoutingTimePlugIn.MinThreshold.label");
-    private final String MAX_THRESHOLD_LABEL = 
PluginUtils.getResources().getString("RoutingTimePlugIn.MaxThreshold.label");
-    private final String EXPONENT = 
PluginUtils.getResources().getString("RoutingTimePlugIn.Exponent.label");
+    private final String SLOPE_VELOCITY_LABEL = PluginUtils.getResources()
+            .getString("RoutingTimePlugIn.SlopeVelociti.label");
+    private final String CHANNEL_VELOCITY_LABEL = PluginUtils.getResources()
+            .getString("RoutingTimePlugIn.ChannelVelocity.label");
+    private final String MIN_THRESHOLD_LABEL = PluginUtils.getResources()
+            .getString("RoutingTimePlugIn.MinThreshold.label");
+    private final String MAX_THRESHOLD_LABEL = PluginUtils.getResources()
+            .getString("RoutingTimePlugIn.MaxThreshold.label");
+    private final String EXPONENT = PluginUtils.getResources().getString(
+            "RoutingTimePlugIn.Exponent.label");
     private final String M_S = "[m/s]";
     private final String KMQ = "[km2]";
-    private final String ROUTINGTIME_LABEL = 
PluginUtils.getResources().getString("RoutingTimePlugIn.RoutingTime.label");
-    
+    private final String ROUTINGTIME_LABEL = PluginUtils.getResources()
+            .getString("RoutingTimePlugIn.RoutingTime.label");
+
     private final LayerablesList layerablesList;
 
 }

Modified: 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/UpslopeAreaPlugIn.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/UpslopeAreaPlugIn.java
 2019-01-19 08:00:37 UTC (rev 6102)
+++ 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/UpslopeAreaPlugIn.java
 2019-01-19 08:10:42 UTC (rev 6103)
@@ -1,34 +1,41 @@
 package com.geomaticaeambiente.klemgui.plugin.hydrology;
 
-import com.geomaticaeambiente.klemgui.utils.PluginUtils;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.openjump.core.rasterimage.RasterImageLayer;
+
 import com.geomaticaeambiente.klemgui.ui.CustomComboBox;
 import com.geomaticaeambiente.klemgui.ui.GUIUtils;
 import com.geomaticaeambiente.klemgui.ui.InitialDialog;
+import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.ui.MainPanel;
-import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.ui.Symbologies;
 import com.geomaticaeambiente.klemgui.utils.AbstractInputKlemPlugin;
 import com.geomaticaeambiente.klemgui.utils.ActionObject;
 import com.geomaticaeambiente.klemgui.utils.ComponentsTreeMap;
 import com.geomaticaeambiente.klemgui.utils.GeometryUtils;
+import com.geomaticaeambiente.klemgui.utils.InitialData;
+import com.geomaticaeambiente.klemgui.utils.PluginUtils;
 import com.geomaticaeambiente.klemgui.utils.RasterUtils;
-import com.geomaticaeambiente.klemgui.utils.InitialData;
 import 
com.geomaticaeambiente.openjump.klem.flowdir.FlowDirsStripe.FlowDirAlgorithm;
 import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
 import com.geomaticaeambiente.openjump.klem.upslopearea.UpslopeAreaCalculator;
 import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jump.task.TaskMonitor;
 import com.vividsolutions.jump.util.StringUtil;
+import com.vividsolutions.jump.workbench.Logger;
 import com.vividsolutions.jump.workbench.model.Layer;
+import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import com.vividsolutions.jump.workbench.plugin.ThreadedBasePlugIn;
 import com.vividsolutions.jump.workbench.ui.ErrorDialog;
-import java.awt.geom.NoninvertibleTransformException;
-import java.io.File;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import org.openjump.core.rasterimage.RasterImageLayer;
+import com.vividsolutions.jump.workbench.ui.task.TaskMonitorManager;
 
 /**
  *
@@ -36,7 +43,8 @@
  */
 public class UpslopeAreaPlugIn extends AbstractInputKlemPlugin {
 
-    public UpslopeAreaPlugIn(PlugInContext context, InitialDialog 
initialDialog, LayerablesList layerablesList) {
+    public UpslopeAreaPlugIn(PlugInContext context,
+            InitialDialog initialDialog, LayerablesList layerablesList) {
         super(context, initialDialog);
         this.context = context;
         this.layerablesList = layerablesList;
@@ -46,107 +54,162 @@
     public InitialData setInitialData() {
 
         // Input data
-        InitialData initialData = new InitialData();       
+        final InitialData initialData = new InitialData();
+        initialData
+                .setParam_Label_TextBox(GUIUtils.setGUILabel(DEM_LABEL),
+                        PluginUtils.getRasterImageLayers(layerablesList
+                                .getLayerables()), GUIUtils.INPUT);
         initialData.setParam_Label_TextBox(
-                GUIUtils.setGUILabel(DEM_LABEL),
-                
PluginUtils.getRasterImageLayers(layerablesList.getLayerables()),
+                GUIUtils.setGUILabel(PluginUtils.getResources().getString(
+                        "HydrographKlemPlugin.Bluelines.label")),
+                PluginUtils.getLayers(layerablesList.getLayerables()),
                 GUIUtils.INPUT);
+
+        final String[] hyetoTypes = { D8_LABEL, MF_LABEL };
         initialData.setParam_Label_TextBox(
-                
GUIUtils.setGUILabel(PluginUtils.getResources().getString("HydrographKlemPlugin.Bluelines.label")),
-                PluginUtils.getLayers(layerablesList.getLayerables()), 
GUIUtils.INPUT);
-        
-        String[] hyetoTypes = {
-            D8_LABEL,
-            MF_LABEL
-        };
-        
initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(FLOWALGO_LABEL), 
hyetoTypes, GUIUtils.INPUT);
-        
+                GUIUtils.setGUILabel(FLOWALGO_LABEL), hyetoTypes,
+                GUIUtils.INPUT);
+
         // Output data
-        
initialData.setParam_Label_TextBox_Button(GUIUtils.setGUILabel(UPSLOPEAREA_LABEL),
 "", new ActionObject(""), GUIUtils.OUTPUT);
+        initialData.setParam_Label_TextBox_Button(GUIUtils
+                .setGUILabel(UPSLOPEAREA_LABEL), "", new ActionObject(""),
+                GUIUtils.OUTPUT);
 
         return initialData;
     }
 
     @Override
-    public ComponentsTreeMap setComponentsActions(ComponentsTreeMap 
personalTreeMap) {
-        final JTextField outputTextField = (JTextField) 
personalTreeMap.getComponent("00", GUIUtils.OUTPUT, 1);
-        JButton outputButton = (JButton) personalTreeMap.getComponent("00", 
GUIUtils.OUTPUT, 2);
+    public ComponentsTreeMap setComponentsActions(
+            ComponentsTreeMap personalTreeMap) {
+        final JTextField outputTextField = (JTextField) personalTreeMap
+                .getComponent("00", GUIUtils.OUTPUT, 1);
+        final JButton outputButton = (JButton) personalTreeMap.getComponent(
+                "00", GUIUtils.OUTPUT, 2);
         outputButton.setIcon(PluginUtils.getFolderIcon());
-        
outputButton.addActionListener(GUIUtils.setSaveRasterTif(outputTextField));
+        outputButton.addActionListener(GUIUtils
+                .setSaveRasterTif(outputTextField));
 
         return personalTreeMap;
     }
 
+    public void upSlopeAreaCommand(final ComponentsTreeMap 
componentsWithActions)
+            throws Exception {
+        //get input raster names
+        final String flowDirRaster = GUIUtils
+                .getStringValue(componentsWithActions.getComponent("00",
+                        GUIUtils.INPUT, 1));
+
+        final JComboBox jComboBox_Algo = (JComboBox) componentsWithActions
+                .getComponent("02", GUIUtils.INPUT, 1);
+        final String selectedAlgo = 
jComboBox_Algo.getSelectedItem().toString();
+
+        FlowDirAlgorithm flowDirAlgo = FlowDirAlgorithm.D8;
+        if (selectedAlgo.equals(D8_LABEL)) {
+            flowDirAlgo = FlowDirAlgorithm.D8;
+        } else if (selectedAlgo.equals(MF_LABEL)) {
+            flowDirAlgo = FlowDirAlgorithm.MultiFlow;
+        }
+
+        //get output raster name
+        final String outRasterName = GUIUtils
+                .getStringValue(componentsWithActions.getComponent("00",
+                        GUIUtils.OUTPUT, 1));
+
+        //check input values
+        GUIUtils.checkStringValue(flowDirRaster, DEM_LABEL);
+
+        //check output values
+        GUIUtils.checkStringValue(outRasterName,
+                GUIUtils.getOutputRasterString());
+
+        //get input raster as rasterImageLayer from string
+        final RasterImageLayer inputRasterSelected = PluginUtils
+                .getRasterImageLayerSelected((CustomComboBox.RasterComboBox) 
componentsWithActions
+                        .getComponent("00", GUIUtils.INPUT, 1));
+        final DoubleBasicGrid demGrid = RasterUtils
+                .getDoubleBasicGrid(inputRasterSelected);
+
+        final Layer bluelinesLayer = PluginUtils
+                .getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions
+                        .getComponent("01", GUIUtils.INPUT, 1));
+
+        LineString[] bluelines = null;
+        if (bluelinesLayer != null) {
+            bluelines = GeometryUtils.getLineStringsFromFeatures(bluelinesLayer
+                    .getFeatureCollectionWrapper());
+        }
+
+        //Calculate upslope area
+        final UpslopeAreaCalculator upslopeArea = new UpslopeAreaCalculator(
+                demGrid, bluelines, 100d);
+        final DoubleBasicGrid upslopeGrid = upslopeArea.calc(flowDirAlgo);
+
+        //Create the output file and display on OJ 
+        //Save grid as tiff
+        RasterUtils
+                .saveOutputRasterAsTiff(upslopeGrid, new File(outRasterName));
+        //Display raster on OJ from file                
+        RasterUtils.displayRasterFileOnOJ(context.getWorkbenchContext(),
+                new File(outRasterName),
+                Symbologies.getUpslopeAreaSymb(upslopeGrid.getCellSize()));
+
+        JOptionPane.showMessageDialog(super.getInitialDialog(), PluginUtils
+                .getResources().getString("SetWorkspacePlugin.Done.message"),
+                PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
+    }
+
     @Override
     public JPanel buildPluginPanel(final ComponentsTreeMap 
componentsWithActions) {
-        
-        if(this.mainPanel != null) {
-            return this.mainPanel;
+
+        if (mainPanel != null) {
+            return mainPanel;
         }
-        this.mainPanel = new MainPanel(super.getInitialDialog(), 
componentsWithActions, false, false, true,
-                
PluginUtils.getResources().getString("MainPanel.ExecuteButton.text"), 
layerablesList) {
+        mainPanel = new MainPanel(super.getInitialDialog(),
+                componentsWithActions, false, false, true, PluginUtils
+                        .getResources().getString(
+                                "MainPanel.ExecuteButton.text"), 
layerablesList) {
 
+            /**
+                     * 
+                     */
+            private static final long serialVersionUID = 1L;
+
             @Override
             public void rightButton() {
 
                 try {
 
-                    //get input raster names
-                    String flowDirRaster = 
GUIUtils.getStringValue(componentsWithActions.getComponent("00", 
GUIUtils.INPUT, 1));
+                    AbstractPlugIn.toActionListener(new ThreadedBasePlugIn() {
+                        @Override
+                        public String getName() {
+                            return null;
+                        }
 
-                    JComboBox jComboBox_Algo = (JComboBox) 
componentsWithActions.getComponent("02", GUIUtils.INPUT, 1);
-                    String selectedAlgo = 
jComboBox_Algo.getSelectedItem().toString();
-                    
-                    FlowDirAlgorithm flowDirAlgo = FlowDirAlgorithm.D8;
-                    if(selectedAlgo.equals(D8_LABEL)) {
-                        flowDirAlgo = FlowDirAlgorithm.D8;
-                    } else if(selectedAlgo.equals(MF_LABEL)) {
-                        flowDirAlgo = FlowDirAlgorithm.MultiFlow;
-                    }
-                    
-                    
-                    //get output raster name
-                    String outRasterName = 
GUIUtils.getStringValue(componentsWithActions.getComponent("00", 
GUIUtils.OUTPUT, 1));
+                        @Override
+                        public boolean execute(PlugInContext context)
+                                throws Exception {
+                            return true;
+                        }
 
-                    //check input values
-                    GUIUtils.checkStringValue(flowDirRaster, DEM_LABEL);
+                        @Override
+                        public void run(TaskMonitor monitor,
+                                PlugInContext context) throws Exception {
+                            monitor.report(PluginUtils.getResources()
+                                    .getString("OpenKlem.executing-process"));
+                            // monitor.allowCancellationRequests();
+                            reportNothingToUndoYet(context);
+                            try {
+                                upSlopeAreaCommand(componentsWithActions);
+                            } catch (final Exception ex) {
+                                Logger.error(getName(), ex);
+                            }
+                        }
+                    }, context.getWorkbenchContext(), new TaskMonitorManager())
+                            .actionPerformed(null);
 
-                    //check output values
-                    GUIUtils.checkStringValue(outRasterName, 
GUIUtils.getOutputRasterString());
-
-                    //get input raster as rasterImageLayer from string
-                    RasterImageLayer inputRasterSelected = 
PluginUtils.getRasterImageLayerSelected(
-                            (CustomComboBox.RasterComboBox) 
componentsWithActions.getComponent("00", GUIUtils.INPUT, 1));
-                    DoubleBasicGrid demGrid = 
RasterUtils.getDoubleBasicGrid(inputRasterSelected);
-
-                    Layer bluelinesLayer = 
PluginUtils.getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions.getComponent("01", GUIUtils.INPUT, 1));
-                    
-                    LineString[] bluelines = null;
-                    if(bluelinesLayer != null) {   
-                        bluelines = 
GeometryUtils.getLineStringsFromFeatures(bluelinesLayer.getFeatureCollectionWrapper());
-                    }
-                    
-                    //Calculate upslope area
-                    UpslopeAreaCalculator upslopeArea = new 
UpslopeAreaCalculator(demGrid, bluelines, 100d);
-                    DoubleBasicGrid upslopeGrid = 
upslopeArea.calc(flowDirAlgo);
-
-                    //Create the output file and display on OJ 
-                    //Save grid as tiff
-                    RasterUtils.saveOutputRasterAsTiff(upslopeGrid, new 
File(outRasterName));
-                    //Display raster on OJ from file                
-                    RasterUtils.displayRasterFileOnOJ(
-                            context.getWorkbenchContext(),
-                            new File(outRasterName),
-                            
Symbologies.getUpslopeAreaSymb(upslopeGrid.getCellSize()));
-                    
-                    JOptionPane.showMessageDialog(super.getInitialDialog(), 
-                            
PluginUtils.getResources().getString("SetWorkspacePlugin.Done.message"), 
PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
-
-                } catch (Exception ex) {
-                    ErrorDialog.show(
-                            super.getInitialDialog(),
-                            PluginUtils.plugInName,
-                            ex.toString(),
+                } catch (final Exception ex) {
+                    ErrorDialog.show(super.getInitialDialog(),
+                            PluginUtils.plugInName, ex.toString(),
                             StringUtil.stackTrace(ex));
                 }
 
@@ -163,20 +226,26 @@
             }
 
         };
-        return this.mainPanel;
+        return mainPanel;
     }
 
     @Override
     public String toString() {
-        return 
PluginUtils.getResources().getString("UpslopeAreaPlugin.PlugInName.label");
+        return PluginUtils.getResources().getString(
+                "UpslopeAreaPlugin.PlugInName.label");
     }
 
     private MainPanel mainPanel;
     private final PlugInContext context;
-    private final String DEM_LABEL = 
PluginUtils.getResources().getString("KlemGUI.InputFilledDem.label");
-    private final String FLOWALGO_LABEL = 
PluginUtils.getResources().getString("KlemGUI.InputFlowDirAlgo.label");
-    private final String D8_LABEL = 
PluginUtils.getResources().getString("FlowDirectionsPlugIn.FlowDirModel.D8.label");
-    private final String MF_LABEL = 
PluginUtils.getResources().getString("FlowDirectionsPlugIn.FlowDirModel.MF.label");
-    private final String UPSLOPEAREA_LABEL = 
PluginUtils.getResources().getString("UpslopeAreaPlugin.PlugInName.label");
+    private final String DEM_LABEL = PluginUtils.getResources().getString(
+            "KlemGUI.InputFilledDem.label");
+    private final String FLOWALGO_LABEL = PluginUtils.getResources().getString(
+            "KlemGUI.InputFlowDirAlgo.label");
+    private final String D8_LABEL = PluginUtils.getResources().getString(
+            "FlowDirectionsPlugIn.FlowDirModel.D8.label");
+    private final String MF_LABEL = PluginUtils.getResources().getString(
+            "FlowDirectionsPlugIn.FlowDirModel.MF.label");
+    private final String UPSLOPEAREA_LABEL = PluginUtils.getResources()
+            .getString("UpslopeAreaPlugin.PlugInName.label");
     private final LayerablesList layerablesList;
 }

Modified: 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/WatershedPlugIn.java
===================================================================
--- 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/WatershedPlugIn.java
   2019-01-19 08:00:37 UTC (rev 6102)
+++ 
plug-ins/OpenKLEM/OpenKLEMOpenJUMP/trunk/src/com/geomaticaeambiente/klemgui/plugin/hydrology/WatershedPlugIn.java
   2019-01-19 08:10:42 UTC (rev 6103)
@@ -1,7 +1,26 @@
 package com.geomaticaeambiente.klemgui.plugin.hydrology;
 
-import com.geomaticaeambiente.klemgui.exceptions.WarningException;
-import com.geomaticaeambiente.klemgui.utils.PluginUtils;
+import java.awt.Dialog;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.openjump.core.rasterimage.RasterImageLayer;
+
 import 
com.geomaticaeambiente.klemgui.plugin.hydrology.hydrographs.klem.WatershedInformation;
 import com.geomaticaeambiente.klemgui.ui.CustomComboBox;
 import com.geomaticaeambiente.klemgui.ui.CustomComboBox.LayerComboBox;
@@ -8,14 +27,15 @@
 import com.geomaticaeambiente.klemgui.ui.CustomComboBox.RasterComboBox;
 import com.geomaticaeambiente.klemgui.ui.GUIUtils;
 import com.geomaticaeambiente.klemgui.ui.InitialDialog;
+import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.ui.MainPanel;
-import com.geomaticaeambiente.klemgui.ui.LayerablesList;
 import com.geomaticaeambiente.klemgui.utils.AbstractInputKlemPlugin;
 import com.geomaticaeambiente.klemgui.utils.ActionObject;
 import com.geomaticaeambiente.klemgui.utils.ComponentsTreeMap;
 import com.geomaticaeambiente.klemgui.utils.GeometryUtils;
+import com.geomaticaeambiente.klemgui.utils.InitialData;
+import com.geomaticaeambiente.klemgui.utils.PluginUtils;
 import com.geomaticaeambiente.klemgui.utils.RasterUtils;
-import com.geomaticaeambiente.klemgui.utils.InitialData;
 import com.geomaticaeambiente.openjump.klem.flowdir.FlowDirsCalculator;
 import com.geomaticaeambiente.openjump.klem.flowdir.FlowDirsStripe;
 import com.geomaticaeambiente.openjump.klem.grid.DoubleBasicGrid;
@@ -26,28 +46,15 @@
 import com.vividsolutions.jts.geom.LineString;
 import com.vividsolutions.jts.geom.Point;
 import com.vividsolutions.jump.feature.Feature;
+import com.vividsolutions.jump.task.TaskMonitor;
 import com.vividsolutions.jump.util.StringUtil;
+import com.vividsolutions.jump.workbench.Logger;
 import com.vividsolutions.jump.workbench.model.Layer;
+import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import com.vividsolutions.jump.workbench.plugin.ThreadedBasePlugIn;
 import com.vividsolutions.jump.workbench.ui.ErrorDialog;
-import java.awt.Dialog;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JTextField;
-import org.openjump.core.rasterimage.RasterImageLayer;
+import com.vividsolutions.jump.workbench.ui.task.TaskMonitorManager;
 
 /**
  *
@@ -55,7 +62,8 @@
  */
 public class WatershedPlugIn extends AbstractInputKlemPlugin {
 
-    public WatershedPlugIn(PlugInContext context, InitialDialog initialDialog, 
LayerablesList layerablesList) {
+    public WatershedPlugIn(PlugInContext context, InitialDialog initialDialog,
+            LayerablesList layerablesList) {
         super(context, initialDialog);
         this.context = context;
         this.initialDialog = initialDialog;
@@ -66,38 +74,55 @@
     @Override
     public InitialData setInitialData() {
 
-//        layers = PluginUtils.getLayers(context);
-//        ar_rasterImageLayers = PluginUtils.getRasterImageLayers(context);
-        String[] attributes = new String[0];
+        //        layers = PluginUtils.getLayers(context);
+        //        ar_rasterImageLayers = 
PluginUtils.getRasterImageLayers(context);
+        final String[] attributes = new String[0];
 
-        InitialData initialData = new InitialData();
+        final InitialData initialData = new InitialData();
         //input data        
+        initialData
+                .setParam_Label_TextBox(GUIUtils.setGUILabel(DEM_LABEL),
+                        PluginUtils.getRasterImageLayers(layerablesList
+                                .getLayerables()), GUIUtils.INPUT);//dem 
combobox with rasterImageLayer       
         initialData.setParam_Label_TextBox(
-                GUIUtils.setGUILabel(DEM_LABEL),
-                
PluginUtils.getRasterImageLayers(layerablesList.getLayerables()),
-                GUIUtils.INPUT);//dem combobox with rasterImageLayer       
-        initialData.setParam_Label_TextBox(
-                
GUIUtils.setGUILabel(PluginUtils.getResources().getString("HydrographKlemPlugin.Bluelines.label")),
-                PluginUtils.getLayers(layerablesList.getLayerables()), 
GUIUtils.INPUT);
-        
+                GUIUtils.setGUILabel(PluginUtils.getResources().getString(
+                        "HydrographKlemPlugin.Bluelines.label")),
+                PluginUtils.getLayers(layerablesList.getLayerables()),
+                GUIUtils.INPUT);
+
         //other data
-        initialData.setParam_Labels(new 
String[]{PluginUtils.getResources().getString("WatershedPlugin.CloseCoordSection.label")},
 GUIUtils.OTHER);
-        initialData.setParam_Action(new ActionObject(
-                new 
String[]{PluginUtils.getResources().getString("WatershedPlugin.MouseRadioButton.label"),
-                    
PluginUtils.getResources().getString("WatershedPlugin.RadioButtonLayer.label")}),
 GUIUtils.OTHER);//radio button da mouse da layer
+        initialData.setParam_Labels(new String[] { PluginUtils.getResources()
+                .getString("WatershedPlugin.CloseCoordSection.label") },
+                GUIUtils.OTHER);
+        initialData.setParam_Action(
+                new ActionObject(new String[] {
+                        PluginUtils.getResources().getString(
+                                "WatershedPlugin.MouseRadioButton.label"),
+                        PluginUtils.getResources().getString(
+                                "WatershedPlugin.RadioButtonLayer.label") }),
+                GUIUtils.OTHER);//radio button da mouse da layer
 
         // coordinata x da mouse
-        
initialData.setParam_Label_TextBox_Button(GUIUtils.setGUILabel(XCOORD_LABEL), 
"",
-                new 
ActionObject(PluginUtils.getResources().getString("WatershedPlugin.ChooseButton.label")),
 GUIUtils.OTHER);
-        initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(YCOORD_LABEL), 
"", GUIUtils.OTHER);// coordinata y da mouse
+        initialData.setParam_Label_TextBox_Button(
+                GUIUtils.setGUILabel(XCOORD_LABEL),
+                "",
+                new ActionObject(PluginUtils.getResources().getString(
+                        "WatershedPlugin.ChooseButton.label")), 
GUIUtils.OTHER);
+        initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(YCOORD_LABEL),
+                "", GUIUtils.OTHER);// coordinata y da mouse
 
-        initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(LAYER_LABEL), 
PluginUtils.getLayers(layerablesList.getLayerables()), GUIUtils.OTHER);// lista 
layer vettoriali
-//        
initialData.setParam_Label_TextBox(GUIUtils.setGUILabel("Attribute"), 
attributes);// lista layer vettoriali
+        initialData.setParam_Label_TextBox(GUIUtils.setGUILabel(LAYER_LABEL),
+                PluginUtils.getLayers(layerablesList.getLayerables()),
+                GUIUtils.OTHER);// lista layer vettoriali
+        //        
initialData.setParam_Label_TextBox(GUIUtils.setGUILabel("Attribute"), 
attributes);// lista layer vettoriali
 
         //output data
         // Check box:
-        initialData.setParam_Action(new ActionObject(true, CLIP_OUTPUT), 
GUIUtils.OUTPUT);
-        
initialData.setParam_Label_TextBox_Button(GUIUtils.setGUILabel(WATERSHED_LABEL),
 "", new ActionObject(""), GUIUtils.OUTPUT); //JTextField      
+        initialData.setParam_Action(new ActionObject(true, CLIP_OUTPUT),
+                GUIUtils.OUTPUT);
+        initialData.setParam_Label_TextBox_Button(
+                GUIUtils.setGUILabel(WATERSHED_LABEL), "",
+                new ActionObject(""), GUIUtils.OUTPUT); //JTextField      
 
         return initialData;
 
@@ -104,38 +129,49 @@
     }
 
     @Override
-    public ComponentsTreeMap setComponentsActions(final ComponentsTreeMap 
personalTreeMap) {
+    public ComponentsTreeMap setComponentsActions(
+            final ComponentsTreeMap personalTreeMap) {
 
         //radio button components
-        final JRadioButton jRadioButton_mouse = (JRadioButton) 
personalTreeMap.getComponent("01", GUIUtils.OTHER, 0); //radio button from mouse
-        final JRadioButton jRadioButton_layer = (JRadioButton) 
personalTreeMap.getComponent("01", GUIUtils.OTHER, 1); // radio button from 
layer
+        final JRadioButton jRadioButton_mouse = (JRadioButton) personalTreeMap
+                .getComponent("01", GUIUtils.OTHER, 0); //radio button from 
mouse
+        final JRadioButton jRadioButton_layer = (JRadioButton) personalTreeMap
+                .getComponent("01", GUIUtils.OTHER, 1); // radio button from 
layer
 
         //x coord components
-        final JLabel jLabel_xCoord = (JLabel) 
personalTreeMap.getComponent("02", GUIUtils.OTHER, 0); // label coord x
-        final JTextField jTextField_xCoord = (JTextField) 
personalTreeMap.getComponent("02", GUIUtils.OTHER, 1); //jtext field coord x
-        final JButton jButton_Choose = (JButton) 
personalTreeMap.getComponent("02", GUIUtils.OTHER, 2); //button choose
+        final JLabel jLabel_xCoord = (JLabel) personalTreeMap.getComponent(
+                "02", GUIUtils.OTHER, 0); // label coord x
+        final JTextField jTextField_xCoord = (JTextField) personalTreeMap
+                .getComponent("02", GUIUtils.OTHER, 1); //jtext field coord x
+        final JButton jButton_Choose = (JButton) personalTreeMap.getComponent(
+                "02", GUIUtils.OTHER, 2); //button choose
 
         //y coord components
-        final JLabel jLabel_yCoord = (JLabel) 
personalTreeMap.getComponent("03", GUIUtils.OTHER, 0); // label coord y
-        final JTextField jTextField_yCoord = (JTextField) 
personalTreeMap.getComponent("03", GUIUtils.OTHER, 1); //jtext field coord y 
+        final JLabel jLabel_yCoord = (JLabel) personalTreeMap.getComponent(
+                "03", GUIUtils.OTHER, 0); // label coord y
+        final JTextField jTextField_yCoord = (JTextField) personalTreeMap
+                .getComponent("03", GUIUtils.OTHER, 1); //jtext field coord y 
 
         //layer components
-        final JLabel jLabel_layer = (JLabel) 
personalTreeMap.getComponent("04", GUIUtils.OTHER, 0); // label layer
+        final JLabel jLabel_layer = (JLabel) personalTreeMap.getComponent("04",
+                GUIUtils.OTHER, 0); // label layer
         jLabel_layer.setEnabled(false);
-        final CustomComboBox.LayerComboBox jComboBox_layer = 
(CustomComboBox.LayerComboBox) (JComboBox) personalTreeMap.getComponent("04", 
GUIUtils.OTHER, 1); //jtext field layer
+        final CustomComboBox.LayerComboBox jComboBox_layer = 
(CustomComboBox.LayerComboBox) (JComboBox) personalTreeMap
+                .getComponent("04", GUIUtils.OTHER, 1); //jtext field layer
         jComboBox_layer.setEnabled(false);
 
         //attribute components  > NOT USED, ONLY GEOMETRY IS USEFUL
-//        final JLabel jLabel_attribute = (JLabel) 
personalTreeMap.getComponent("Other5", 0); // label attribute
-//        jLabel_attribute.setEnabled(false);
-//        final JComboBox jComboBox_attribute= (JComboBox) 
personalTreeMap.getComponent("Other5", 1); //jtext field attribute 
-//        jComboBox_attribute.setEnabled(false);
+        //        final JLabel jLabel_attribute = (JLabel) 
personalTreeMap.getComponent("Other5", 0); // label attribute
+        //        jLabel_attribute.setEnabled(false);
+        //        final JComboBox jComboBox_attribute= (JComboBox) 
personalTreeMap.getComponent("Other5", 1); //jtext field attribute 
+        //        jComboBox_attribute.setEnabled(false);
         jRadioButton_mouse.addActionListener(new ActionListener() {
             //enable/disable components
             @Override
             public void actionPerformed(ActionEvent e) {
-                enableElements(jRadioButton_mouse, jRadioButton_layer, 
jLabel_xCoord,
-                        jTextField_xCoord, jButton_Choose, jLabel_yCoord, 
jTextField_yCoord, jLabel_layer,
+                enableElements(jRadioButton_mouse, jRadioButton_layer,
+                        jLabel_xCoord, jTextField_xCoord, jButton_Choose,
+                        jLabel_yCoord, jTextField_yCoord, jLabel_layer,
                         jComboBox_layer);
             }
         });
@@ -144,8 +180,9 @@
             //enable/disable components
             @Override
             public void actionPerformed(ActionEvent e) {
-                enableElements(jRadioButton_mouse, jRadioButton_layer, 
jLabel_xCoord,
-                        jTextField_xCoord, jButton_Choose, jLabel_yCoord, 
jTextField_yCoord, jLabel_layer,
+                enableElements(jRadioButton_mouse, jRadioButton_layer,
+                        jLabel_xCoord, jTextField_xCoord, jButton_Choose,
+                        jLabel_yCoord, jTextField_yCoord, jLabel_layer,
                         jComboBox_layer);
             }
         });
@@ -155,146 +192,369 @@
 
             @Override
             public void actionPerformed(ActionEvent e) {
-                
-                RasterImageLayer inputRasterSelected = 
PluginUtils.getRasterImageLayerSelected((CustomComboBox.RasterComboBox) 
personalTreeMap.getComponent("00", GUIUtils.INPUT, 1));
-                
-                WatershedInformation wi = new WatershedInformation(context, 
jTextField_xCoord, jTextField_yCoord);
+
+                final RasterImageLayer inputRasterSelected = PluginUtils
+                        
.getRasterImageLayerSelected((CustomComboBox.RasterComboBox) personalTreeMap
+                                .getComponent("00", GUIUtils.INPUT, 1));
+
+                final WatershedInformation wi = new WatershedInformation(
+                        context, jTextField_xCoord, jTextField_yCoord);
                 wi.getCoordinate();
-                
wi.setRasterEnvelope(inputRasterSelected.getWholeImageEnvelope());
+                wi.setRasterEnvelope(inputRasterSelected
+                        .getWholeImageEnvelope());
             }
         });
 
         jRadioButton_mouse.setSelected(true);
 
-        final JTextField outputTextField = (JTextField) 
personalTreeMap.getComponent("01", GUIUtils.OUTPUT, 1);
-        JButton outputButton = (JButton) personalTreeMap.getComponent("01", 
GUIUtils.OUTPUT, 2);
+        final JTextField outputTextField = (JTextField) personalTreeMap
+                .getComponent("01", GUIUtils.OUTPUT, 1);
+        final JButton outputButton = (JButton) personalTreeMap.getComponent(
+                "01", GUIUtils.OUTPUT, 2);
         outputButton.setIcon(PluginUtils.getFolderIcon());
-        
outputButton.addActionListener(GUIUtils.setSaveRasterTif(outputTextField));
+        outputButton.addActionListener(GUIUtils
+                .setSaveRasterTif(outputTextField));
 
         return personalTreeMap;
 
     }
 
+    public void watershedCommand(final ComponentsTreeMap componentsWithActions)
+            throws Exception {
+        //get input raster names
+        final String flowDirRaster = GUIUtils
+                .getStringValue(componentsWithActions.getComponent("00",
+                        GUIUtils.INPUT, 1));
+
+        //get other information 
+        final boolean selectionMouse = GUIUtils
+                .componentIsSelected(componentsWithActions.getComponent("01",
+                        GUIUtils.OTHER, 0));
+        String xCoord = null;
+        String yCoord = null;
+        String layerSelected = null;
+
+        if (selectionMouse) {
+            xCoord = GUIUtils.getStringValue(componentsWithActions
+                    .getComponent("02", GUIUtils.OTHER, 1));//xCoord value
+            yCoord = GUIUtils.getStringValue(componentsWithActions
+                    .getComponent("03", GUIUtils.OTHER, 1));//yCoord value
+        } else {
+            layerSelected = GUIUtils.getStringValue(componentsWithActions
+                    .getComponent("04", GUIUtils.OTHER, 1)); //layer 
+        }
+
+        //get output raster name
+        final boolean clipOutput = GUIUtils
+                .getBooleanValue(componentsWithActions.getComponent("00",
+                        GUIUtils.OUTPUT, 0));
+        final String outRasterName = GUIUtils
+                .getStringValue(componentsWithActions.getComponent("01",
+                        GUIUtils.OUTPUT, 1));//output raster name
+
+        //ckeck
+        checkValues(mainPanel, flowDirRaster, selectionMouse, xCoord, yCoord,
+                layerSelected, outRasterName);
+
+        final List coords = new ArrayList<Coordinate>();
+
+        //convert string values in correct objects
+        //get input flow dir                    
+        final DoubleBasicGrid demGrid = RasterUtils
+                .getDoubleBasicGrid((RasterComboBox) componentsWithActions
+                        .getComponent("00", GUIUtils.INPUT, 1));
+        //Calculate flow dir envelope
+        final double xMax = demGrid.getLowerLeftCoord().x
+                + (demGrid.getCellSize() * demGrid.getColumnCount());
+        final double yMax = demGrid.getLowerLeftCoord().y
+                + (demGrid.getCellSize() * demGrid.getRowCount());
+
+        final Envelope env = new Envelope(demGrid.getLowerLeftCoord().x, xMax,
+                demGrid.getLowerLeftCoord().y, yMax);
+
+        if (selectionMouse) {
+
+            coords.add(new Coordinate(Double.parseDouble(xCoord), Double
+                    .parseDouble(yCoord)));
+
+        } else { //get Layer
+            //from name to Layer
+            final Layer layer = PluginUtils
+                    .getLayerSelected((LayerComboBox) componentsWithActions
+                            .getComponent("04", GUIUtils.OTHER, 1));
+
+            // Get selected features, or all features if none selected, or 
return error if none present
+            Collection features = context.getLayerViewPanel()
+                    .getSelectionManager().getFeatureSelection()
+                    .getFeaturesWithSelectedItems(layer);
+
+            if (features.isEmpty()) {
+                features = layer.getFeatureCollectionWrapper().getFeatures();
+            }
+
+            Feature feature;
+            final Iterator iter = features.iterator();
+            final int count = 0;
+            while (iter.hasNext()) {
+                feature = (Feature) iter.next();
+                // Check feature to be point
+                if (feature.getGeometry().getGeometryType().toUpperCase()
+                        .equals("POINT")) {
+                    final Point point = (Point) feature.getGeometry();
+                    //check if coordinate is inside raster. Only inside 
coordinate are added to the list
+                    if (env.contains(point.getCoordinate())) {
+                        coords.add(new Coordinate(point.getCoordinate().x,
+                                point.getCoordinate().y));
+                    }
+                    break;
+                }
+            }
+        }
+
+        if (coords.isEmpty()) {
+            throw new NullPointerException(PluginUtils.getResources()
+                    .getString("WatershedPlugin.CoordinateOutside.label"));
+        }
+
+        //convert arrayList to array
+        final Coordinate[] ar_coords = new Coordinate[coords.size()];
+        for (int n = 0; n < coords.size(); n++) {
+            ar_coords[n] = (Coordinate) coords.get(n);
+        }
+
+        //execute
+        final WatershedExtractor watershedExtractor = new WatershedExtractor();
+
+        final Layer bluelinesLayer = PluginUtils
+                .getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions
+                        .getComponent("01", GUIUtils.INPUT, 1));
+        LineString[] bluelines = null;
+        if (bluelinesLayer != null) {
+            bluelines = GeometryUtils.getLineStringsFromFeatures(bluelinesLayer
+                    .getFeatureCollectionWrapper());
+        }
+
+        final FlowDirsCalculator flowDirCalc = new FlowDirsCalculator(demGrid,
+                FlowDirsStripe.FlowDirAlgorithm.D8, bluelines, 100d);
+        final FlowDirBasicGrid flowDirGrid = flowDirCalc.calculate();
+
+        final DoubleBasicGrid watershedGrid = watershedExtractor.extract(
+                flowDirGrid, ar_coords, clipOutput);
+
+        //Create the output file and display on OJ 
+        //Save grid as tiff
+        RasterUtils.saveOutputRasterAsTiff(watershedGrid, new File(
+                outRasterName));
+        //Display raster on OJ from file                
+        RasterUtils.displayRasterFileOnOJ(context.getWorkbenchContext(),
+                new File(outRasterName), null);
+
+        JOptionPane.showMessageDialog(super.getInitialDialog(), PluginUtils
+                .getResources().getString("SetWorkspacePlugin.Done.message"),
+                PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
+    }
+
     @Override
     public JPanel buildPluginPanel(final ComponentsTreeMap 
componentsWithActions) {
-        if(this.mainPanel != null) {
-            return this.mainPanel;
+        if (mainPanel != null) {
+            return mainPanel;
         }
-        this.mainPanel = new MainPanel(super.getInitialDialog(), 
componentsWithActions, false, false, true,
-                
PluginUtils.getResources().getString("MainPanel.ExecuteButton.text"), 
layerablesList) {
+        mainPanel = new MainPanel(super.getInitialDialog(),
+                componentsWithActions, false, false, true, PluginUtils
+                        .getResources().getString(
+                                "MainPanel.ExecuteButton.text"), 
layerablesList) {
 
+            /**
+                     * 
+                     */
+            private static final long serialVersionUID = 2414155540209210362L;
+
             @Override
             public void rightButton() {
                 try {
 
+                    AbstractPlugIn.toActionListener(new ThreadedBasePlugIn() {
+                        @Override
+                        public String getName() {
+                            return null;
+                        }
+
+                        @Override
+                        public boolean execute(PlugInContext context)
+                                throws Exception {
+                            return true;
+                        }
+
+                        @Override
+                        public void run(TaskMonitor monitor,
+                                PlugInContext context) throws Exception {
+                            monitor.report(PluginUtils.getResources()
+                                    .getString("OpenKlem.executing-process"));
+                            // monitor.allowCancellationRequests();
+                            reportNothingToUndoYet(context);
+                            try {
+                                watershedCommand(componentsWithActions);
+                            } catch (final Exception ex) {
+                                Logger.error(getName(), ex);
+                            }
+                        }
+                    }, context.getWorkbenchContext(), new TaskMonitorManager())
+                            .actionPerformed(null);
+
                     //get input raster names
-                    String flowDirRaster = 
GUIUtils.getStringValue(componentsWithActions.getComponent("00", 
GUIUtils.INPUT, 1));
+                    /*           final String flowDirRaster = GUIUtils
+                                       
.getStringValue(componentsWithActions.getComponent(
+                                               "00", GUIUtils.INPUT, 1));
 
-                    //get other information 
-                    boolean selectionMouse = 
GUIUtils.componentIsSelected(componentsWithActions.getComponent("01", 
GUIUtils.OTHER, 0));
-                    String xCoord = null;
-                    String yCoord = null;
-                    String layerSelected = null;
+                               //get other information 
+                               final boolean selectionMouse = GUIUtils
+                                       
.componentIsSelected(componentsWithActions
+                                               .getComponent("01", 
GUIUtils.OTHER, 0));
+                               String xCoord = null;
+                               String yCoord = null;
+                               String layerSelected = null;
 
-                    if (selectionMouse) {
-                        xCoord = 
GUIUtils.getStringValue(componentsWithActions.getComponent("02", 
GUIUtils.OTHER, 1));//xCoord value
-                        yCoord = 
GUIUtils.getStringValue(componentsWithActions.getComponent("03", 
GUIUtils.OTHER, 1));//yCoord value
-                    } else {
-                        layerSelected = 
GUIUtils.getStringValue(componentsWithActions.getComponent("04", 
GUIUtils.OTHER, 1)); //layer 
-                    }
+                               if (selectionMouse) {
+                                   xCoord = 
GUIUtils.getStringValue(componentsWithActions
+                                           .getComponent("02", GUIUtils.OTHER, 
1));//xCoord value
+                                   yCoord = 
GUIUtils.getStringValue(componentsWithActions
+                                           .getComponent("03", GUIUtils.OTHER, 
1));//yCoord value
+                               } else {
+                                   layerSelected = GUIUtils
+                                           
.getStringValue(componentsWithActions
+                                                   .getComponent("04", 
GUIUtils.OTHER, 1)); //layer 
+                               }
 
-                    //get output raster name
-                    boolean clipOutput = 
GUIUtils.getBooleanValue(componentsWithActions.getComponent("00", 
GUIUtils.OUTPUT, 0));
-                    String outRasterName = 
GUIUtils.getStringValue(componentsWithActions.getComponent("01", 
GUIUtils.OUTPUT, 1));//output raster name
+                               //get output raster name
+                               final boolean clipOutput = GUIUtils
+                                       .getBooleanValue(componentsWithActions
+                                               .getComponent("00", 
GUIUtils.OUTPUT, 0));
+                               final String outRasterName = GUIUtils
+                                       
.getStringValue(componentsWithActions.getComponent(
+                                               "01", GUIUtils.OUTPUT, 
1));//output raster name
 
-                    //ckeck
-                    checkValues(this, flowDirRaster, selectionMouse, xCoord, 
yCoord, layerSelected, outRasterName);
+                               //ckeck
+                               checkValues(this, flowDirRaster, 
selectionMouse, xCoord,
+                                       yCoord, layerSelected, outRasterName);
 
-                    List coords = new ArrayList<Coordinate>();
+                               final List coords = new ArrayList<Coordinate>();
 
-                    //convert string values in correct objects
-                    //get input flow dir                    
-                    DoubleBasicGrid demGrid = 
RasterUtils.getDoubleBasicGrid((RasterComboBox) 
componentsWithActions.getComponent("00", GUIUtils.INPUT, 1));
-                    //Calculate flow dir envelope
-                    double xMax = demGrid.getLowerLeftCoord().x + 
(demGrid.getCellSize() * demGrid.getColumnCount());
-                    double yMax = demGrid.getLowerLeftCoord().y + 
(demGrid.getCellSize() * demGrid.getRowCount());
-                    
-                    Envelope env = new Envelope(demGrid.getLowerLeftCoord().x, 
xMax, demGrid.getLowerLeftCoord().y, yMax);
+                               //convert string values in correct objects
+                               //get input flow dir                    
+                               final DoubleBasicGrid demGrid = RasterUtils
+                                       .getDoubleBasicGrid((RasterComboBox) 
componentsWithActions
+                                               .getComponent("00", 
GUIUtils.INPUT, 1));
+                               //Calculate flow dir envelope
+                               final double xMax = 
demGrid.getLowerLeftCoord().x
+                                       + (demGrid.getCellSize() * 
demGrid.getColumnCount());
+                               final double yMax = 
demGrid.getLowerLeftCoord().y
+                                       + (demGrid.getCellSize() * 
demGrid.getRowCount());
 
-                    if (selectionMouse) {
+                               final Envelope env = new Envelope(
+                                       demGrid.getLowerLeftCoord().x, xMax,
+                                       demGrid.getLowerLeftCoord().y, yMax);
 
-                        coords.add(new Coordinate(Double.parseDouble(xCoord), 
Double.parseDouble(yCoord)));
+                               if (selectionMouse) {
 
-                    } else { //get Layer
-                        //from name to Layer
-                        Layer layer = 
PluginUtils.getLayerSelected((LayerComboBox)componentsWithActions.getComponent("04",
 GUIUtils.OTHER, 1));
+                                   coords.add(new 
Coordinate(Double.parseDouble(xCoord),
+                                           Double.parseDouble(yCoord)));
 
-                        // Get selected features, or all features if none 
selected, or return error if none present
-                        Collection features = 
context.getLayerViewPanel().getSelectionManager().getFeatureSelection().getFeaturesWithSelectedItems(layer);
+                               } else { //get Layer
+                                   //from name to Layer
+                                   final Layer layer = PluginUtils
+                                           .getLayerSelected((LayerComboBox) 
componentsWithActions
+                                                   .getComponent("04", 
GUIUtils.OTHER, 1));
 
-                        if (features.isEmpty()) {
-                            features = 
layer.getFeatureCollectionWrapper().getFeatures();
-                        }
+                                   // Get selected features, or all features 
if none selected, or return error if none present
+                                   Collection features = 
context.getLayerViewPanel()
+                                           
.getSelectionManager().getFeatureSelection()
+                                           
.getFeaturesWithSelectedItems(layer);
 
-                        Feature feature;
-                        Iterator iter = features.iterator();
-                        int count = 0;
-                        while (iter.hasNext()) {
-                            feature = (Feature) iter.next();
-                            // Check feature to be point
-                            if 
(feature.getGeometry().getGeometryType().toUpperCase().equals("POINT")) {
-                                Point point = (Point) feature.getGeometry();
-                                //check if coordinate is inside raster. Only 
inside coordinate are added to the list
-                                if(env.contains(point.getCoordinate())){
-                                    coords.add(new 
Coordinate(point.getCoordinate().x, point.getCoordinate().y));
-                                }
-                                break;
-                            }
-                        }
-                    }
-                    
-                    if(coords.isEmpty()) throw new 
NullPointerException(PluginUtils.getResources().getString("WatershedPlugin.CoordinateOutside.label"));
+                                   if (features.isEmpty()) {
+                                       features = 
layer.getFeatureCollectionWrapper()
+                                               .getFeatures();
+                                   }
 
-                    //convert arrayList to array
-                    Coordinate[] ar_coords = new Coordinate[coords.size()];
-                    for (int n = 0; n < coords.size(); n++) {
-                        ar_coords[n] = (Coordinate) coords.get(n);
-                    }
+                                   Feature feature;
+                                   final Iterator iter = features.iterator();
+                                   final int count = 0;
+                                   while (iter.hasNext()) {
+                                       feature = (Feature) iter.next();
+                                       // Check feature to be point
+                                       if 
(feature.getGeometry().getGeometryType()
+                                               .toUpperCase().equals("POINT")) 
{
+                                           final Point point = (Point) feature
+                                                   .getGeometry();
+                                           //check if coordinate is inside 
raster. Only inside coordinate are added to the list
+                                           if 
(env.contains(point.getCoordinate())) {
+                                               coords.add(new Coordinate(point
+                                                       .getCoordinate().x, 
point
+                                                       .getCoordinate().y));
+                                           }
+                                           break;
+                                       }
+                                   }
+                               }
 
-                    //execute
-                    WatershedExtractor watershedExtractor = new 
WatershedExtractor();
-                    
-                    Layer bluelinesLayer = 
PluginUtils.getLayerSelected((CustomComboBox.LayerComboBox) 
componentsWithActions.getComponent("01", GUIUtils.INPUT, 1));
-                    LineString[] bluelines = null;
-                    if(bluelinesLayer != null) {   
-                        bluelines = 
GeometryUtils.getLineStringsFromFeatures(bluelinesLayer.getFeatureCollectionWrapper());
-                    }
-                    
-                    
-                    FlowDirsCalculator flowDirCalc = new 
FlowDirsCalculator(demGrid, FlowDirsStripe.FlowDirAlgorithm.D8, bluelines, 
100d);
-                    FlowDirBasicGrid flowDirGrid = flowDirCalc.calculate();
-                    
-                    DoubleBasicGrid watershedGrid = 
watershedExtractor.extract(flowDirGrid, ar_coords, clipOutput);
+                               if (coords.isEmpty()) {
+                                   throw new NullPointerException(
+                                           PluginUtils
+                                                   .getResources()
+                                                   .getString(
+                                                           
"WatershedPlugin.CoordinateOutside.label"));
+                               }
 
-                    //Create the output file and display on OJ 
-                    //Save grid as tiff
-                    RasterUtils.saveOutputRasterAsTiff(watershedGrid, new 
File(outRasterName));
-                    //Display raster on OJ from file                
-                    RasterUtils.displayRasterFileOnOJ(
-                            context.getWorkbenchContext(),
-                            new File(outRasterName),
-                            null);
+                               //convert arrayList to array
+                               final Coordinate[] ar_coords = new 
Coordinate[coords.size()];
+                               for (int n = 0; n < coords.size(); n++) {
+                                   ar_coords[n] = (Coordinate) coords.get(n);
+                               }
 
-                    JOptionPane.showMessageDialog(super.getInitialDialog(), 
-                            
PluginUtils.getResources().getString("SetWorkspacePlugin.Done.message"), 
PluginUtils.plugInName, JOptionPane.INFORMATION_MESSAGE);
-                
-                } catch (WarningException ex) {
-                    JOptionPane.showMessageDialog(super.getInitialDialog(), 
ex.getMessage(), PluginUtils.plugInName, JOptionPane.WARNING_MESSAGE);
-                } catch (Exception ex) {
-                    ErrorDialog.show(
-                            super.getInitialDialog(),
-                            PluginUtils.plugInName,
-                            ex.toString(),
+                               //execute
+                               final WatershedExtractor watershedExtractor = 
new WatershedExtractor();
+
+                               final Layer bluelinesLayer = PluginUtils
+                                       
.getLayerSelected((CustomComboBox.LayerComboBox) componentsWithActions
+                                               .getComponent("01", 
GUIUtils.INPUT, 1));
+                               LineString[] bluelines = null;
+                               if (bluelinesLayer != null) {
+                                   bluelines = GeometryUtils
+                                           
.getLineStringsFromFeatures(bluelinesLayer
+                                                   
.getFeatureCollectionWrapper());
+                               }
+
+                               final FlowDirsCalculator flowDirCalc = new 
FlowDirsCalculator(
+                                       demGrid, 
FlowDirsStripe.FlowDirAlgorithm.D8,
+                                       bluelines, 100d);
+                               final FlowDirBasicGrid flowDirGrid = flowDirCalc
+                                       .calculate();
+
+                               final DoubleBasicGrid watershedGrid = 
watershedExtractor
+                                       .extract(flowDirGrid, ar_coords, 
clipOutput);
+
+                               //Create the output file and display on OJ 
+                               //Save grid as tiff
+                               
RasterUtils.saveOutputRasterAsTiff(watershedGrid, new File(
+                                       outRasterName));
+                               //Display raster on OJ from file                
+                               RasterUtils.displayRasterFileOnOJ(context
+                                       .getWorkbenchContext(), new 
File(outRasterName),
+                                       null);
+
+                               JOptionPane.showMessageDialog(
+                                       super.getInitialDialog(),
+                                       PluginUtils.getResources().getString(
+                                               
"SetWorkspacePlugin.Done.message"),
+                                       PluginUtils.plugInName,
+                                       JOptionPane.INFORMATION_MESSAGE);
+
+                           } catch (final WarningException ex) {
+                               
JOptionPane.showMessageDialog(super.getInitialDialog(),
+                                       ex.getMessage(), PluginUtils.plugInName,
+                                       JOptionPane.WARNING_MESSAGE);*/
+                } catch (final Exception ex) {
+                    ErrorDialog.show(super.getInitialDialog(),
+                            PluginUtils.plugInName, ex.toString(),
                             StringUtil.stackTrace(ex));
                 }
             }
@@ -310,17 +570,18 @@
             }
 
         };
-        return this.mainPanel;
+        return mainPanel;
     }
 
     @Override
     public String toString() {
-        return 
PluginUtils.getResources().getString("WatershedPlugin.PlugInName.label");
+        return PluginUtils.getResources().getString(
+                "WatershedPlugin.PlugInName.label");
     }
 
-    private void enableElements(JRadioButton mouse, JRadioButton layer, JLabel 
xcoordL,
-            JTextField xcoordF, JButton choose, JLabel ycoordL, JTextField 
ycoordF,
-            JLabel layerL, JComboBox layerF) {
+    private void enableElements(JRadioButton mouse, JRadioButton layer,
+            JLabel xcoordL, JTextField xcoordF, JButton choose, JLabel ycoordL,
+            JTextField ycoordF, JLabel layerL, JComboBox layerF) {
 
         xcoordL.setEnabled(mouse.isSelected());
         xcoordF.setEnabled(mouse.isSelected());
@@ -333,8 +594,9 @@
         layerF.setEnabled(layer.isSelected());
     }
 
-    private void checkValues(JComponent component, String dem, boolean 
mouseSel, String xcoord, String ycoord,
-            String layer, String outRaster) throws IOException, Exception {
+    private void checkValues(JComponent component, String dem,
+            boolean mouseSel, String xcoord, String ycoord, String layer,
+            String outRaster) throws IOException, Exception {
 
         GUIUtils.checkStringValue(dem, DEM_LABEL);
         if (mouseSel) {
@@ -359,16 +621,20 @@
 
     private MainPanel mainPanel;
     private final PlugInContext context;
-//    private RasterImageLayer[] ar_rasterImageLayers;
+    //    private RasterImageLayer[] ar_rasterImageLayers;
     private final InitialDialog initialDialog;
-//    private Layer[] layers;
-    private final String DEM_LABEL = 
PluginUtils.getResources().getString("KlemGUI.InputFilledDem.label");
-//    private final String OUT_RASTER_LABEL = 
PluginUtils.getResources().getString("KlemGUI.OutputRaster.label");
+    //    private Layer[] layers;
+    private final String DEM_LABEL = PluginUtils.getResources().getString(
+            "KlemGUI.InputFilledDem.label");
+    //    private final String OUT_RASTER_LABEL = 
PluginUtils.getResources().getString("KlemGUI.OutputRaster.label");
     private final String XCOORD_LABEL = "x";
     private final String YCOORD_LABEL = "y";
-    private final String LAYER_LABEL = 
PluginUtils.getResources().getString("KlemGUI.Layer.label");
-    private final String CLIP_OUTPUT = 
PluginUtils.getResources().getString("WatershedPlugin.ClipOutput");
-    private final String WATERSHED_LABEL = 
PluginUtils.getResources().getString("WatershedPlugin.PlugInName.label");
-    
+    private final String LAYER_LABEL = PluginUtils.getResources().getString(
+            "KlemGUI.Layer.label");
+    private final String CLIP_OUTPUT = PluginUtils.getResources().getString(
+            "WatershedPlugin.ClipOutput");
+    private final String WATERSHED_LABEL = PluginUtils.getResources()
+            .getString("WatershedPlugin.PlugInName.label");
+
     private final LayerablesList layerablesList;
 }



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

Reply via email to