/src/org/ishafoundation/archives/transcript/components/studio/session/SessionMetadataPane.mxml

http://transcriptstudio4isha.googlecode.com/ · Macromedia eXtensible Markup Language · 147 lines · 138 code · 9 blank · 0 comment · 0 complexity · acc36795d8d3142d913bf027638e4c92 MD5 · raw file

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="creationCompleteHandler()" paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10">
  3. <mx:Script>
  4. <![CDATA[
  5. import org.ishafoundation.archives.transcript.model.ReferenceManager;
  6. import org.ishafoundation.archives.transcript.model.EventMetadata;
  7. import mx.controls.Alert;
  8. import org.ishafoundation.archives.transcript.model.SessionMetadata;
  9. import mx.events.PropertyChangeEvent;
  10. import mx.binding.utils.ChangeWatcher;
  11. import name.carter.mark.flex.util.collection.HashSet;
  12. import name.carter.mark.flex.util.collection.ISet;
  13. import mx.utils.StringUtil;
  14. import mx.formatters.DateBase;
  15. import name.carter.mark.flex.util.Utils;
  16. import name.carter.mark.flex.util.XMLUtils;
  17. import mx.collections.ArrayCollection;
  18. [Bindable]
  19. public var referenceMgr:ReferenceManager;
  20. [Bindable]
  21. public var selectableStartAtRange:Object;
  22. private var _sessionMetadata:SessionMetadata;
  23. private function creationCompleteHandler():void {
  24. var hourArr:Array = [];
  25. for (var hour:int = 0; hour < 24; hour++) {
  26. var hourStr:String = hour.toString();
  27. while (hourStr.length < 2) {
  28. hourStr = "0" + hourStr;
  29. }
  30. hourArr.push(hourStr);
  31. }
  32. hourComboBox.dataProvider = hourArr;
  33. hourComboBox.selectedIndex = hourArr.length / 2;
  34. var minuteArr:Array = [];
  35. for (var minute:int = 0; minute < 60; minute++) {
  36. var minuteStr:String = minute.toString();
  37. if (minute % 15 == 0) {
  38. while (minuteStr.length < 2) {
  39. minuteStr = "0" + minuteStr;
  40. }
  41. minuteArr.push(minuteStr);
  42. }
  43. }
  44. minuteComboBox.dataProvider = minuteArr;
  45. //minuteComboBox.selectedIndex = minuteArr.length / 2;
  46. }
  47. [Bindable]
  48. public function get sessionMetadata():SessionMetadata {
  49. return _sessionMetadata;
  50. }
  51. public function set sessionMetadata(newProps:SessionMetadata):void {
  52. if (newProps === _sessionMetadata) {
  53. return;
  54. }
  55. _sessionMetadata = newProps;
  56. sessionSubTitleTextInput.text = _sessionMetadata.subTitle;
  57. var startAt:Date = _sessionMetadata.startAt;
  58. startAtDateField.selectedDate = startAt;
  59. if (_sessionMetadata.startAtIncludesTime()) {
  60. unknownTimeCheckBox.selected = false;
  61. hourComboBox.selectedItem = fixWidth(startAt.hours, 2);
  62. minuteComboBox.selectedItem = fixWidth(startAt.minutes, 2);
  63. }
  64. else {
  65. unknownTimeCheckBox.selected = true;
  66. }
  67. startAtChangeHandler();
  68. notesTextArea.text = _sessionMetadata.notes;
  69. }
  70. private static function fixWidth(value:int, minLength:int):String {
  71. var result:String = value.toString();
  72. while (result.length < minLength) {
  73. result = "0" + result;
  74. }
  75. return result;
  76. }
  77. private function startAtChangeHandler():void {
  78. var startAt:Date = startAtDateField.selectedDate;
  79. if (startAt == null) {
  80. sessionMetadata.setStartAt(null, false);
  81. }
  82. else {
  83. // maybe we need to incorporate the time too
  84. if (!unknownTimeCheckBox.selected) {
  85. startAt.hours = int(hourComboBox.selectedItem);
  86. startAt.minutes = int(minuteComboBox.selectedItem);
  87. sessionMetadata.setStartAt(startAt, true);
  88. }
  89. else {
  90. sessionMetadata.setStartAt(startAt, false);
  91. }
  92. }
  93. mainGrid.executeChildBindings(true);
  94. }
  95. ]]>
  96. </mx:Script>
  97. <mx:Boolean id="ready">{true}</mx:Boolean>
  98. <mx:Grid id="mainGrid" width="100%" height="100%">
  99. <mx:GridRow width="100%">
  100. <mx:GridItem height="100%" horizontalAlign="right" verticalAlign="middle">
  101. <mx:Label text="Session Sub Title"/>
  102. </mx:GridItem>
  103. <mx:GridItem width="100%" height="100%" verticalAlign="middle">
  104. <mx:TextInput width="100%" id="sessionSubTitleTextInput" change="{sessionMetadata.subTitle = sessionSubTitleTextInput.text}"/>
  105. </mx:GridItem>
  106. </mx:GridRow>
  107. <mx:GridRow width="100%">
  108. <mx:GridItem height="100%" horizontalAlign="right" verticalAlign="middle">
  109. <mx:Label text="Session Date"/>
  110. </mx:GridItem>
  111. <mx:GridItem width="100%" height="100%" verticalAlign="middle">
  112. <mx:DateField id="startAtDateField" formatString="DD/MM/YYYY" change="{startAtChangeHandler()}" selectableRange="{selectableStartAtRange}"/>
  113. </mx:GridItem>
  114. </mx:GridRow>
  115. <mx:GridRow width="100%" enabled="{startAtDateField.selectedDate != null}">
  116. <mx:GridItem height="100%" horizontalAlign="right" verticalAlign="middle">
  117. <mx:Label text="Scheduled Start Time"/>
  118. </mx:GridItem>
  119. <mx:GridItem width="100%" height="100%" verticalAlign="middle">
  120. <mx:HBox horizontalGap="2" enabled="{!unknownTimeCheckBox.selected}" verticalAlign="middle">
  121. <mx:ComboBox width="55" id="hourComboBox" rowCount="13" change="{startAtChangeHandler()}"/>
  122. <mx:Label text=":" textAlign="center" maxWidth="10"/>
  123. <mx:ComboBox width="55" id="minuteComboBox" rowCount="12" change="{startAtChangeHandler()}"/>
  124. <mx:Label text="(hh:mm)"/>
  125. </mx:HBox>
  126. <mx:CheckBox label="unknown" labelPlacement="left" width="100%" textAlign="right" id="unknownTimeCheckBox" change="{startAtChangeHandler()}"/>
  127. </mx:GridItem>
  128. </mx:GridRow>
  129. <mx:GridRow width="100%" height="100%">
  130. <mx:GridItem height="100%" horizontalAlign="right" verticalAlign="top" paddingTop="2">
  131. <mx:Label text="Notes"/>
  132. </mx:GridItem>
  133. <mx:GridItem width="100%" height="100%" verticalAlign="middle">
  134. <mx:TextArea id="notesTextArea" width="100%" height="100%" change="{sessionMetadata.notes = notesTextArea.text}"/>
  135. </mx:GridItem>
  136. </mx:GridRow>
  137. </mx:Grid>
  138. </mx:VBox>