You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2015/11/20 21:18:58 UTC
[09/41] git commit: [flex-asjs] [refs/heads/core_js_to_as] - Adding
ArrayList to Collections framework.
Adding ArrayList to Collections framework.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/e2eac34d
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/e2eac34d
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/e2eac34d
Branch: refs/heads/core_js_to_as
Commit: e2eac34d27c83e2d33920ae61479682202af84e3
Parents: 657ce8b
Author: Peter Ent <pe...@apache.org>
Authored: Wed Oct 7 15:46:20 2015 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Wed Oct 7 15:46:20 2015 -0400
----------------------------------------------------------------------
frameworks/build.xml | 4 +-
.../Collections/as/src/CollectionsClasses.as | 1 +
.../asjs/src/CollectionsASJSClasses.as | 33 ++
.../org/apache/flex/collections/ArrayList.as | 396 +++++++++++++++++++
.../projects/Collections/basic-manifest.xml | 1 +
frameworks/projects/Collections/build.xml | 20 +-
.../projects/Collections/compile-config.xml | 2 +
.../org/apache/flex/collections/ICollection.js | 50 +++
8 files changed, 504 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/build.xml
----------------------------------------------------------------------
diff --git a/frameworks/build.xml b/frameworks/build.xml
index e66b008..ab9196d 100644
--- a/frameworks/build.xml
+++ b/frameworks/build.xml
@@ -79,10 +79,10 @@
<antcall target="Core"/>
<antcall target="Graphics"/>
<antcall target="Binding"/>
+ <antcall target="Collections"/>
<antcall target="HTML"/>
<antcall target="Flat"/>
<antcall target="Charts"/>
- <antcall target="Collections"/>
<antcall target="CreateJS"/>
<antcall target="DragDrop"/>
<antcall target="Effects"/>
@@ -136,10 +136,10 @@
<ant dir="${basedir}/projects/Core" target="compile"/>
<ant dir="${basedir}/projects/Graphics" target="compile"/>
<ant dir="${basedir}/projects/Binding" target="compile"/>
+ <ant dir="${basedir}/projects/Collections" target="compile"/>
<ant dir="${basedir}/projects/HTML" target="compile"/>
<ant dir="${basedir}/projects/Flat" target="compile"/>
<ant dir="${basedir}/projects/Charts" target="compile"/>
- <ant dir="${basedir}/projects/Collections" target="compile"/>
<ant dir="${basedir}/projects/CreateJS" target="compile"/>
<ant dir="${basedir}/projects/DragDrop" target="compile"/>
<ant dir="${basedir}/projects/Effects" target="compile"/>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/projects/Collections/as/src/CollectionsClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Collections/as/src/CollectionsClasses.as b/frameworks/projects/Collections/as/src/CollectionsClasses.as
index dcbf02c..f2b02c3 100644
--- a/frameworks/projects/Collections/as/src/CollectionsClasses.as
+++ b/frameworks/projects/Collections/as/src/CollectionsClasses.as
@@ -27,6 +27,7 @@ package
*/
internal class CollectionsClasses
{
+ import org.apache.flex.collections.LazyCollection; LazyCollection;
}
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/projects/Collections/asjs/src/CollectionsASJSClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Collections/asjs/src/CollectionsASJSClasses.as b/frameworks/projects/Collections/asjs/src/CollectionsASJSClasses.as
new file mode 100644
index 0000000..e631e8a
--- /dev/null
+++ b/frameworks/projects/Collections/asjs/src/CollectionsASJSClasses.as
@@ -0,0 +1,33 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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
+{
+
+/**
+ * @private
+ * This class is used to link additional classes into rpc.swc
+ * beyond those that are found by dependecy analysis starting
+ * from the classes specified in manifest.xml.
+ */
+internal class CollectionsASJSClasses
+{
+ import org.apache.flex.collections.ArrayList; ArrayList;
+}
+
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/projects/Collections/asjs/src/org/apache/flex/collections/ArrayList.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Collections/asjs/src/org/apache/flex/collections/ArrayList.as b/frameworks/projects/Collections/asjs/src/org/apache/flex/collections/ArrayList.as
new file mode 100644
index 0000000..58d44e8
--- /dev/null
+++ b/frameworks/projects/Collections/asjs/src/org/apache/flex/collections/ArrayList.as
@@ -0,0 +1,396 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 org.apache.flex.collections
+{
+ import org.apache.flex.core.IBead;
+ import org.apache.flex.core.IStrand;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.events.EventDispatcher;
+ import org.apache.flex.events.IEventDispatcher;
+ import org.apache.flex.collections.parsers.IInputParser;
+ import org.apache.flex.collections.converters.IItemConverter;
+
+ //--------------------------------------
+ // Events
+ //--------------------------------------
+
+ /**
+ * Dispatched when the collection's underlying source array
+ * is changed.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ [Event(name="collectionChanged", type="org.apache.flex.events.Event")]
+
+ /**
+ * Dispatched when the collection has added an item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ [Event(name="itemAdded", type="org.apache.flex.events.Event")]
+
+ /**
+ * Dispatched when the collection has removed an item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ [Event(name="itemRemoved", type="org.apache.flex.events.Event")]
+
+ /**
+ * Dispatched when the collection has updated an item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ [Event(name="itemUpdated", type="org.apache.flex.events.Event")]
+
+ /**
+ * The ArrayList class provides an event-driven wrapper for the
+ * standard Array. Events are dispatched when items are added, removed,
+ * or changed.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public class ArrayList extends EventDispatcher implements IBead, ICollection
+ {
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function ArrayList(initialSource:Array=null)
+ {
+ super();
+ if (initialSource) _source = initialSource;
+ else _source = [];
+ }
+
+ private var _id:String;
+
+ /**
+ * @copy org.apache.flex.core.UIBase#id
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get id():String
+ {
+ return _id;
+ }
+
+ /**
+ * @private
+ */
+ public function set id(value:String):void
+ {
+ if (_id != value)
+ {
+ _id = value;
+ dispatchEvent(new Event("idChanged"));
+ }
+ }
+
+ private var _strand:IStrand;
+
+ /**
+ * @copy org.apache.flex.core.UIBase#strand
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function set strand(value:IStrand):void
+ {
+ _strand = value;
+ _source = new Array();
+ }
+
+ private var _source:Array;
+
+ /**
+ * The array of raw data needing conversion.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get source():Array
+ {
+ return _source;
+ }
+
+ public function set source(value:Array):void
+ {
+ if (_source != value) {
+ if (value == null) _source = [];
+ else _source = value;
+ dispatchEvent(new Event("collectionChanged"));
+ }
+ }
+
+ /**
+ * Returns a copy of the source array.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function toArray():Array
+ {
+ return _source.concat();
+ }
+
+ /**
+ * Fetches an item from the collection
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function getItemAt(index:int):Object
+ {
+ return _source[index];
+ }
+
+ /**
+ * Fetches an item from the collection given an index.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function getItemIndex(item:Object):int
+ {
+ for (var index:int=0; index < _source.length; index++) {
+ if (item == _source[index]) {
+ return index;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Adds an item to the end of the array.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function addItem(item:Object):void
+ {
+ addItemAt(item, length);
+ }
+
+ /**
+ * Inserts an item to a specific location within the array.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function addItemAt(item:Object, index:int):void
+ {
+ const spliceUpperBound:int = length;
+
+ if (index < spliceUpperBound && index > 0)
+ {
+ source.splice(index, 0, item);
+ }
+ else if (index == spliceUpperBound)
+ {
+ source.push(item);
+ }
+ else if (index == 0)
+ {
+ source.unshift(item);
+ }
+ else
+ {
+ // error
+ return;
+ }
+
+ dispatchEvent(new Event("itemAdded"));
+ }
+
+ /**
+ * Replaces the item at the given index with a new item and
+ * returns the old item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function setItemAt(item:Object, index:int):Object
+ {
+ const spliceUpperBound:int = length;
+ var oldItem:Object;
+
+ if (index >= 0 && index < spliceUpperBound) {
+ oldItem = source[index];
+ source[index] = item;
+ dispatchEvent(new Event("itemUpdated"));
+ }
+ else {
+ // error
+ }
+
+ return oldItem;
+ }
+
+ /**
+ * Removed an item from the array and returns it.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function removeItem(item:Object):Boolean
+ {
+ var index:int = getItemIndex(item);
+ var result:Boolean = index >= 0;
+ if (result) {
+ removeItemAt(index);
+ }
+ return result;
+ }
+
+ /**
+ * Removes an item from a specific location within the array and
+ * returns it.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function removeItemAt(index:int):Object
+ {
+ const spliceUpperBound:int = length - 1;
+ var removed:Object;
+
+ if (index > 0 && index < spliceUpperBound)
+ {
+ removed = source.splice(index, 1)[0];
+ }
+ else if (index == spliceUpperBound)
+ {
+ removed = source.pop();
+ }
+ else if (index == 0)
+ {
+ removed = source.shift();
+ }
+ else {
+ // error
+ return null;
+ }
+
+ dispatchEvent(new Event("itemRemoved"));
+ return removed;
+ }
+
+ /**
+ * Removes all of the items from the array.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function removeAll():void
+ {
+ if (length > 0) {
+ source.splice(0, length);
+ dispatchEvent(new Event("itemRemoved"));
+ }
+ }
+
+ /**
+ * Signals that an item in the array has been updated.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function itemUpdated(item:Object):void
+ {
+ var index:int = getItemIndex(item);
+ if (index >= 0) {
+ dispatchEvent(new Event("itemUpdated"));
+ }
+ }
+
+ /**
+ * Signals that an item in the array has been updated.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function itemUpdatedAt(index:int):void
+ {
+ dispatchEvent(new Event("itemUpdated"));
+ }
+
+ /**
+ * The number of items.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function get length():int
+ {
+ return _source ? _source.length : 0;
+ }
+
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/projects/Collections/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Collections/basic-manifest.xml b/frameworks/projects/Collections/basic-manifest.xml
index 2b2f0e5..5ea77b7 100644
--- a/frameworks/projects/Collections/basic-manifest.xml
+++ b/frameworks/projects/Collections/basic-manifest.xml
@@ -21,6 +21,7 @@
<componentPackage>
+ <component id="ArrayList" class="org.apache.flex.collections.ArrayList"/>
<component id="LazyCollection" class="org.apache.flex.collections.LazyCollection"/>
<component id="JSONInputParser" class="org.apache.flex.collections.parsers.JSONInputParser"/>
<component id="JSONItemConverter" class="org.apache.flex.collections.converters.JSONItemConverter"/>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/projects/Collections/build.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Collections/build.xml b/frameworks/projects/Collections/build.xml
index a2f2db7..d6c1e77 100644
--- a/frameworks/projects/Collections/build.xml
+++ b/frameworks/projects/Collections/build.xml
@@ -99,7 +99,22 @@
</target>
<target name="compile-asjs" >
- <!-- nothing to cross-compile yet -->
+ <echo message="Cross-compiling Collections/asjs"/>
+ <echo message="FALCONJX_HOME: ${FALCONJX_HOME}"/>
+ <java jar="${FALCONJX_HOME}/lib/compc.jar" fork="true" >
+ <jvmarg value="-Xmx384m" />
+ <jvmarg value="-Dsun.io.useCanonCaches=false" />
+ <jvmarg value="-Dflexcompiler=${FALCONJX_HOME}/../compiler" />
+ <jvmarg value="-Dflexlib=${FLEXJS_HOME}/frameworks" />
+ <arg value="+flexlib=${FLEX_HOME}/frameworks" />
+ <arg value="-js-output-type=FLEXJS" />
+ <arg value="-keep-asdoc" /><!-- allows compiler to see @flexjsignorecoercion annotations -->
+ <arg value="-output=${basedir}/js/out" />
+ <arg value="-load-config=${basedir}/compile-asjs-config.xml" />
+ <arg value="+playerglobal.version=${playerglobal.version}" />
+ <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
+ <arg value="+env.AIR_HOME=${env.AIR_HOME}" />
+ </java>
</target>
<target name="lint-js" depends="gjslint, jshint, copy-js" />
@@ -108,6 +123,9 @@
<fileset dir="${basedir}/js/src">
<include name="**/**" />
</fileset>
+ <fileset dir="${basedir}/js/out">
+ <include name="**/**" />
+ </fileset>
</copy>
</target>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/projects/Collections/compile-config.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Collections/compile-config.xml b/frameworks/projects/Collections/compile-config.xml
index fdb1921..a34040a 100644
--- a/frameworks/projects/Collections/compile-config.xml
+++ b/frameworks/projects/Collections/compile-config.xml
@@ -54,6 +54,7 @@
<source-path>
<path-element>as/src</path-element>
+ <path-element>asjs/src</path-element>
</source-path>
<warn-no-constructor>false</warn-no-constructor>
@@ -66,6 +67,7 @@
<include-classes>
<class>CollectionsClasses</class>
+ <class>CollectionsASJSClasses</class>
</include-classes>
<include-namespaces>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e2eac34d/frameworks/projects/Collections/js/src/org/apache/flex/collections/ICollection.js
----------------------------------------------------------------------
diff --git a/frameworks/projects/Collections/js/src/org/apache/flex/collections/ICollection.js b/frameworks/projects/Collections/js/src/org/apache/flex/collections/ICollection.js
new file mode 100644
index 0000000..749c80b
--- /dev/null
+++ b/frameworks/projects/Collections/js/src/org/apache/flex/collections/ICollection.js
@@ -0,0 +1,50 @@
+/**
+ * Licensed 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.
+ */
+
+/**
+ * org.apache.flex.collections.ICollection
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.collections.ICollection');
+
+
+
+/**
+ * @interface
+ */
+org.apache.flex.collections.ICollection =
+function() {
+};
+
+
+/**
+ * @export
+ * @param {number} index The item to fetch.
+ * @return {Object} The object at the index.
+ */
+org.apache.flex.collections.ICollection.prototype.getItemAt = function(index) {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.collections.ICollection.prototype.FLEXJS_CLASS_INFO = {
+ names: [{ name: 'ICollection',
+ qName: 'org.apache.flex.collections.ICollection'}]};