This is an automated email from the ASF dual-hosted git repository. pent 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 0fdd12a ProgressBar et al compiles. 0fdd12a is described below commit 0fdd12a8914444ce8bc1b759b9e8132e37990ea9 Author: Peter Ent <p...@apache.org> AuthorDate: Wed Apr 4 16:18:51 2018 -0400 ProgressBar et al compiles. --- .../src/main/resources/mx-royale-manifest.xml | 1 + .../src/main/royale/mx/controls/ProgressBar.as | 1248 ++++++++++++++++++++ .../royale/mx/controls/ProgressBarDirection.as | 63 + .../mx/controls/ProgressBarLabelPlacement.as | 93 ++ .../src/main/royale/mx/controls/ProgressBarMode.as | 82 ++ 5 files changed, 1487 insertions(+) diff --git a/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml b/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml index db16aae..6c83fcd 100644 --- a/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml +++ b/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml @@ -29,6 +29,7 @@ <component id="Label" class="mx.controls.Label" /> <component id="LinkButton" class="mx.controls.LinkButton" /> <component id="NumericStepper" class="mx.controls.NumericStepper" /> + <component id="ProgressBar" class="mx.controls.ProgressBar" /> <component id="RadioButton" class="mx.controls.RadioButton" /> <component id="RadioButtonGroup" class="mx.controls.RadioButtonGroup" /> <component id="Spacer" class="mx.controls.Spacer" /> diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBar.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBar.as new file mode 100644 index 0000000..1098605 --- /dev/null +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBar.as @@ -0,0 +1,1248 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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 +{ +COMPILE::JS { + import goog.DEBUG; +} +import org.apache.royale.events.Event; +import org.apache.royale.events.ProgressEvent; +import org.apache.royale.events.IEventDispatcher; +import org.apache.royale.utils.Timer; + +/* +import flash.display.DisplayObject; +import flash.display.Graphics; +import flash.events.Event; +import flash.events.IEventDispatcher; +import flash.events.ProgressEvent; +import flash.events.TimerEvent; +import flash.text.TextLineMetrics; +import flash.utils.Timer; +*/ +import mx.core.IFlexDisplayObject; +/* +import mx.core.IFlexModuleFactory; +import mx.core.IFontContextComponent; +*/ +import mx.core.mx_internal; +/* +import mx.core.IUITextField; +*/ +import mx.core.UIComponent; +import mx.events.FlexEvent; +/* +import mx.core.UITextField; +import mx.styles.ISimpleStyleClient; +*/ +use namespace mx_internal; + +//-------------------------------------- +// Events +//-------------------------------------- + +/** + * Dispatched when the load completes. + * + * @eventType org.apache.royale.events.Event.COMPLETE + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ +[Event(name="complete", type="org.apache.royale.events.Event")] + +/** + * Dispatched when an object's state changes from visible to invisible. + * + * @eventType mx.events.FlexEvent.HIDE + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ +[Event(name="hide", type="mx.events.FlexEvent")] + +/** + * Dispatched as content loads in event + * or polled mode. + * + * @eventType org.apache.royale.events.ProgressEvent.PROGRESS + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ +[Event(name="progress", type="org.apache.royale.events.ProgressEvent")] + +/** + * Dispatched when the component becomes visible. + * + * @eventType mx.events.FlexEvent.SHOW + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ +[Event(name="show", type="mx.events.FlexEvent")] + + +/** + * Because this component does not define a skin for the mobile theme, Adobe + * recommends that you not use it in a mobile application. Alternatively, you + * can define your own mobile skin for the component. For more information, + * see <a href="http://help.adobe.com/en_US/flex/mobileapps/WS19f279b149e7481c698e85712b3011fe73-8000.html">Basics of mobile skinning</a>. + */ +[DiscouragedForProfile("mobileDevice")] + +/** + * The ProgressBar control provides a visual representation of the progress of a task over + * time. There are two types of ProgressBar controls: determinate and indeterminate. + * + * <p>A determinate ProgressBar control is a linear representation of the progress of a task over time. + * You use a determinate ProgressBar when the scope of the task is known. It displays when the user + * has to wait for an extended amount of time.</p> + * + * <p>An indeterminate ProgressBar control represents time-based processes for which the scope is + * not yet known. As soon as you can determine the scope, + * you should use a determinate ProgressBar control.</p> + * + * <p>The ProgressBar control has the following default characteristics:</p> + * <table class="innertable"> + * <tr> + * <th>Characteristic</th> + * <th>Description</th> + * </tr> + * <tr> + * <td>default size</td> + * <td>150 pixels wide by 4 pixels high</td> + * </tr> + * <tr> + * <td>Minimum size</td> + * <td>0 pixels</td> + * </tr> + * <tr> + * <td>Maximum size</td> + * <td>Undefined</td> + * </tr> + * </table> + * + * @mxml + * + * <p>The <code><mx:ProgressBar></code> tag inherits all of the tag attributes + * of its superclass, and adds the following tag attributes:</p> + * + * <pre> + * <mx:ProgressBar + * <strong>Properties</strong> + * conversion="1" + * direction="right|left" + * indeterminate="false|true" + * label="<i>No default</i>" + * labelPlacement="bottom|top|left|right|center" + * maximum="0" + * minimum="0" + * mode="event|polled|manual" + * source="<i>No default</i>" + * + * <strong>Styles</strong> + * barColor="undefined" + * barSkin="ProgressBarSkin" + * borderColor="0xAAB3B3" + * color="0x0B333C" + * disabledColor="0xAAB3B3" + * fontAntiAliasType="advanced" + * fontFamily="Verdana" + * fontGridFitType="pixel" + * fontSharpness="0" + * fontSize="10" + * fontThickness="0" + * fontStyle="normal|italic" + * fontWeight="normal|bold" + * horizontalGap="8" + * indeterminateMoveInterval="26" + * indeterminateSkin="ProgressIndeterminateSkin" + * labelWidth="Computed" + * leading="0" + * maskSkin="ProgressMaskSkin" + * paddingLeft="0" + * paddingRight="0" + * textAlign="left|right|center" + * textDecoration="none|underline" + * textIndent="0" + * themeColor="haloGreen|haloBlue|haloOrange" + * trackColors="[0xE6EEEE,0xE6EEEE]" + * trackHeight="Calculated" + * trackSkin="ProgressTrackSkin" + * verticalGap="6" + * + * <strong>Events</strong> + * complete="<i>No default</i>" + * hide="<i>No default</i>" + * progress="<i>No default</i>" + * show="<i>No default</i>" + * + * <strong>Effects</strong> + * completeEffect="<i>No default</i>" + * /> + * </pre> + * </p> + * + * @see mx.controls.ProgressBarDirection + * @see mx.controls.ProgressBarLabelPlacement + * @see mx.controls.ProgressBarMode + * + * @includeExample examples/SimpleProgressBar.mxml + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + * @royalesuppresspublicvarwarning + */ +public class ProgressBar extends UIComponent //implements IFontContextComponent +{ + //-------------------------------------------------------------------------- + // + // Constructor + // + //-------------------------------------------------------------------------- + + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function ProgressBar() + { + super(); + + pollTimer = new Timer(_interval); + cacheAsBitmap = true; + } + + //-------------------------------------------------------------------------- + // + // Variables + // + //-------------------------------------------------------------------------- + + /** + * @private + */ + mx_internal var _content:UIComponent; + + /** + * @private + */ + mx_internal var _bar:UIComponent; + + /** + * @private + */ + mx_internal var _indeterminateBar:IFlexDisplayObject; + + /** + * @private + */ + mx_internal var _determinateBar:IFlexDisplayObject; + + /** + * @private + */ + mx_internal var _track:IFlexDisplayObject; + + /** + * @private + */ + mx_internal var _barMask:IFlexDisplayObject; + + /** + * @private + */ + //mx_internal var _labelField:IUITextField; + + /** + * @private + */ + private var pollTimer:Timer; + + /** + * @private + */ + private var _interval:Number = 30; + + /** + * @private + */ + private var indeterminatePlaying:Boolean = false; + + /** + * @private + */ + private var stopPolledMode:Boolean = false; + + /** + * @private + */ + private var visibleChanged:Boolean = false; + + //-------------------------------------------------------------------------- + // + // Properties + // + //-------------------------------------------------------------------------- + + //---------------------------------- + // conversion + //---------------------------------- + + /** + * @private + * Storage for the conversion property. + */ + private var _conversion:Number = 1; + + [Bindable("conversionChanged")] + [Inspectable(defaultValue="1")] + + /** + * Number used to convert incoming current bytes loaded value and + * the total bytes loaded values. + * Flex divides the current and total values by this property and + * uses the closest integer that is less than or equal to each + * value in the label string. A value of 1 does no conversion. + * + * @default 1 + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get conversion():Number + { + return _conversion; + } + + /** + * @private + */ + public function set conversion(value:Number):void + { + if (!isNaN(value) && Number(value) > 0 && value != _conversion) + { + _conversion = Number(value); + + // invalidateDisplayList(); + + dispatchEvent(new Event("conversionChanged")); + } + } + + //---------------------------------- + // direction + //---------------------------------- + + /** + * @private + * Storage for the direction property. + */ + private var _direction:String = ProgressBarDirection.RIGHT; + + [Bindable("directionChanged")] + [Inspectable(enumeration="left,right", defaultValue="right")] + + /** + * Direction in which the fill of the ProgressBar expands toward completion. + * Valid values in MXML are + * <code>"right"</code> and <code>"left"</code>. + * + * <p>In ActionScript, you use use the following constants + * to set this property: + * <code>ProgressBarDirection.RIGHT</code> and + * <code>ProgressBarDirection.LEFT</code>.</p> + * + * @see mx.controls.ProgressBarDirection + * @default ProgressBarDirection.RIGHT + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get direction():String + { + return _direction; + } + + /** + * @private + */ + public function set direction(value:String):void + { + if (value == ProgressBarDirection.LEFT || value == ProgressBarDirection.RIGHT) + _direction = value; + + //invalidateDisplayList(); + + dispatchEvent(new Event("directionChanged")); + } + + //---------------------------------- + // indeterminate + //---------------------------------- + + /** + * @private + * Storage for the indeterminate property. + */ + private var _indeterminate:Boolean = false; + + /** + * @private + */ + private var indeterminateChanged:Boolean = true; + + [Bindable("indeterminateChanged")] + [Inspectable(category="General", defaultValue="false")] + + /** + * Whether the ProgressBar control has a determinate or + * indeterminate appearance. + * Use an indeterminate appearance when the progress status cannot be determined. + * If <code>true</code>, the appearance is indeterminate. + * + * @default false + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get indeterminate():Boolean + { + return _indeterminate; + } + + /** + * @private + */ + public function set indeterminate(value:Boolean):void + { + _indeterminate = value; + indeterminateChanged = true; + + //invalidateProperties(); + //invalidateDisplayList(); + + dispatchEvent(new Event("indeterminateChanged")); + } + + //---------------------------------- + // label + //---------------------------------- + + /** + * @private + * Storage for the label property. + */ + private var _label:String; + + /** + * @private + */ + private var labelOverride:String; + + [Bindable("labelChanged")] + [Inspectable(category="General", defaultValue="null")] + + /** + * Text that accompanies the progress bar. You can include + * the following special characters in the text string: + * + * <ul> + * <li>%1 = current loaded bytes</li> + * <li>%2 = total bytes</li> + * <li>%3 = percent loaded</li> + * <li>%% = "%" character</li> + * </ul> + * + * <p>If a field is unknown, it is replaced by "??". + * If undefined, the label is not displayed.</p> + * + * <p>If you are in manual mode, you can set the values of these special characters + * by using the <code>setProgress()</code> method.</p> + * + * @default "LOADING %3%%" + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get label():String + { + return _label; + } + + /** + * @private + */ + public function set label(value:String):void + { + labelOverride = value; + +// _label = value != null ? +// value : +// resourceManager.getString( +// "controls", "label"); + _label = value; + + invalidateDisplayList(); + + dispatchEvent(new Event("labelChanged")); + } + + //---------------------------------- + // labelPlacement + //---------------------------------- + + /** + * @private + * Storage for the labelPlacement property. + */ + private var _labelPlacement:String = ProgressBarLabelPlacement.BOTTOM; + + [Bindable("labelPlacementChanged")] + [Inspectable(category="General", enumeration="left,right,top,bottom,center", defaultValue="bottom")] + + /** + * Placement of the label. + * Valid values in MXML are <code>"right"</code>, <code>"left"</code>, + * <code>"bottom"</code>, <code>"center"</code>, and <code>"top"</code>. + * + * <p>In ActionScript, you can use use the following constants to set this property: + * <code>ProgressBarLabelPlacement.RIGHT</code>, <code>ProgressBarLabelPlacement.LEFT</code>, + * <code>ProgressBarLabelPlacement.BOTTOM</code>, <code>ProgressBarLabelPlacement.CENTER</code>, + * and <code>ProgressBarLabelPlacement.TOP</code>.</p> + * + * @see mx.controls.ProgressBarLabelPlacement + * @default ProgressBarLabelPlacement.BOTTOM + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get labelPlacement():String + { + return _labelPlacement; + } + + /** + * @private + */ + public function set labelPlacement(value:String):void + { + if (value != _labelPlacement) + _labelPlacement = value; + + //invalidateSize(); + //invalidateDisplayList(); + + dispatchEvent(new Event("labelPlacementChanged")); + } + + //---------------------------------- + // maximum + //---------------------------------- + + /** + * @private + * Storage for the maximum property. + */ + private var _maximum:Number = 0; + + [Bindable("maximumChanged")] + [Inspectable(category="General", defaultValue="0")] + + /** + * Largest progress value for the ProgressBar. You + * can only use this property in manual mode. + * + * @default 0 + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get maximum():Number + { + return _maximum; + } + + /** + * @private + */ + public function set maximum(value:Number):void + { + if (!isNaN(value) && _mode == ProgressBarMode.MANUAL && value != _maximum) + { + _maximum = value; + //invalidateDisplayList(); + dispatchEvent(new Event("maximumChanged")); + } + } + + //---------------------------------- + // minimum + //---------------------------------- + + /** + * @private + * Storage for the minimum property. + */ + private var _minimum:Number = 0; + + [Bindable("minimumChanged")] + [Inspectable(category="General", defaultValue="0")] + + /** + * Smallest progress value for the ProgressBar. This + * property is set by the developer only in manual mode. + * + * @default 0 + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get minimum():Number + { + return _minimum; + } + + /** + * @private + */ + public function set minimum(value:Number):void + { + if (!isNaN(value) && _mode == ProgressBarMode.MANUAL && value != _minimum) + { + _minimum = value; + + //invalidateDisplayList(); + + dispatchEvent(new Event("minimumChanged")); + } + } + + //---------------------------------- + // mode + //---------------------------------- + + /** + * @private + * Storage for the mode property. + */ + private var _mode:String = ProgressBarMode.EVENT; + + /** + * @private + */ + private var modeChanged:Boolean = false; + + [Bindable("modeChanged")] + [Inspectable(category="General", enumeration="event,polled,manual", defaultValue="event")] + + /** + * Specifies the method used to update the bar. + * Use one of the following values in MXML: + * + * <ul> + * <li><code>event</code> The control specified by the <code>source</code> + * property must dispatch progress and completed events. + * The ProgressBar control uses these events to update its status. + * The ProgressBar control only updates if the value of + * the <code>source</code> property extends the EventDispatcher class.</li> + * + * <li><code>polled</code> The <code>source</code> property must specify + * an object that exposes <code>bytesLoaded</code> and + * <code>bytesTotal</code> properties. The ProgressBar control + * calls these methods to update its status.</li> + * + * <li><code>manual</code> You manually update the ProgressBar status. + * In this mode you specify the <code>maximum</code> and <code>minimum</code> + * properties and use the <code>setProgress()</code> property method to + * specify the status. This mode is often used when the <code>indeterminate</code> + * property is <code>true</code>.</li> + * </ul> + * + * <p>In ActionScript, you can use use the following constants to set this property: + * <code>ProgressBarMode.EVENT</code>, <code>ProgressBarMode.POLLED</code>, + * and <code>ProgressBarMode.MANUAL</code>.</p> + * + * @see mx.controls.ProgressBarMode + * + * @default ProgressBarMode.EVENT + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get mode():String + { + return _mode; + } + + /** + * @private + */ + public function set mode(value:String):void + { + if (value != _mode) + { + if (_mode == ProgressBarMode.POLLED) + stopPolledMode = true; + + _mode = value; + + modeChanged = true; + indeterminateChanged = true; + + //invalidateProperties(); + //invalidateDisplayList(); + } + } + + //---------------------------------- + // percentComplete + //---------------------------------- + + [Bindable("progress")] + + /** + * Percentage of process that is completed.The range is 0 to 100. + * Use the <code>setProgress()</code> method to change the percentage. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get percentComplete():Number + { + if (_value < _minimum || _maximum < _minimum) + return 0; + + // Avoid divide by zero fault. + if ((_maximum - _minimum) == 0) + return 0; + + var perc:Number = 100 * (_value - _minimum) / (_maximum - _minimum); + + if (isNaN(perc) || perc < 0) + return 0; + else if (perc > 100) + return 100; + else + return perc; + } + + //---------------------------------- + // source + //---------------------------------- + + /** + * @private + * Storage for the source property. + */ + private var _source:Object; + + /** + * @private + */ + private var _stringSource:String; + + /** + * @private + */ + private var sourceChanged:Boolean = false; + + /** + * @private + */ + private var stringSourceChanged:Boolean = false; + + [Bindable("sourceChanged")] + [Inspectable(category="General")] + + /** + * Refers to the control that the ProgressBar is measuring the progress of. Use this property only in + * event and polled mode. A typical usage is to set this property to a Loader control. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get source():Object + { + return _source; + } + + /** + * @private + */ + public function set source(value:Object):void + { + if (GOOG::DEBUG) + trace("set source is not implemented"); +// if (value is String) +// { +// _stringSource = String(value); +// try +// { +// value = document[_stringSource]; +// } +// catch(e:Error) +// { +// stringSourceChanged = true; // Try again in commitProperties +// } +// } +// +// if (_source && _source is IEventDispatcher) +// removeSourceListeners(); +// +// if (value) +// { +// _source = value; +// sourceChanged = true; +// modeChanged = true; +// indeterminateChanged = true; +// // invalidateProperties(); +// // invalidateDisplayList(); +// } +// else if (_source != null) +// { +// _source = null; +// sourceChanged = true; +// indeterminateChanged = true; +// // invalidateProperties(); +// // invalidateDisplayList(); +// pollTimer.reset(); +// } + } + + //---------------------------------- + // value + //---------------------------------- + + /** + * @private + * Storage for the value property. + */ + private var _value:Number = 0; + + [Bindable("change")] + + /** + * Read-only property that contains the amount of progress + * that has been made - between the minimum and maximum values. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function get value():Number + { + return _value; + } + + //-------------------------------------------------------------------------- + // + // Overridden properties + // + //-------------------------------------------------------------------------- + + /** + * @private + */ + override public function set visible(value:Boolean):void + { + super.visible = value; + + visibleChanged = true; + //invalidateDisplayList(); + } + + + //-------------------------------------------------------------------------- + // + // Overridden methods + // + //-------------------------------------------------------------------------- + + + //-------------------------------------------------------------------------- + // + // Methods + // + //-------------------------------------------------------------------------- + + /** + * Sets the state of the bar to reflect the amount of progress made + * when using manual mode. + * The <code>value</code> argument is assigned to the <code>value</code> + * property and the <code>maximum</code> argument is assigned to the + * <code>maximum</code> property. + * The <code>minimum</code> property is not altered. + * + * @param value Current value. + * + * @param maximum Total or target value. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function setProgress(value:Number, total:Number):void + { + if (_mode == ProgressBarMode.MANUAL) + _setProgress(value, total); + } + + /** + * @private + * Changes the value and the maximum properties. + */ + private function _setProgress(value:Number, maximum:Number):void + { + if (enabled && !isNaN(value) && !isNaN(maximum)) + { + _value = value; + _maximum = maximum; + + // Dipatch an Event of type "change". + dispatchEvent(new Event(Event.CHANGE)); + + // Dispatch a Progress + var progressEvent:ProgressEvent = new ProgressEvent(ProgressEvent.PROGRESS); + progressEvent.current = value; + progressEvent.total = maximum; + dispatchEvent(progressEvent); + + if (_indeterminate) + startPlayingIndeterminate(); + + if (_value == _maximum && _value > 0) + { + if (_indeterminate) + stopPlayingIndeterminate(); + + if (mode != ProgressBarMode.EVENT) // We get our own complete event when in event mode + dispatchEvent(new Event(Event.COMPLETE)); + } + + //invalidateDisplayList(); + } + } + + /** + * @private + */ +// private function createTrack():void +// { +// if (_track) +// { +// _content.removeChild(DisplayObject(_track)); +// _track = null; +// } +// +// // Create the track frame +// var trackClass:Class = getStyle('trackSkin'); +// if (trackClass) +// { +// _track = new trackClass(); +// if (_track is ISimpleStyleClient) +// ISimpleStyleClient(_track).styleName = this; +// _content.addChildAt(DisplayObject(_track), 0); +// } +// } + + /** + * @private + */ +// private function createBar():void +// { +// if (_determinateBar) +// { +// _bar.removeChild(DisplayObject(_determinateBar)); +// _determinateBar = null; +// } +// +// // Create the determinate bar +// var barClass:Class = getStyle('barSkin'); +// if (barClass) +// { +// _determinateBar = new barClass(); +// if (_determinateBar is ISimpleStyleClient) +// ISimpleStyleClient(_determinateBar).styleName = this; +// _bar.addChild(DisplayObject(_determinateBar)); +// } +// } + + /** + * @private + */ +// private function createIndeterminateBar():void +// { +// if (_indeterminateBar) +// { +// _bar.removeChild(DisplayObject(_indeterminateBar)); +// _indeterminateBar = null; +// } +// +// // Create the indeterminate bar +// var indeterminateClass:Class = getStyle('indeterminateSkin'); +// if (indeterminateClass) +// { +// _indeterminateBar = new indeterminateClass(); +// if (_indeterminateBar is ISimpleStyleClient) +// ISimpleStyleClient(_indeterminateBar).styleName = this; +// _indeterminateBar.visible = false; +// _bar.addChild(DisplayObject(_indeterminateBar)); +// } +// } + + /** + * @private + */ +// private function layoutContent(newWidth:Number, newHeight:Number):void +// { +// _track.move(0, 0); +// _track.setActualSize(newWidth, newHeight); +// +// _bar.move(0, 0); +// _determinateBar.move(0, 0); +// _indeterminateBar.setActualSize(newWidth + getStyle("indeterminateMoveInterval"), newHeight); +// } + + /** + * @private + */ +// private function getFullLabelText():String +// { +// var current:Number = Math.max(_value /* - _minimum */,0); +// var total:Number = Math.max(_maximum /* - _minimum */,0); +// var labelText:String = label; +// +// if (labelText) +// { +// if (_indeterminate) +// { +// labelText = labelText.replace("%1", String(Math.floor(current / _conversion))); +// labelText = labelText.replace("%2", "??"); +// labelText = labelText.replace("%3", ""); +// labelText = labelText.replace("%%", ""); +// } +// else +// { +// labelText = labelText.replace("%1", String(Math.floor(current / _conversion))); +// labelText = labelText.replace("%2", String(Math.floor(total / _conversion))); +// labelText = labelText.replace("%3", String(Math.floor(percentComplete))); +// labelText = labelText.replace("%%", "%"); +// } +// } +// +// return labelText; +// } + + /** + * @private + * Make a good guess at the largest size of the label based on which placeholders are present + */ +// private function predictLabelText():String +// { +// // The label will be null if there are no resources. +// if (label == null) +// return ""; +// +// var labelText:String = label; +// +// var largestValue:Number; +// if (_maximum != 0) +// largestValue = _maximum; +// else +// largestValue = 100000; +// +// if (labelText) +// { +// if (_indeterminate) +// { +// labelText = labelText.replace("%1", String(Math.floor(largestValue / _conversion))); +// labelText = labelText.replace("%2", "??"); +// labelText = labelText.replace("%3", ""); +// labelText = labelText.replace("%%", ""); +// } +// else +// { +// labelText = labelText.replace("%1", String(Math.floor(largestValue / _conversion))); +// labelText = labelText.replace("%2", String(Math.floor(largestValue / _conversion))); +// labelText = labelText.replace("%3", "100"); +// labelText = labelText.replace("%%", "%"); +// } +// } +// +// var actualText:String = getFullLabelText(); +// +// // Return the longer of the two strings +// if (labelText.length > actualText.length) +// return labelText; +// else +// return actualText; +// } + + /** + * @private + */ + private function startPlayingIndeterminate():void + { + if (!indeterminatePlaying) + { + indeterminatePlaying = true; + + // weak listener in case the pbar is removed before the timer is reset() + // safe because pollTimer lives in the pbar + pollTimer.addEventListener("timer", updateIndeterminateHandler, false); + pollTimer.start(); + } + } + + /** + * @private + */ + private function stopPlayingIndeterminate():void + { + if (indeterminatePlaying) + { + indeterminatePlaying = false; + + pollTimer.removeEventListener("timer", updateIndeterminateHandler); + + if (_mode != ProgressBarMode.POLLED) + pollTimer.reset(); + } + } + + /** + * @private + */ + private function addSourceListeners():void + { + _source.addEventListener(ProgressEvent.PROGRESS, progressHandler); + _source.addEventListener(Event.COMPLETE, completeHandler); + } + + /** + * @private + */ + private function removeSourceListeners():void + { + _source.removeEventListener(ProgressEvent.PROGRESS, progressHandler); + _source.removeEventListener(Event.COMPLETE, completeHandler); + } + + //-------------------------------------------------------------------------- + // + // Event handlers + // + //-------------------------------------------------------------------------- + + /** + * @private + * "progress" event handler for event mode + */ + private function progressHandler(event:ProgressEvent):void + { + _setProgress(event.current, event.total); + } + + /** + * @private + * "complete" event handler for event mode + */ + private function completeHandler(event:Event):void + { + dispatchEvent(event); + //invalidateDisplayList(); + } + + /** + * @private + */ + private function updateIndeterminateHandler(event:Event):void + { + if (_indeterminateBar.x < 1) + _indeterminateBar.x += 1; + else + _indeterminateBar.x = - (getStyle("indeterminateMoveInterval") - 2); + } + + /** + * @private + * Callback method for polled mode. + */ + private function updatePolledHandler(event:Event):void + { + if (_source) + { + var comp:Object = _source; + + var bytesLoaded:Number = comp.bytesLoaded; + var bytesTotal:Number = comp.bytesTotal; + + if (!isNaN(bytesLoaded) && !isNaN(bytesTotal)) + { + _setProgress(bytesLoaded, bytesTotal); + + // 0 is the size of an empty movie clip?? + if (percentComplete >= 100 && _value > 0) + pollTimer.reset(); + } + } + } + +} + +} diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarDirection.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarDirection.as new file mode 100644 index 0000000..e877e02 --- /dev/null +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarDirection.as @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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 +{ + +/** + * The ProgressBarDirection class defines the values + * for the <code>direction</code> property of the ProgressBar class. + * + * @see mx.controls.ProgressBar + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ +public final class ProgressBarDirection +{ + //-------------------------------------------------------------------------- + // + // Class constants + // + //-------------------------------------------------------------------------- + + /** + * Specifies to fill the progress bar from the right to the left. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const LEFT:String = "left"; + + /** + * Specifies to fill the progress bar from the left to the right. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const RIGHT:String = "right"; +} + +} diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarLabelPlacement.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarLabelPlacement.as new file mode 100644 index 0000000..b5053c0 --- /dev/null +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarLabelPlacement.as @@ -0,0 +1,93 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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 +{ + +/** + * The ProgressBarLabelPlacement class defines the values for + * the <code>labelPlacement</code> property of the ProgressBar class. + * + * @see mx.controls.ProgressBar + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ +public final class ProgressBarLabelPlacement +{ + //-------------------------------------------------------------------------- + // + // Class constants + // + //-------------------------------------------------------------------------- + + /** + * Specifies to place the label below the progress bar. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const BOTTOM:String = "bottom"; + + /** + * Specifies to place at the center inside the progress bar. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const CENTER:String = "center"; + + /** + * Specifies to place the label to the left of the progress bar. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const LEFT:String = "left"; + + /** + * Specifies to place the label to the right of the progress bar. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const RIGHT:String = "right"; + + /** + * Specifies to place the label above the progress bar. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const TOP:String = "top"; +} + +} diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarMode.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarMode.as new file mode 100644 index 0000000..516e6e4 --- /dev/null +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ProgressBarMode.as @@ -0,0 +1,82 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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 +{ + +/** + * The ProgressBarMode class defines the values for the <code>mode</code> property + * of the ProgressBar class. + * + * @see mx.controls.ProgressBar + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ +public final class ProgressBarMode +{ + //-------------------------------------------------------------------------- + // + // Class constants + // + //-------------------------------------------------------------------------- + + /** + * The control specified by the <code>source</code> property must + * dispatch <code>progress</code> and <code>completed</code> events. + * The ProgressBar uses these events to update its status. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const EVENT:String = "event"; + + /** + * You manually update the ProgressBar status. In this mode, you + * specify the <code>maximum</code> and <code>minimum</code> + * properties and use the <code>setProgress()</code> method + * to specify the status. This mode is often used when the + * <code>indeterminate</code> property is <code>true</code>. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const MANUAL:String = "manual"; + + /** + * The <code>source</code> property must specify an object that + * exposes the <code>getBytesLoaded()</code> and + * <code>getBytesTotal()</code> methods. The ProgressBar control + * calls these methods to update its status. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public static const POLLED:String = "polled"; +} + +} \ No newline at end of file -- To stop receiving notification emails like this one, please contact p...@apache.org.