Improve documentation of the background panel.
[potlatch2.git] / net / systemeD / potlatch2 / panels / BackgroundPanel.mxml
1 <?xml version="1.0" encoding="utf-8"?>
2 <!---
3     The Background Panel displays details about the background feature selected. It is currently only used
4     by the SnapshotConnection, and so has functionality to allow marking features as "complete".
5 -->
6
7 <mx:VBox
8     xmlns:fx="http://ns.adobe.com/mxml/2009"
9     xmlns:mx="library://ns.adobe.com/flex/mx"
10     height="100%">
11   <mx:Text id="backgroundPanelText" text="You have selected a Background Feature." width="100%" styleName="helpInfo" />
12   <mx:DataGrid editable="false" id="backgroundPanelDG" width="100%" height="50%">
13     <mx:columns>
14       <mx:DataGridColumn editable="false" dataField="key" headerText="key" />
15       <mx:DataGridColumn editable="false" dataField="value" headerText="value" />
16     </mx:columns>
17   </mx:DataGrid>
18   <mx:ViewStack id="statusStack" resizeToContent="true" width="100%">
19     <mx:VBox id="empty" />
20     <mx:VBox id="not_complete">
21       <mx:Text text="All the data copied to the main layer? Click 'complete'!" />
22       <mx:Button label="Complete" click="markComplete()"/>
23     </mx:VBox>
24     <mx:VBox id="complete">
25       <mx:Text text="This feature has been marked as complete. If this is wrong, press the button below." />
26       <mx:Button label="Not complete" click="markNotComplete()"/>
27     </mx:VBox>
28   </mx:ViewStack>
29   <fx:Script><![CDATA[
30
31       import net.systemeD.halcyon.connection.*;
32       import net.systemeD.halcyon.MapPaint;
33       import net.systemeD.potlatch2.utils.SnapshotConnection;
34       import mx.collections.*;
35
36       private var selectedEntity:Entity;
37       private var tagDataProvider:ArrayCollection;
38       private var layer:MapPaint;
39
40       public function init(entity:Entity, layer:MapPaint):void {
41           this.layer = layer;
42           if ( tagDataProvider == null ) {
43               tagDataProvider = new ArrayCollection();
44               backgroundPanelDG.dataProvider = tagDataProvider;
45           }
46
47           selectedEntity=entity;
48           selectedEntity.addEventListener(Connection.STATUS_CHANGED, statusEvent, false, 0, true);
49           setStatusStack();
50           updateTagDataProvider();
51       }
52
53       private function updateTagDataProvider():void {
54           tagDataProvider.removeAll();
55           if (selectedEntity==null) { return; }
56           var tags:Array = selectedEntity.getTagArray();
57           tags.sortOn("key");
58           for each(var tag:Tag in tags) { tagDataProvider.addItem(tag); }
59       }
60
61       private function statusEvent(e:Event):void {
62             setStatusStack();
63       }
64
65       private function setStatusStack():void {
66           switch (selectedEntity.status) {
67               case 'incomplete':
68                   statusStack.selectedChild = not_complete;
69                   break;
70               case 'complete':
71                   statusStack.selectedChild = complete;
72                   break;
73               default:
74                   statusStack.selectedChild = empty;
75           }
76       }
77
78       private function markComplete():void {
79           if (selectedEntity.connection is SnapshotConnection) {
80               SnapshotConnection(selectedEntity.connection).markComplete(selectedEntity);
81           }
82       }
83
84       private function markNotComplete():void {
85           if (selectedEntity.connection is SnapshotConnection) {
86               SnapshotConnection(selectedEntity.connection).markNotComplete(selectedEntity);
87           }
88       }
89       ]]>
90   </fx:Script>
91 </mx:VBox>