No Selection]]> Nothing selected" : "Not recognised
Try looking at the tags under the advanced properties"; popupChange.label = "unknown"; setLimitTypes(entity); tw.setSelectedFeature(null); helpLabel.visible = false; } private var tabComponents:Object = {}; private function initialiseEditors():void { editorStack.removeAllChildren(); if ( selectedEntity == null || feature == null ) return; var editorBox:VBox = createEditorBox(); editorBox.label = "Basic"; editorStack.addChild(editorBox); var tabs:Object = {}; tabComponents = {}; for each (var factory:EditorFactory in feature.editors) { if ( factory.presence.isEditorPresent(factory, selectedEntity, null) ) { var editor:DisplayObject = factory.createEditorInstance(selectedEntity); if ( editor != null ) editorBox.addChild(editor); } var category:String = factory.category; var tab:VBox = tabs[category]; if ( tab == null ) { tab = createEditorBox(); tab.label = category; editorStack.addChild(tab); tabs[category] = tab; tabComponents[tab] = []; } var catEditor:DisplayObject = factory.createEditorInstance(selectedEntity); if ( catEditor != null ) tabComponents[tab].push(catEditor); // tab.addChild(catEditor); } } private function createEditorBox():VBox { var box:VBox = new VBox(); box.percentWidth = 100; box.percentHeight = 100; return box; } private function ensureEditorsPopulated(tab:VBox):void { var components:Array = tabComponents[tab]; if ( components == null || tab == null || tab.numChildren >= components.length ) return; for each (var component:DisplayObject in components ) { tab.addChild(component); } } private function checkAdvanced():void { if ( selectedEntity != null ) setupAdvanced(selectedEntity); } private var listeningToRelations:Array = []; private function setupAdvanced(entity:Entity):void { if ( tagDataProvider == null ) { tagDataProvider = new ArrayCollection(); advancedTagGrid.dataProvider = tagDataProvider; } tagDataProvider.removeAll(); if ( entity == null ) { advancedID.htmlText = ""; } else { var entityText:String = "xx"; if ( entity is Node ) entityText = "Node"; else if ( entity is Way ) entityText = "Way"; else if ( entity is Relation ) entityText = "Relation"; advancedID.htmlText = entityText+": "+entity.id+""; var tags:Array = entity.getTagArray(); tags.sortOn("key"); for each(var tag:Tag in tags) tagDataProvider.addItem(tag); } removeRelationListeners(); if ( selectedEntity != null ) { selectedEntity.removeEventListener(Connection.ADDED_TO_RELATION, addedToRelation); selectedEntity.removeEventListener(Connection.REMOVED_FROM_RELATION, removedFromRelation); } if ( entity == null ) { relationsGrid.dataProvider = null; } else { resetRelationsGrid(entity); entity.addEventListener(Connection.ADDED_TO_RELATION, addedToRelation); entity.addEventListener(Connection.REMOVED_FROM_RELATION, removedFromRelation); } } private function addedToRelation(event:RelationMemberEvent):void { resetRelationsGrid(selectedEntity); } private function removedFromRelation(event:RelationMemberEvent):void { resetRelationsGrid(selectedEntity); } private function removeRelationListeners():void { for each( var rel:Relation in listeningToRelations ) { rel.removeEventListener(Connection.TAG_CHANGED, relationTagChanged); rel.removeEventListener(Connection.RELATION_MEMBER_ADDED, entityRelationMemberChanged); rel.removeEventListener(Connection.RELATION_MEMBER_REMOVED, entityRelationMemberChanged); } listeningToRelations = []; relationsGrid.removeEventListener(DataGridEvent.ITEM_EDIT_END, relationRoleChanged); } private function resetRelationsGrid(entity:Entity):void { removeRelationListeners(); var relations:Array = []; for each( var rel:Relation in entity.parentRelations ) { for each( var memberIndex:int in rel.findEntityMemberIndexes(entity)) { var props:Object = {}; props["relation"] = rel; props["id"] = rel.id; props["index"] = memberIndex; props["role"] = rel.getMember(memberIndex).role; props["description"] = rel.getDescription(); props["id_idx"] = rel.id + "/"+memberIndex; relations.push(props); } rel.addEventListener(Connection.TAG_CHANGED, relationTagChanged); rel.addEventListener(Connection.RELATION_MEMBER_ADDED, entityRelationMemberChanged); rel.addEventListener(Connection.RELATION_MEMBER_REMOVED, entityRelationMemberChanged); listeningToRelations.push(rel); } relationsGrid.dataProvider = relations; relationsGrid.addEventListener(DataGridEvent.ITEM_EDIT_END, relationRoleChanged, false, -100); } private function relationRoleChanged(event:DataGridEvent):void { if (event.dataField != 'role') { return; } // shouldn't really happen var relations:Array=event.currentTarget.dataProvider.toArray(); var props:Object=relations[event.rowIndex]; var relation:Relation=props['relation']; var index:uint=props['index']; var newRole:String=event.itemRenderer.data['role']; relation.setMember(index, new RelationMember(selectedEntity,newRole)); } private function relationTagChanged(event:TagEvent):void { resetRelationsGrid(selectedEntity); } private function entityRelationMemberChanged(event:RelationMemberEvent):void { resetRelationsGrid(selectedEntity); } private function checkMembers():void { if (selectedEntity is Relation) { setupMembers(selectedEntity as Relation); } } private function setupMembers(rel:Relation):void { var members:Array = []; for (var i:int=0 ; i=0; i--) { rel.removeMemberByIndex(i); } // add members in new order for each(var memberObject:Object in membersGrid.dataProvider) { var e:Entity; var id:Number = memberObject.id; if(memberObject.type == 'node') { e = conn.getNode(id); } else if (memberObject.type == 'way') { e = conn.getWay(id); } else if (memberObject.type == 'relation') { e = conn.getRelation(id); } rel.appendMember(new RelationMember(e, memberObject.role)); trace("added member "+memberObject.type+" "+id+" in role "+memberObject.role); } trace("complete: relation "+rel.id+" now has "+rel.length+" members"); } private function editRelation(id:Number):void { var panel:RelationEditorPanel = RelationEditorPanel( PopUpManager.createPopUp(Application(Application.application), RelationEditorPanel, true)); panel.setRelation(Connection.getConnectionInstance().getRelation(id)); PopUpManager.centerPopUp(panel); } private function tagChanged(event:TagEvent):void { refreshFeatureIcon(); if ( tagDataProvider != null ) { // check to see if the key is already in our list var exists:Boolean = false; var tag:Tag = null; var i:uint; for ( i = 0; i < tagDataProvider.length && !exists; i++ ) { tag = Tag(tagDataProvider.getItemAt(i)); exists = tag.key == event.key; } if ( !exists ) { tag = new Tag(selectedEntity, event.key, event.newValue); tagDataProvider.addItem(tag); tagDataProvider.refresh(); } else { if ( event.newValue == null ) { tagDataProvider.removeItemAt(i-1); tagDataProvider.refresh(); } else { tagDataProvider.itemUpdated(tag, "value"); } } } } public function loadFeatures():void { mapFeatures = MapFeatures.getInstance(); stack.removeChild(membersVBox); // remove by default, will be added if relation } public function openDescription():void { trace("open description here"); if ( feature != null && feature.hasHelpURL() ) navigateToURL(new URLRequest(feature.helpURL), "potlatch_help"); } public function addNewTag():void { var newKey:String = "(new tag)"; var newTag:Tag = new Tag(selectedEntity, newKey, "(new value)"); tagDataProvider.addItem(newTag); advancedTagGrid.editedItemPosition = {rowIndex: tagDataProvider.getItemIndex(newTag), columnIndex: 0}; } public function removeTag():void { var k:String = advancedTagGrid.selectedItem.key; selectedEntity.setTag(k, null, MainUndoStack.getGlobalStack().addAction); } public function addToRelation():void { new RelationSelectPanel().init(selectedEntity,new Object()); } public function removeFromRelation(id:Number, index:int):void { Connection.getConnectionInstance().getRelation(id).removeMemberByIndex(index); } public function initFeatureBox():void { tw = new CategorySelector(); tw.addEventListener("selectedType", changeFeatureType); popupChange.popUp = tw; } public function changeFeatureType(event:Event):void { if ( selectedEntity == null ) return; var newFeature:Feature = tw.selectedType; var undoStack:Function = MainUndoStack.getGlobalStack().addAction; var action:CompositeUndoableAction = new CompositeUndoableAction( "Set "+selectedEntity.getType()+" "+selectedEntity.id+" to "+newFeature.name); // remove tags from the current feature if ( feature != null ) { for each( var oldtag:Object in feature.tags ) { selectedEntity.setTag(oldtag["k"], null, action.push); } } // set tags for new feature if ( newFeature != null ) { for each( var newtag:Object in newFeature.tags ) { selectedEntity.setTag(newtag["k"], newtag["v"], action.push); } } undoStack(action); popupChange.close(); } private function dragPOI(event:MouseEvent, tags:Array):void { // Get the drag initiator component from the event object. var dragInitiator:Image = event.currentTarget as Image; var dragSource:DragSource = new DragSource(); dragSource.addData(tags, 'tags'); var dragProxy:Image = new Image(); dragProxy.source = event.currentTarget.source; DragManager.doDrag(dragInitiator, dragSource, event, dragProxy); } ]]>