You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by al...@apache.org on 2018/08/03 07:55:04 UTC

[royale-asjs] branch feature/MXRoyale updated: IDropInListItemRenderer.as Added

This is an automated email from the ASF dual-hosted git repository.

alinakazi pushed a commit to branch feature/MXRoyale
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/feature/MXRoyale by this push:
     new aaee281  IDropInListItemRenderer.as Added
aaee281 is described below

commit aaee28177771ea6cc41ee0b8acaf842a05ba11b3
Author: alinakazi <AL...@GMAIL.COM>
AuthorDate: Fri Aug 3 12:55:01 2018 +0500

    IDropInListItemRenderer.as Added
---
 .../listClasses/IDropInListItemRenderer.as         | 163 +++++++++++++++++++++
 1 file changed, 163 insertions(+)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/IDropInListItemRenderer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/IDropInListItemRenderer.as
new file mode 100644
index 0000000..61e1cf3
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/IDropInListItemRenderer.as
@@ -0,0 +1,163 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.controls.listClasses
+{
+
+/**
+ *  The interface for "drop-in" item renderers.  Most IListItemRenderers
+ *  are not "drop-ins".  They are expecting to use a particular field of
+ *  the data provider item.  For example, they may assign the "lastName"
+ *  property of the item to a Label's <code>text</code> property.  This
+ *  is easy to write using data-binding, but has the negative 
+ *  consequence that the renderer cannot be re-used in another column
+ *  of a DataGrid or another List with different fields.
+ *  IDropInListItemRenderer allows a renderer to be re-used.  The list
+ *  classes will pass more information to the renderer so that it
+ *  can determine which field to use at run-time.
+ *
+ *  <p>Components that you want to use as drop-in item renderers or drop-in
+ *  item editors  must implement the IDropInListItemRenderer interface. 
+ *  Many Flex component implement this interface, and therefore are usable
+ *  as drop-in item renderers and drop-in item editors in any column or
+ *  list.</p>
+ *
+ *  <p>Drop-in item renderers or drop-in item editors also must implement
+ *  the IDataRenderer interface to define the <code>data</code> property.</p> 
+ *
+ *  <p>When a component is used as a drop-in item renderer or drop-in
+ *  item editor, Flex initializes the <code>listData</code> property
+ *  of the component with the appropriate data from the list control.
+ *  The component can then use the <code>listData</code> property
+ *  to initialize the <code>data</code> property of the drop-in
+ *  item renderer or drop-in item editor.</p>
+ *
+ *  <p>The <code>listData</code> property is of type BaseListData, 
+ *  where the BaseListData class has four subclasses:
+ *  DataGridListData, ListData, TreeListData, and MenuListData. 
+ *  The actual data type of the value of the <code>listData</code> property 
+ *  depends on the control using the drop-in item renderer or item editor. 
+ *  For a DataGrid control, the value is of type DataGridListData, 
+ *  for a List control the value is of type ListData,
+ *  for a Tree control, the value is of type TreeListData, 
+ *  and for a Menu control, the value is of type MenuListData..</p>
+ *
+ *  <p>The following example shows the setter method for the
+ *  <code>data</code> property for the NumericStepper control
+ *  that initializes NumericStepper's <code>value</code> property
+ *  based on the value of the <code>listData</code> property:</p>
+ *
+ *  <pre>
+ *    public function set data(value:Object):void
+ *    {
+ *      _data = value;
+ *    
+ *      this.value = _listData ? parseFloat(_listData.label) : Number(_data);
+ *    
+ *      dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
+ *    }
+ *  </pre>
+ *
+ *  <p>In the example above, the NumericStepper control ignores the
+ *  <code>data</code> property  when setting NumericStepper's
+ *  <code>value</code> property, and uses the <code>listData</code>
+ *  property instead.</p>
+ *
+ *  <p>To implement the IDropInListItemRenderer interface,
+ *  you define a setter and getter method to implement
+ *  the <code>listData</code> property.
+ *  Typically, the setter method writes the value of the
+ *  <code>listData</code> property to an internal variable.
+ *  The list class always assigns this property then sets
+ *  the data provider item in the <code>data</code> property.</p>
+ *
+ *  <p>Notice that the setter method for the <code>listData</code> property 
+ *  does not dispatch an event. 
+ *  This is because the list classes always set <code>listData</code>, 
+ *  then set the <code>data</code> property. 
+ *  Setting the <code>data</code> property also dispatches the <code>dataChange</code> event. 
+ *  You never set <code>listData</code> on its own, 
+ *  so it does not need to dispatch its own event. </p>
+ *
+ *  <p>The <code>data</code> setter method could call the <code>invalidateProperties()</code> method 
+ *  if it did something that required the control to update itself. 
+ *  It would then be up to the component developer to write a <code>commitProperties()</code> method 
+ *  to determine that <code>listData</code> was modified, and handle it accordingly. </p>
+ * 
+ *  <p>The getter method returns the current value
+ *  of the internal variable,  as the following example shows:</p>
+ *  
+ *  <pre>
+ *    // Internal variable for the property value.
+ *    private var _listData:BaseListData;
+ *    
+ *    // Make the listData property bindable.
+ *    [Bindable("dataChange")]
+ *    
+ *    // Define the getter method.
+ *    public function get listData():BaseListData
+ *    {
+ *      return _listData;
+ *    }
+ *    
+ *    // Define the setter method,
+ *    public function set listData(value:BaseListData):void
+ *    {
+ *      _listData = value;
+ *    }
+ *  </pre>
+ *
+ *  @see mx.controls.listClasses.BaseListData
+ *  @see mx.core.IDataRenderer
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public interface IDropInListItemRenderer
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  listData
+    //----------------------------------
+
+    /**
+     *  Implements the <code>listData</code> property
+     *  using setter and getter methods. 
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    function get listData():BaseListData;
+    
+    /**
+     *  @private
+     */
+    function set listData(value:BaseListData):void;
+}
+
+}