= basemapCount; i--) { var layer:Layer = map.getLayer(map.layerIds[i]); if (!(layer is GraphicsLayer)) layerArray.push(layer); } return layerArray; } private function showStateVisibility(event:MouseEvent):void { WidgetEffects.flipWidget(this, viewStack, "selectedIndex", 0, 400); } private function showStateOptions(event:MouseEvent):void { WidgetEffects.flipWidget(this, viewStack, "selectedIndex", 1, 400); } private function onDragStart(event:DragEvent):void{ //Close the dragged item _draggedLayer=toc.selectedItem as TocMapLayerItem; var openItems:Array = toc.openItems as Array; for each(var o:Object in openItems){ toc.expandItem(o,false); } //setInfoText(resourceManager.getString("resource","toc-layer-reorder")); } private function onDragComplete(event:DragEvent):void{ var arItems:Array; if (event.dragSource.hasFormat("treeItems")){ handleTreeDrag(event); } toc.selectedItem = _draggedLayer; _draggedLayer=null; } private function handleTreeDrag(event:DragEvent):void{ if (event.action!="move") return; var _roots:ArrayCollection = toc.dataProvider as ArrayCollection; //Unclear why I have to do this....but I need the selectedIndex later toc.selectedItem = _draggedLayer; var dropIndex:uint=toc.calculateDropIndex(event); // I've seen thie calculated drop index be > than the number of // services. This usually happens when a service node is expanded, // but let's just make sure. We'll put it at the bottom of the list // in this cse. if (dropIndex>_roots.length) dropIndex=_roots.length; var ind:int=0; // Set in onDragStart....if it's null, get outta dogdge if (_draggedLayer==null) return; var delta:int = _roots.length-dropIndex; ind = delta + 1;//We have two base layers....HACK...THIS IS BAD, MAKE IT BETTER // If the selected item is dragged down, then the index needs to account for that if (toc.selectedIndex>dropIndex) ind=ind-1; toc.map.reorderLayer(_draggedLayer.layer.id,ind); } private var _draggedLayer:TocMapLayerItem; private function onDragEnter(event:DragEvent):void{ DragManager.acceptDragDrop(event.currentTarget as TOC); if ((event.currentTarget as TOC)==null) { DragManager.showFeedback(DragManager.NONE); event.preventDefault(); } } ]]>