Skip to content

Commit

Permalink
Merge branch '#44/support-sharing-gp-results' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
jcfranco committed Feb 20, 2013
2 parents 02151f6 + 719b4c5 commit 0f925bb
Show file tree
Hide file tree
Showing 6 changed files with 181 additions and 58 deletions.
72 changes: 45 additions & 27 deletions src/widgets/Geoprocessing/GeoprocessingWidget.mxml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
import com.esri.ags.geometry.Extent;
import com.esri.ags.geometry.Geometry;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.FeatureLayer;
import com.esri.ags.layers.GPResultImageLayer;
import com.esri.ags.layers.GraphicsLayer;
import com.esri.ags.layers.supportClasses.ImageParameters;
import com.esri.ags.layers.supportClasses.MapImage;
import com.esri.ags.renderers.SimpleRenderer;
Expand All @@ -56,7 +56,6 @@
import flashx.textLayout.conversion.TextConverter;
import mx.collections.ArrayList;
import mx.collections.IList;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.rpc.AsyncResponder;
Expand All @@ -67,6 +66,7 @@
import widgets.Geoprocessing.parameters.IGPFeatureParameter;
import widgets.Geoprocessing.parameters.IGPParameter;
import widgets.Geoprocessing.supportClasses.FeatureInputParamEvent;
import widgets.Geoprocessing.supportClasses.FeatureLayerCollectionHandler;
import widgets.Geoprocessing.supportClasses.FileDownloader;
import widgets.Geoprocessing.supportClasses.GPParamHandler;
import widgets.Geoprocessing.supportClasses.GraphicEditor;
Expand All @@ -79,7 +79,7 @@
private var executionType:String;
private var autoSubmit:Boolean;
private var currentGraphicsLayer:GraphicsLayer;
private var currentLayer:FeatureLayer;
private var visibleGraphicsLayersWatcher:VisibleGraphicsLayersWatcher = new VisibleGraphicsLayersWatcher();
private var layerOrderer:LayerOrderer;
private var gpParamHandler:GPParamHandler;
Expand All @@ -90,7 +90,7 @@
private var totalProcessedAsyncResults:int;
private var totalProjectedFeatures:int
private var asyncResultMap:Dictionary;
private var outputGraphicsLayers:Array;
private var outputLayers:Array;
private var resultImageLayersOnMap:Array;
private var hasResultMapServer:Boolean;
private var hasUseAMFBeenSet:Boolean;
Expand All @@ -100,6 +100,7 @@
private var outputLabel:String;
private var taskDescription:String;
private var taskHelpURL:String;
private var shareResults:Boolean;
[Bindable]
private var submitLabel:String;
Expand Down Expand Up @@ -131,6 +132,21 @@
try
{
gpParamHandler = new GPParamHandler(configXML);
for each (var inputFeatureParam:IGPFeatureParameter in gpParamHandler.getInputFeatureParams())
{
inputFeatureParam.layerName = "hiddenLayer_" + inputFeatureParam.layerName;
}
shareResults = configXML.shareresults[0] == "true";
if (!shareResults)
{
for each (var outputFeatureParam:IGPFeatureParameter in gpParamHandler.getOutputFeatureParams())
{
outputFeatureParam.layerName = "hiddenLayer_" + outputFeatureParam.layerName;
}
}
layerOrderer = new LayerOrderer();
if (configXML.layerorder[0])
{
Expand Down Expand Up @@ -310,13 +326,13 @@
private function inputParamsDataGroup_drawFeatureHandler(event:FeatureInputParamEvent):void
{
var featureParam:IGPFeatureParameter = event.featureParam;
currentGraphicsLayer = featureParam.layer;
currentLayer = featureParam.layer;
setMapAction(event.drawType, null, featureParam.defaultSymbol, map_drawEndHandler);
}
private function inputParamsDataGroup_clearFeatureHandler(event:FeatureInputParamEvent):void
{
event.featureParam.layer.clear();
FeatureLayerCollectionHandler.clear(event.featureParam.layer);
}
protected function map_extentChangeHandler(event:ExtentEvent):void
Expand All @@ -339,10 +355,10 @@
drawnGraphic.geometry = extent.toPolygon();
}
currentGraphicsLayer.add(drawnGraphic);
if (!currentGraphicsLayer.map)
FeatureLayerCollectionHandler.add(drawnGraphic, currentLayer);
if (!currentLayer.map)
{
map.addLayer(currentGraphicsLayer);
map.addLayer(currentLayer);
}
inputParamsDataGroup.dispatchEvent(event);
Expand Down Expand Up @@ -624,7 +640,7 @@
var lastExecutedJob:JobInfo = gp.submitJobLastResult;
var resultImageLayer:GPResultImageLayer = gp.getResultImageLayer(lastExecutedJob.jobId, paramName);
resultImageLayer.id = paramName;
resultImageLayer.name = ("hiddenLayer_" + paramName);
resultImageLayer.name = shareResults ? paramName : "hiddenLayer_" + paramName;
resultImageLayersOnMap.push(resultImageLayer);
map.addLayer(resultImageLayer);
layerOrderer.orderLayers();
Expand Down Expand Up @@ -658,21 +674,21 @@
{
if (totalProcessedOutputFeatures == 0)
{
outputGraphicsLayers = [];
outputLayers = [];
hideOutputFeaturesClearButton();
}
var featureParam:IGPFeatureParameter = (outputParam as IGPFeatureParameter);
var graphicsLayer:GraphicsLayer = featureParam.layer;
graphicsLayer.infoWindowRenderer = featureParam.popUpRenderer;
graphicsLayer.addEventListener(GraphicsLayerEvent.GRAPHICS_CLEAR, ouputGraphicsLayer_graphicsClearHandler, false, 0, true);
graphicsLayer.addEventListener(GraphicEvent.GRAPHIC_REMOVE, ouputGraphicsLayer_graphicsRemoveHandler, false, 0, true);
outputGraphicsLayers.push(graphicsLayer);
var featureLayer:FeatureLayer = featureParam.layer;
featureLayer.infoWindowRenderer = featureParam.popUpRenderer;
featureLayer.addEventListener(GraphicsLayerEvent.GRAPHICS_CLEAR, ouputGraphicsLayer_graphicsClearHandler, false, 0, true);
featureLayer.addEventListener(GraphicEvent.GRAPHIC_REMOVE, ouputGraphicsLayer_graphicsRemoveHandler, false, 0, true);
outputLayers.push(featureLayer);
var resultFeatures:Array = (parameterValue.value as FeatureSet).features;
graphicsLayer.graphicProvider = resultFeatures;
FeatureLayerCollectionHandler.updateFeatures(resultFeatures, featureLayer);
// if renderer is null, set the renderer based on result geometry
if (!graphicsLayer.renderer && resultFeatures && resultFeatures.length)
if (!featureLayer.renderer && resultFeatures && resultFeatures.length)
{
var geometryType:String = Graphic(resultFeatures[0]).geometry.type;
var renderer:SimpleRenderer = new SimpleRenderer;
Expand All @@ -694,13 +710,13 @@
break;
}
}
graphicsLayer.renderer = renderer;
featureLayer.renderer = renderer;
}
addContextMenuToGraphics(resultFeatures);
if (!graphicsLayer.map)
if (!featureLayer.map)
{
map.addLayer(graphicsLayer);
map.addLayer(featureLayer);
layerOrderer.orderLayers();
}
Expand Down Expand Up @@ -734,7 +750,8 @@
var outputFeatureParams:Array = gpParamHandler.getOutputFeatureParams();
for each (var featureParam:IGPFeatureParameter in outputFeatureParams)
{
if (featureParam.popUpInfo)
if (featureParam.popUpInfo
&& FeatureLayerCollectionHandler.hasFeatures(featureParam.layer))
{
featureParamPopUpToDisplay = featureParam;
break;
Expand All @@ -753,7 +770,8 @@
map.infoWindow.content = contentNavigator;
}
var graphic:Graphic = (featureParam.layer.graphicProvider as IList).getItemAt(0) as Graphic;
var graphic:Graphic = featureParam.layer.featureCollection.featureSet.features[0];
graphic.infoWindowRenderer = featureParam.popUpRenderer;
contentNavigator.dataProvider = new ArrayList([ graphic ]);
map.infoWindow.show(graphic.geometry is MapPoint ? graphic.geometry as MapPoint : graphic.geometry.extent.center);
}
Expand All @@ -780,9 +798,9 @@
private function showInputViewIfAllOutputFeaturesCleared():void
{
var allGraphicsLayersCleared:Boolean = true;
for each (var graphicsLayer:GraphicsLayer in outputGraphicsLayers)
for each (var featureLayer:FeatureLayer in outputLayers)
{
if (graphicsLayer.numGraphics > 0)
if (featureLayer.featureCollection.featureSet.features.length > 0)
{
allGraphicsLayersCleared = false;
break;
Expand Down Expand Up @@ -820,8 +838,8 @@
protected function menuItem_contextMenuDeleteHandler(event:ContextMenuEvent):void
{
var graphic:Graphic = event.contextMenuOwner as Graphic;
var graphicsLayer:GraphicsLayer = graphic.graphicsLayer;
graphicsLayer.remove(graphic);
var featureLayer:FeatureLayer = graphic.graphicsLayer as FeatureLayer;
FeatureLayerCollectionHandler.remove(graphic, featureLayer);
}
private function gp_jobCompleteHandler(event:GeoprocessorEvent):void
Expand Down
20 changes: 11 additions & 9 deletions src/widgets/Geoprocessing/parameters/FeatureLayerParameter.as
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,17 @@ package widgets.Geoprocessing.parameters

import com.esri.ags.FeatureSet;
import com.esri.ags.SpatialReference;
import com.esri.ags.layers.GraphicsLayer;
import com.esri.ags.layers.FeatureLayer;
import com.esri.ags.layers.supportClasses.FeatureCollection;
import com.esri.ags.layers.supportClasses.LayerDetails;
import com.esri.ags.portal.PopUpRenderer;
import com.esri.ags.portal.supportClasses.PopUpInfo;
import com.esri.ags.renderers.ClassBreaksRenderer;
import com.esri.ags.renderers.IRenderer;
import com.esri.ags.renderers.SimpleRenderer;
import com.esri.ags.renderers.UniqueValueRenderer;
import com.esri.ags.symbols.Symbol;
import com.esri.ags.portal.PopUpRenderer;
import com.esri.ags.portal.supportClasses.PopUpInfo;

import mx.collections.ArrayCollection;
import mx.core.ClassFactory;

public class FeatureLayerParameter extends BaseParameter implements IGPFeatureParameter
Expand Down Expand Up @@ -63,7 +64,8 @@ public class FeatureLayerParameter extends BaseParameter implements IGPFeaturePa

public function FeatureLayerParameter()
{
_layer = new GraphicsLayer();
_layer = new FeatureLayer();
_layer.featureCollection = new FeatureCollection(new FeatureSet([]), new LayerDetails());
}

//--------------------------------------------------------------------------
Expand Down Expand Up @@ -140,9 +142,9 @@ public class FeatureLayerParameter extends BaseParameter implements IGPFeaturePa
// layer
//----------------------------------

private var _layer:GraphicsLayer;
private var _layer:FeatureLayer;

public function get layer():GraphicsLayer
public function get layer():FeatureLayer
{
return _layer;
}
Expand Down Expand Up @@ -272,12 +274,12 @@ public class FeatureLayerParameter extends BaseParameter implements IGPFeaturePa

override public function hasValidValue():Boolean
{
return (_layer.graphicProvider as ArrayCollection).length > 0;
return _layer.featureCollection.featureSet.features.length > 0;
}

public override function getRequestObjectValue():Object
{
return new FeatureSet((_layer.graphicProvider as ArrayCollection).source);
return _layer.featureCollection.featureSet;
}
}

Expand Down
6 changes: 3 additions & 3 deletions src/widgets/Geoprocessing/parameters/IGPFeatureParameter.as
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ package widgets.Geoprocessing.parameters
{

import com.esri.ags.SpatialReference;
import com.esri.ags.layers.GraphicsLayer;
import com.esri.ags.layers.FeatureLayer;
import com.esri.ags.portal.supportClasses.PopUpInfo;
import com.esri.ags.renderers.IRenderer;
import com.esri.ags.symbols.Symbol;
import com.esri.ags.portal.supportClasses.PopUpInfo;

import mx.core.ClassFactory;

Expand All @@ -30,7 +30,7 @@ public interface IGPFeatureParameter extends IGPParameter
function get mode():String;
function get layerNames():Array;
function get popUpInfo():PopUpInfo;
function get layer():GraphicsLayer;
function get layer():FeatureLayer;
function get renderer():IRenderer;
function get defaultSymbol():Symbol;
function get layerName():String;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,14 @@
import widgets.Geoprocessing.parameters.FeatureLayerParameter;
import widgets.Geoprocessing.parameters.IGPFeatureParameter;
import widgets.Geoprocessing.supportClasses.FeatureInputParamEvent;
import widgets.Geoprocessing.supportClasses.FeatureLayerCollectionHandler;
import widgets.Geoprocessing.supportClasses.InputParamDataGroup;
import widgets.Geoprocessing.supportClasses.VisibleGraphicsLayersWatcher;
[Bindable]
private var visibleValidGraphicsLayers:ArrayList;
[Bindable]
private var graphicsProvider:ArrayCollection;
private var hasFeatures:Boolean;
[Bindable]
private var singleGraphicsLayerSelectionName:String;
Expand Down Expand Up @@ -252,11 +253,12 @@
if (selectedGraphicsLayer)
{
var selectedLayerGraphicProvider:ArrayCollection = selectedGraphicsLayer.graphicProvider as ArrayCollection;
featureParam.layer.graphicProvider = ObjectUtil.copy(selectedLayerGraphicProvider) as ArrayCollection;
var graphicProvider:ArrayCollection = ObjectUtil.copy(selectedLayerGraphicProvider) as ArrayCollection;
FeatureLayerCollectionHandler.updateFeatures(graphicProvider.source, featureParam.layer);
}
else
{
featureParam.layer.graphicProvider = null;
FeatureLayerCollectionHandler.clear(featureParam.layer);
}
}
}
Expand All @@ -275,11 +277,29 @@
private function initializeAndSetDrawSelectionMode():void
{
graphicsProvider = featureParam.layer.graphicProvider as ArrayCollection;
featureParam.layer.addEventListener(GraphicEvent.GRAPHIC_ADD, outputLayer_graphicsRemoveHandler, false, 0, true);
featureParam.layer.addEventListener(GraphicEvent.GRAPHIC_REMOVE, outputLayer_graphicsRemoveHandler, false, 0, true);
featureParam.layer.addEventListener(GraphicsLayerEvent.GRAPHICS_CLEAR, ouputLayer_graphicsClearHandler, false, 0, true);
updateFeatureCount();
inputParamDataGroup.addEventListener(DrawEvent.DRAW_END, map_drawEndHandler, false, 0, true);
setDrawSelectionMode();
}
private function updateFeatureCount():void
{
hasFeatures = featureParam.layer.featureCollection.featureSet.features.length > 0;
}
protected function ouputLayer_graphicsClearHandler(event:GraphicsLayerEvent):void
{
updateFeatureCount();
}
protected function outputLayer_graphicsRemoveHandler(event:GraphicEvent):void
{
updateFeatureCount();
}
private function map_drawEndHandler(event:DrawEvent):void
{
selectedDrawingIcon = null;
Expand Down Expand Up @@ -481,6 +501,6 @@
text="{LocalizationUtil.getDefaultString('clearLabel')}"
textDecoration="underline"
toolTip="{LocalizationUtil.getDefaultString('drawClearLabel')}"
visible="{graphicsProvider.length > 0}"/>
visible="{hasFeatures}"/>
</mx:FormItem>
</s:ItemRenderer>

0 comments on commit 0f925bb

Please sign in to comment.