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/05/29 08:55:27 UTC

[royale-asjs] branch feature/MXRoyale updated: ItemRenderer.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 b62831e  ItemRenderer.as Added
b62831e is described below

commit b62831ec3c7fca3a6aa9c8f6ad1b63b5d48001a5
Author: alinakazi <AL...@GMAIL.COM>
AuthorDate: Tue May 29 13:55:25 2018 +0500

    ItemRenderer.as Added
---
 .../components/supportClasses/ItemRenderer.as      | 775 +++++++++++++++++++++
 1 file changed, 775 insertions(+)

diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/ItemRenderer.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/ItemRenderer.as
new file mode 100644
index 0000000..90f3d3b
--- /dev/null
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/supportClasses/ItemRenderer.as
@@ -0,0 +1,775 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 spark.components.supportClasses
+{
+/* import flash.events.Event;
+import flash.events.MouseEvent;
+import flash.geom.Point;
+
+import mx.core.InteractionMode;
+import mx.core.mx_internal;
+import mx.events.FlexEvent;
+import spark.components.IItemRenderer;
+
+import spark.components.ResizeMode;
+
+use namespace mx_internal;  */
+
+import spark.components.DataRenderer;
+/**
+ *  The ItemRenderer class is the base class for Spark item renderers.
+ *
+ *  <p>Item renderers support optional view states. 
+ *  You typically use view states in MXML item renderers to control 
+ *  the appearance of a data item based on user interaction with the item. 
+ *  The ItemRenderer class supports all views states so that you can use 
+ *  those item renderers with list-based classes.</p>
+ *
+ *  <p>Flex defines the following view states that you can support 
+ *  in your item renderers: </p>
+ *  <ul>
+ *    <li>normal - The data item has no user interaction.</li>
+ *    <li>hovered - The mouse is over the data item.</li>
+ *    <li>selected - The data item is selected.</li>
+ *    <li>dragging - The data item is being dragged.</li>
+ *    <li>normalAndShowCaret - The data item is in the normal state, 
+ *      and it has focus in the item list. </li>
+ *    <li>hoveredAndShowCaret - The data item is in the hovered state, 
+ *      and it has focus in the item list.</li>
+ *    <li>selectedAndShowCaret - The data item is in the normal state, 
+ *      and it has focus in the item list.</li>
+ *  </ul>
+ *
+ *  <p>When the user interacts with a control in a way that changes 
+ *  the view state of the item renderer, Flex first determines if the 
+ *  renderer defines that view state. 
+ *  If the item renderer supports the view state, Flex sets the item renderer 
+ *  to use that view state. 
+ *  If the item renderer does not supports the view state, Flex does nothing.</p>
+ * 
+ *  @mxml
+ *
+ *  <p>The <code>&lt;s:ItemRenderer&gt;</code> tag inherits all of the tag 
+ *  attributes of its superclass and adds the following tag attributes:</p>
+ *
+ *  <pre>
+ *  &lt;s:ItemRenderer
+ *    <strong>Properties</strong>
+ *    autoDrawBackground="true"
+ *    selected="false"
+ *    showsCaret="false"
+ *  /&gt;
+ *  </pre>
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Royale 0.9.4
+ */
+public class ItemRenderer extends DataRenderer
+{    // implements IItemRenderer
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  Constructor.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */
+    public function ItemRenderer()
+    {
+        super();
+        
+        // Initially state is dirty
+      /*   rendererStateIsDirty = true;
+        
+        interactionStateDetector = new InteractionStateDetector(this);
+        interactionStateDetector.addEventListener(Event.CHANGE, interactionStateDetector_changeHandler); */
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Private Properties
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     *  Helper class to help determine when we are in the hovered or down states
+     */
+   // private var interactionStateDetector:InteractionStateDetector;
+    
+    /**
+     *  @private
+     *  Whether the renderer's state is invalid or not.
+     */
+   // private var rendererStateIsDirty:Boolean = false;
+    
+    /**
+     *  @private
+     *  A flag associated with rendererStateIsDirty, determining if 
+     *  this renderer should play any associated transitions 
+     *  in the next validation pass.  This is different from the mx_internal
+     *  playTransitions flag, which is set externally by List and DataGroup. 
+     */
+   // private var playTransitionsOnNextRendererState:Boolean = false;
+    
+    /**
+     *  @private
+     *  A flag determining if this renderer should play any 
+     *  associated transitions when a state change occurs. 
+     */
+  //  mx_internal var playTransitions:Boolean = true; 
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Public Properties 
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  autoDrawBackground
+    //----------------------------------
+    
+    /**
+     *  @private
+     *  storage for the autoDrawBackground property 
+     */ 
+   // private var _autoDrawBackground:Boolean = true;
+    
+    /**
+     *  Specifies whether the item renderer draws the 
+     *  background of the data item during user interaction.
+     *  Interactions include moving the mouse over the item, 
+     *  selecting the item, and moving the caret of the item.
+     * 
+     *  <p>If <code>true</code>, the background for 
+     *  the item renderer is automatically drawn, and it 
+     *  depends on the styles that are set (<code>contentBackgroundColor</code>, 
+     *  <code>alternatingItemColor</code>, <code>rollOverColor</code>, 
+     *  <code>downColor</code>, <code>selectionColor</code>) 
+     *  and the state that the item renderer is in.</p>
+     *
+     *  <p>If <code>false</code>, the item render draws no backgrounds.
+     *  Your custom item renderer is responsible for displaying the 
+     *  background colors for all user interactions.</p>
+     * 
+     *  @default true
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */
+    /* public function get autoDrawBackground():Boolean
+    {
+        return _autoDrawBackground;
+    } */
+    
+    /**
+     *  @private
+     */
+    /* public function set autoDrawBackground(value:Boolean):void
+    {
+        if (_autoDrawBackground == value)
+            return;
+        
+        _autoDrawBackground = value;
+        
+        if (_autoDrawBackground)
+        {
+            redrawRequested = true;
+            super.$invalidateDisplayList();
+        }
+    } */
+    
+    //----------------------------------
+    //  down
+    //----------------------------------
+    /**
+     *  @private
+     *  storage for the down property 
+     */    
+    //private var _down:Boolean = false;
+    
+    /**
+     *  Set to <code>true</code> when the user is pressing down on an item renderer.
+     *
+     *  @default false
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */    
+    /* protected function get down():Boolean
+    {
+        return _down;
+    } */
+    
+    /**
+     *  @private
+     */    
+    /* protected function set down(value:Boolean):void
+    {
+        if (value != _down)
+        {
+            _down = value;
+            invalidateRendererState();
+            if (autoDrawBackground)
+            {
+                redrawRequested = true;
+                super.$invalidateDisplayList();
+            }
+        }
+    } */
+    
+    //----------------------------------
+    //  hovered
+    //----------------------------------
+    /**
+     *  @private
+     *  storage for the hovered property 
+     */    
+    //private var _hovered:Boolean = false;
+    
+    /**
+     *  Set to <code>true</code> when the user is hovered over the item renderer.
+     *
+     *  @default false
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */    
+    /* protected function get hovered():Boolean
+    {
+        return _hovered;
+    } */
+    
+    /**
+     *  @private
+     */    
+    /* protected function set hovered(value:Boolean):void
+    {
+        if (value != _hovered)
+        {
+            _hovered = value;
+            invalidateRendererState();
+            if (autoDrawBackground)
+            {
+                redrawRequested = true;
+                super.$invalidateDisplayList();
+            }
+        }
+    } */
+    
+    //----------------------------------
+    //  itemIndex
+    //----------------------------------
+    
+    /**
+     *  @private
+     *  storage for the itemIndex property 
+     */    
+    /* private var _itemIndex:int;
+    
+    [Bindable("itemIndexChanged")] */
+    
+    /**
+     *  @inheritDoc 
+     *
+     *  @default 0
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */    
+    /* public function get itemIndex():int
+    {
+        return _itemIndex;
+    } */
+    
+    /**
+     *  @private
+     */    
+    /* public function set itemIndex(value:int):void
+    {
+        if (value == _itemIndex)
+            return;
+        
+        _itemIndex = value;
+        
+        if (autoDrawBackground)
+        {
+            redrawRequested = true;
+            super.$invalidateDisplayList();
+        }
+        
+        dispatchEvent(new Event("itemIndexChanged"));
+    } */
+    
+    //----------------------------------
+    //  labelDisplay
+    //----------------------------------
+    
+    /**
+     *  Optional item renderer label component. 
+     *  This component is used to determine the value of the 
+     *  <code>baselinePosition</code> property in the host component of 
+     *  the item renderer. 
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */
+    /* [Bindable]     
+    public var labelDisplay:TextBase; */
+    
+    //----------------------------------
+    //  showsCaret
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the showsCaret property 
+     */
+    //private var _showsCaret:Boolean = false;
+
+    /**
+     *  @inheritDoc 
+     *
+     *  @default false  
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */    
+    /* public function get showsCaret():Boolean
+    {
+        return _showsCaret;
+    } */
+    
+    /**
+     *  @private
+     */    
+    /* public function set showsCaret(value:Boolean):void
+    {
+        if (value == _showsCaret)
+            return;
+
+        _showsCaret = value;
+        invalidateRendererState();
+        if (autoDrawBackground)
+        {
+            redrawRequested = true;
+            super.$invalidateDisplayList();
+        }
+    } */
+    
+    //----------------------------------
+    //  selected
+    //----------------------------------
+    /**
+     *  @private
+     *  storage for the selected property 
+     */    
+    //private var _selected:Boolean = false;
+    
+    /**
+     *  @inheritDoc 
+     *
+     *  @default false
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */    
+    /* public function get selected():Boolean
+    {
+        return _selected;
+    } */
+    
+    /**
+     *  @private
+     */    
+    /* public function set selected(value:Boolean):void
+    {
+        if (value != _selected)
+        {
+            _selected = value;
+            invalidateRendererState();
+            if (autoDrawBackground)
+            {
+                redrawRequested = true;
+                super.$invalidateDisplayList();
+            }
+        }
+    }
+       */ 
+    //----------------------------------
+    //  dragging
+    //----------------------------------
+    
+    /**
+     *  @private
+     *  Storage for the dragging property. 
+     */
+    //private var _dragging:Boolean = false;
+
+    /**
+     *  @inheritDoc  
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */
+    /* public function get dragging():Boolean
+    {
+        return _dragging;
+    } */
+
+    /**
+     *  @private  
+     */
+    /* public function set dragging(value:Boolean):void
+    {
+        if (value != _dragging)
+        {
+            _dragging = value;
+            invalidateRendererState();
+        }
+    } */
+
+    //----------------------------------
+    //  label
+    //----------------------------------
+    
+    /**
+     *  @private 
+     *  Storage var for label
+     */ 
+   /*  private var _label:String = "";
+    
+    [Bindable("labelChanged")] */
+    
+    /**
+     *  @inheritDoc 
+     *
+     *  @default ""    
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */
+    /* public function get label():String
+    {
+        return _label;
+    } */
+    
+    /**
+     *  @private
+     */ 
+    /* public function set label(value:String):void
+    {
+        if (value == _label)
+            return;
+        
+        _label = value;
+            
+        // Push the label down into the labelDisplay,
+        // if it exists
+        if (labelDisplay)
+            labelDisplay.text = _label;
+        
+        dispatchEvent(new Event("labelChanged"));
+    } */
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Properties - UIComponent 
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  baselinePosition
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    /* override public function get baselinePosition():Number
+    {
+        if (!validateBaselinePosition() || !labelDisplay)
+            return super.baselinePosition;
+
+        var labelPosition:Point = globalToLocal(labelDisplay.parent.localToGlobal(
+            new Point(labelDisplay.x, labelDisplay.y)));
+            
+        return labelPosition.y + labelDisplay.baselinePosition;
+    } */
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Methods - ItemRenderer State Support 
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Returns the name of the state to be applied to the renderer. For example, a
+     *  very basic List item renderer would return the String "normal", "hovered", 
+     *  or "selected" to specify the renderer's state.
+     *  If dealing with touch interactions (or mouse interactions where selection
+     *  is ignored), "down" and "downAndSelected" are also important states.
+     * 
+     *  <p>A subclass of ItemRenderer must override this method to return a value 
+     *  if the behavior desired differs from the default behavior.</p>
+     * 
+     *  <p>In Royale 0.9.4, the 3 main states were "normal", "hovered", and "selected".
+     *  In Royale 0.9.4, "down" and "downAndSelected" have been added.</p>
+     * 
+     *  <p>The full set of states supported (in order of precedence) are: 
+     *    <ul>
+     *      <li>dragging</li>
+     *      <li>downAndSelected</li>
+     *      <li>selectedAndShowsCaret</li>
+     *      <li>hoveredAndShowsCaret</li>
+     *      <li>normalAndShowsCaret</li>
+     *      <li>down</li>
+     *      <li>selected</li>
+     *      <li>hovered</li>
+     *      <li>normal</li>
+     *    </ul>
+     *  </p>
+     * 
+     *  @return A String specifying the name of the state to apply to the renderer. 
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Royale 0.9.4
+     */
+    /* protected function getCurrentRendererState():String
+    {
+        // this code is pretty confusing without multi-dimensional states, but it's
+        // defined in order of precedence.
+        
+        if (dragging && hasState("dragging"))
+            return "dragging";
+        
+        if (selected && down && hasState("downAndSelected"))
+            return "downAndSelected";
+        
+        if (selected && showsCaret && hasState("selectedAndShowsCaret"))
+            return "selectedAndShowsCaret";
+        
+        if (hovered && showsCaret && hasState("hoveredAndShowsCaret"))
+            return "hoveredAndShowsCaret";
+        
+        if (showsCaret && hasState("normalAndShowsCaret"))
+            return "normalAndShowsCaret"; 
+          
+        if (down && hasState("down"))
+            return "down";
+        
+        if (selected && hasState("selected"))
+            return "selected";
+        
+        if (hovered && hasState("hovered"))
+            return "hovered";
+        
+        if (hasState("normal"))    
+            return "normal";
+        
+        // If none of the above states are defined in the item renderer,
+        // we return currentState, so we don't change the state just 
+        // in case the developer put the item renderer into its 
+        // own custom state.
+        return currentState;
+    } */
+    
+    /**
+     *  Marks the renderer's state as invalid so that the new state is set
+     *  during a later screen update.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.1
+     *  @playerversion AIR 2.5
+     *  @productversion Royale 0.9.4
+     */
+    /* protected function invalidateRendererState():void
+    {
+        playTransitionsOnNextRendererState = (playTransitionsOnNextRendererState || playTransitions);
+        
+        if (rendererStateIsDirty)
+            return; // State is already invalidated
+        
+        rendererStateIsDirty = true;
+        invalidateProperties();
+    } */
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden Methods
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */ 
+    /* override protected function commitProperties():void
+    {
+        // need to run this code before calling super.commitProperites
+        // because the super.commitProperties can handle state change on 
+        // rare occassion (during initialization)
+        if (rendererStateIsDirty)
+        {
+            setCurrentState(getCurrentRendererState(), playTransitionsOnNextRendererState); 
+            playTransitionsOnNextRendererState = false;
+            rendererStateIsDirty = false;
+        }
+        
+        super.commitProperties();
+    } */
+    
+    /**
+     *  @private
+     */ 
+    /* override public function styleChanged(styleName:String):void
+    {
+        var allStyles:Boolean = styleName == null || styleName == "styleName";
+        
+        super.styleChanged(styleName);
+        
+        if (autoDrawBackground && (allStyles || styleName == "alternatingItemColors" || 
+            styleName == "contentBackgroundColor" || styleName == "rollOverColor" || 
+            styleName == "downColor" || styleName == "selectionColor"))
+        {
+            redrawRequested = true;
+            super.$invalidateDisplayList();
+        }
+    } */
+    
+    /**
+     *  @private
+     */
+    /* override mx_internal function drawBackground():void
+    {
+        // if autoDrawBackground is set to true, we always 
+        // draw a background and don't need to worry about mouseEnabledWhereTransparent.
+        // However, if it's false, then we should just let super.drawBackground()
+        // do its job.
+        if (!autoDrawBackground)
+        {
+            super.drawBackground();
+            return;
+        }
+        
+        // TODO (rfrishbe): Would be good to remove this duplicate code with the 
+        // super.drawBackground() version
+        var w:Number = (resizeMode == ResizeMode.SCALE) ? measuredWidth : unscaledWidth;
+        var h:Number = (resizeMode == ResizeMode.SCALE) ? measuredHeight : unscaledHeight;
+        
+        if (isNaN(w) || isNaN(h))
+            return;
+        
+        graphics.clear();
+        
+        var backgroundColor:uint;
+        var drawBackground:Boolean = true;
+        var downColor:* = getStyle("downColor");
+        
+        if (down && downColor !== undefined)
+            backgroundColor = downColor;
+        else if (selected)
+            backgroundColor = getStyle("selectionColor");
+        else if (hovered)
+            backgroundColor = getStyle("rollOverColor");
+        else
+        {
+            var alternatingColors:Array;
+            var alternatingColorsStyle:Object = getStyle("alternatingItemColors");
+            
+            if (alternatingColorsStyle)
+                alternatingColors = (alternatingColorsStyle is Array) ? (alternatingColorsStyle as Array) : [alternatingColorsStyle];
+           
+            if (alternatingColors && alternatingColors.length > 0)
+            {
+                // translate these colors into uints
+                styleManager.getColorNames(alternatingColors);
+                
+                backgroundColor = alternatingColors[itemIndex % alternatingColors.length];
+            }            
+            else
+            {
+                // don't draw background if it is the contentBackgroundColor. The
+                // list skin handles the background drawing for us.
+                drawBackground = false;
+            }
+        }
+        
+        graphics.beginFill(backgroundColor, drawBackground ? 1 : 0);
+        
+        if (showsCaret)
+        {
+            graphics.lineStyle(1, getStyle("selectionColor"));
+            graphics.drawRect(0.5, 0.5, w-1, h-1);
+        }
+        else 
+        {
+            graphics.lineStyle();
+            graphics.drawRect(0, 0, w, h);
+        }
+            
+        graphics.endFill();
+    } */
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Event handling
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */
+    /* private function interactionStateDetector_changeHandler(event:Event):void
+    {
+        playTransitions = interactionStateDetector.playTransitions;
+        down = (interactionStateDetector.state == InteractionState.DOWN);
+        hovered = (interactionStateDetector.state == InteractionState.OVER);
+        playTransitions = true;
+    } */
+
+}
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
alinakazi@apache.org.