source: EDIS/trunk/java/tracking-ui-core/src/main/flex/gov/va/med/edp/widget/ValueComboBox.mxml@ 1227

Last change on this file since 1227 was 1227, checked in by George Lilly, 13 years ago

initial load of EDIS 1.0

File size: 2.1 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<!-- ValueComboBox.mxml
3 allows value property to be settable
4 based on "Rich Internet Applications with Adobe Flex and Java" page 319
5-->
6
7<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml">
8 <mx:Script>
9 <![CDATA[
10 public var dataField: String = "data";
11
12 private var candidateValue: Object;
13 private var valueDirty: Boolean = false;
14 private var candidateDataProvider: Object;
15 private var dataProviderDirty: Boolean = false;
16
17 [Bindable("change")]
18 [Bindable("valueCommit")]
19 [Inspectable(defaultValue="0", category="General", verbose="1")]
20 override public function get value():Object
21 {
22 var item: Object = selectedItem;
23 if ((item == null) || (typeof(item) != "object")) return item;
24 return item[dataField] ? item[dataField] : item.label;
25 }
26
27 public function set value(val:Object) : void
28 {
29 candidateValue = val;
30 valueDirty = true;
31 invalidateProperties();
32 }
33
34 private function applyValue(val:Object):void
35 {
36 if ((val != null) && (dataProvider != null)) {
37 for (var i : int = 0; i < dataProvider.length; i++) {
38 if (dataProvider[i] == null) continue;
39
40 // only checking dataField to avoid accidental selection
41 // (could also check labelField, but not needed for ED app)
42 if (val == dataProvider[i][dataField]) {
43 selectedIndex = i;
44 return;
45 }
46 }
47 }
48 selectedIndex = -1;
49 }
50
51 override public function set dataProvider(value:Object):void
52 {
53 candidateDataProvider = value;
54 dataProviderDirty = true;
55 invalidateProperties();
56 }
57
58 override protected function commitProperties():void
59 {
60 super.commitProperties();
61
62 if (dataProviderDirty) {
63 super.dataProvider = candidateDataProvider;
64 dataProviderDirty = false;
65 }
66
67 if (valueDirty) {
68 applyValue(candidateValue);
69 valueDirty = false;
70 }
71 }
72 ]]>
73 </mx:Script>
74</mx:ComboBox>
Note: See TracBrowser for help on using the repository browser.