1 | <?xml version="1.0" encoding="utf-8"?> |
---|
2 | <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"> |
---|
3 | <mx:Script> |
---|
4 | <![CDATA[ |
---|
5 | import mx.events.DataGridEventReason; |
---|
6 | import clarin.cmdi.componentregistry.common.ComponentMD; |
---|
7 | import mx.collections.XMLListCollection; |
---|
8 | import mx.controls.TextInput; |
---|
9 | import mx.events.DataGridEvent; |
---|
10 | import mx.collections.ArrayCollection; |
---|
11 | import mx.managers.PopUpManager; |
---|
12 | |
---|
13 | private static const ADD_ROW:String = "Click to add a row"; |
---|
14 | |
---|
15 | [Bindable] |
---|
16 | public var valueSchemeEnumeration:ArrayCollection = new ArrayCollection([{item: ADD_ROW, conceptLink: "", appInfo: ""}]); |
---|
17 | |
---|
18 | |
---|
19 | private function editEnd(e:DataGridEvent):void { |
---|
20 | if (e.rowIndex == valueSchemeEnumeration.length - 1 && e.columnIndex == 0 && e.reason != DataGridEventReason.CANCELLED) { |
---|
21 | var row:Object = valueSchemeEnumeration.getItemAt(valueSchemeEnumeration.length - 1); |
---|
22 | var input:Object = TextInput(e.currentTarget.itemEditorInstance); |
---|
23 | if (row.item == ADD_ROW && input.text != ADD_ROW) { |
---|
24 | valueSchemeEnumeration.addItem({item: ADD_ROW, conceptLink: "", appInfo: ""}); |
---|
25 | //scroll down |
---|
26 | dataGrid.validateNow(); |
---|
27 | dataGrid.selectedIndex = valueSchemeEnumeration.length - 1; |
---|
28 | dataGrid.scrollToIndex(valueSchemeEnumeration.length); |
---|
29 | } |
---|
30 | } |
---|
31 | } |
---|
32 | |
---|
33 | private function checkEdit(event:DataGridEvent):void { |
---|
34 | // Do not allow editing of "Add row" row except for "Click to Add" column |
---|
35 | if (event.rowIndex == valueSchemeEnumeration.length - 1 && event.columnIndex != 0) |
---|
36 | event.preventDefault(); |
---|
37 | } |
---|
38 | |
---|
39 | private function handleKeyUp(event:KeyboardEvent):void { |
---|
40 | if (event.keyCode == Keyboard.DELETE) { |
---|
41 | var indices:Array = dataGrid.selectedIndices; |
---|
42 | for each (var index:int in indices) { |
---|
43 | if (index != valueSchemeEnumeration.length - 1) { //Don't delete last row |
---|
44 | valueSchemeEnumeration.removeItemAt(index); |
---|
45 | } |
---|
46 | } |
---|
47 | dataGrid.validateNow(); |
---|
48 | } |
---|
49 | } |
---|
50 | ]]> |
---|
51 | </mx:Script> |
---|
52 | |
---|
53 | <mx:DataGrid id="dataGrid" |
---|
54 | editable="true" |
---|
55 | doubleClickEnabled="true" |
---|
56 | sortableColumns="false" |
---|
57 | dataProvider="{valueSchemeEnumeration}" |
---|
58 | itemEditEnd="editEnd(event)" |
---|
59 | itemEditBeginning="checkEdit(event)" |
---|
60 | allowMultipleSelection="true" |
---|
61 | keyUp="handleKeyUp(event)"> |
---|
62 | <mx:columns> |
---|
63 | <mx:DataGridColumn dataField="item"/> |
---|
64 | <mx:DataGridColumn dataField="conceptLink"/> |
---|
65 | <mx:DataGridColumn dataField="appInfo"/> |
---|
66 | </mx:columns> |
---|
67 | </mx:DataGrid> |
---|
68 | </mx:VBox> |
---|