From 82ad1fb76e250fda9fc01317805234b803cc6ade Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Sat, 2 Apr 2011 10:53:05 +0100 Subject: [PATCH] Make advanced tag panel listen to tag changes; fix issues with panel not responding correctly. --- net/systemeD/potlatch2/TagGrid.mxml | 45 ++++++++++++++++++++------- net/systemeD/potlatch2/TagViewer.mxml | 14 --------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/net/systemeD/potlatch2/TagGrid.mxml b/net/systemeD/potlatch2/TagGrid.mxml index 555e6ef6..6abbd69e 100644 --- a/net/systemeD/potlatch2/TagGrid.mxml +++ b/net/systemeD/potlatch2/TagGrid.mxml @@ -69,26 +69,50 @@ /** Assign a new selected Entity, and update editing controls appropriately. */ public function init(entity:Entity):void { + if (selectedEntity==entity) return; + if (selectedEntity) selectedEntity.removeEventListener(Connection.TAG_CHANGED, tagChanged); + + selectedEntity=entity; + if (!selectedEntity) return; + selectedEntity.addEventListener(Connection.TAG_CHANGED, tagChanged, false, 0, true); + if ( tagDataProvider == null ) { tagDataProvider = new ArrayCollection(); dataProvider = tagDataProvider; + } else { + tagDataProvider.removeAll(); } - if (selectedEntity==entity) return; - selectedEntity=entity; - updateTagDataProvider(true); - } - - private function updateTagDataProvider(force:Boolean=false):void { - if (editedItemPosition && !force) return; - - tagDataProvider.removeAll(); - if (selectedEntity==null) { return; } var tags:Array = selectedEntity.getTagArray(); tags.sortOn("key"); for each(var tag:Tag in tags) { tagDataProvider.addItem(tag); } } + /** Update dataProvider in response to a tag being edited or removed */ + private function tagChanged(event:TagEvent):void { + var set:Boolean=false; + for (var i:uint=0; i