Uploaded image for project: 'Apache Flex'
  1. Apache Flex
  2. FLEX-9203

[customer] Focus remains on DataGrid when opening the modal Popup during editing the cell on DataGrid

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Blocker
    • Resolution: Not A Problem
    • Adobe Flex SDK 2.0.1 (Release)
    • mx: DataGrid
    • None
    • Affected OS(s): All OS Platforms
      Affected OS(s): All OS Platforms
      Language Found: English

    Description

      Even if the modal PopUp appears, the parent win, in this case datagrid is available to edit.
      This default seems not good. There is a workaround, set dg.editable = false.
      However, could you improve the FocusManager to handle the focus, especially to modal
      popup much easier to develop???

      Reproduction:
      1. Run alerTest.mxml
      2. In the cell, 20060606, remove the last digit 6 to show alert
      3. Enter Tab Key very quickly several times before displaying Alert win
      or Enter Tab Key and Enter Key at the same time, actually enter Enter key is little bit later
      4. Do the above step 3 several times
      5. Focus remains on the dataGrid.

      Actual Results:
      even if the Alert window appears, but the focus remains on the DataGrid and the key control is available on the DataGrid.

      Expected Results:

      Workaround:
      Put dg.editable = false; // disable the datagrid., if necesarry

      Test Case:
      alerTest.mxml
      ==========
      <?xml version="1.0" encoding="utf-8"?>
      <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">

      <mx:Model id="dataModel" source="AlertData.xml"/>

      <mx:Script>
      <![CDATA[
      import mx.core.UIComponent;
      import mx.controls.Alert;
      import mx.events.ValidationResultEvent;
      import mx.validators.DateValidator;
      import mx.events.DataGridEvent;

      // RowIndex for error
      [Bindable]
      private var myRowIndex:int;

      // ColumnIndex for erro
      [Bindable]
      private var myColIndex:int;

      private var errFlag:Boolean = false;

      private function itemEditHandler(evt:DataGridEvent):void {
      var editor:Object = evt.currentTarget.itemEditorInstance;
      var colIndex:int = evt.columnIndex;
      var rowIndex:int = evt.rowIndex;
      var str:String = editor.text;

      if(colIndex == 0) {
      if(str != "") {
      var tdv:DateValidator = new DateValidator();
      tdv.inputFormat = "yyyymmdd";
      var res:ValidationResultEvent = tdv.validate(str);

      if(res.type == "invalid") {
      errFlag = true;
      //dg.editable = false; // disable the datagrid.
      myRowIndex = rowIndex;
      myColIndex = colIndex;
      callLater(showAlert,["Invalid Date!!"]);
      } else {
      if(str < "19700101" || str > "20180118") {
      errFlag = true;
      //dg.editable = false; // disable the datagrid.
      myRowIndex = rowIndex;
      myColIndex = colIndex;
      callLater(showAlert,["Invalid Date!!"]);
      }
      }
      }
      }
      }

      // Show Alert Message
      private function showAlert(strMsg:String):void {
      Alert.buttonWidth = 102;
      var objAlert:Alert = Alert.show(strMsg, "Warning!!");
      objAlert.setStyle("color", "#000000");
      objAlert.setStyle("headerColors", "#ffff99", "#ffff99");
      objAlert.setStyle("backgroundColor", "#ffff99");
      objAlert.setStyle("borderColor", "#ffff99");
      if(objAlert.isPopUp) {
      objAlert.addEventListener("close", mySetFocus);
      }
      }

      // Cell move at the error
      private function mySetFocus(event:Event):void {
      dg.editedItemPosition =

      { rowIndex:myRowIndex, columnIndex:myColIndex }

      ;
      //dg.editable = true; // allow data entry again.
      }
      ]]
      >
      </mx:Script>

      <mx:DataGrid id="dg" dataProvider="

      {dataModel.data}

      " editable="true" itemEditEnd="itemEditHandler(event)" width="100%" height="100%" >
      <mx:columns>
      <mx:DataGridColumn dataField="Date"/>
      <mx:DataGridColumn dataField="Time"/>
      <mx:DataGridColumn dataField="Number"/>
      <mx:DataGridColumn dataField="String"/>
      </mx:columns>
      </mx:DataGrid>
      </mx:Application>

      AlertData.xml
      ==========
      <?xml version="1.0" encoding="utf-8"?>
      <datas>
      <data>
      <Date>20060601</Date>
      <Time>1000</Time>
      <Number>100</Number>
      <String>aaaaa</String>
      </data>
      <data>
      <Date>20060602</Date>
      <Time>1010</Time>
      <Number>1000</Number>
      <String>bbbbb</String>
      </data>
      <data>
      <Date>20060603</Date>
      <Time>1020</Time>
      <Number>10000</Number>
      <String>ccccc</String>
      </data>
      <data>
      <Date>20060604</Date>
      <Time>1030</Time>
      <Number>100000</Number>
      <String>ddddd</String>
      </data>
      <data>
      <Date>20060605</Date>
      <Time>1040</Time>
      <Number>1000000</Number>
      <String>eeeee</String>
      </data>
      <data>
      <Date>20060606</Date>
      <Time>1050</Time>
      <Number>10000000</Number>
      <String>fffff</String>
      </data>
      <data>
      <Date>20060607</Date>
      <Time>1100</Time>
      <Number>100000000</Number>
      <String>ggggg</String>
      </data>
      <data>
      <Date>20060608</Date>
      <Time>1110</Time>
      <Number>1000000000</Number>
      <String>hhhhh</String>
      </data>
      <data>
      <Date>20060609</Date>
      <Time>1120</Time>
      <Number>10000000000</Number>
      <String>iiiii</String>
      </data>
      <data>
      <Date>20060610</Date>
      <Time>1130</Time>
      <Number>100000000000</Number>
      <String>jjjjj</String>
      </data>
      <data>
      <Date>20060611</Date>
      <Time>1140</Time>
      <Number>1000000000000</Number>
      <String>kkkkk</String>
      </data>
      <data>
      <Date>20060612</Date>
      <Time>1150</Time>
      <Number>10000000000000</Number>
      <String>lllll</String>
      </data>
      </datas>

      Attachments

        Activity

          People

            adobejira Adobe JIRA
            adobejira Adobe JIRA
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: