You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/05/04 17:15:50 UTC
[royale-asjs] 04/05: get List and DataGrid to come up. DataGrid
still needs to autogenerate columns
This is an automated email from the ASF dual-hosted git repository.
aharui pushed a commit to branch feature/MXRoyale
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit f4c1cfcc406f8bbf7aeb611cb8eb47ec0a71b50b
Author: Alex Harui <ah...@apache.org>
AuthorDate: Fri May 4 10:14:25 2018 -0700
get List and DataGrid to come up. DataGrid still needs to autogenerate columns
---
.../MXRoyale/src/main/resources/defaults.css | 44 +
.../src/main/resources/mx-royale-manifest.xml | 8 +-
.../src/main/royale/mx/controls/DataGrid.as | 831 +++++++++++++++++++
.../MXRoyale/src/main/royale/mx/controls/List.as | 360 +++++++++
.../mx/controls/dataGridClasses/DataGridColumn.as | 399 +++++++++
.../royale/mx/controls/listClasses/ListBase.as | 896 ++++++++++++++++++++-
.../mx/controls/listClasses/ListItemRenderer.as | 52 ++
.../MXRoyale/src/main/royale/mx/core/Container.as | 6 +-
.../main/royale/mx/styles/CSSStyleDeclaration.as | 216 +++++
.../src/main/royale/mx/styles/IStyleManager2.as | 47 ++
10 files changed, 2843 insertions(+), 16 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index b1244b5..46aad73 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -67,6 +67,20 @@ Container
IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel");
}
+DataGrid
+{
+ IChangePropagator: ClassReference("org.apache.royale.html.beads.DataGridColumnChangePropagator");
+ IDataGridPresentationModel: ClassReference("org.apache.royale.html.beads.models.DataGridPresentationModel");
+ IBeadView: ClassReference("org.apache.royale.html.beads.DataGridView");
+ IBeadModel: ClassReference("org.apache.royale.html.beads.models.DataGridModel");
+ IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout");
+
+ background-color: #FFFFFF;
+ border: 1px solid #222222;
+ width: 200px;
+ height: 200px;
+}
+
DateChooser
{
IBeadView: ClassReference("org.apache.royale.html.beads.DateChooserView");
@@ -83,6 +97,19 @@ Image
IBeadView: ClassReference("org.apache.royale.html.beads.ImageView");
}
+List
+{
+ IBeadModel: ClassReference("org.apache.royale.html.beads.models.ArraySelectionModel");
+ IBeadView: ClassReference("org.apache.royale.html.beads.ListView");
+ IBeadController: ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController");
+ IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.VerticalLayout");
+ IDataProviderItemRendererMapper: ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData");
+ IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+ IItemRenderer: ClassReference("mx.controls.listClasses.ListItemRenderer");
+ IViewport: ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport");
+ IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel");
+}
+
NumericStepper
{
IBeadModel: ClassReference("org.apache.royale.html.beads.models.RangeModel");
@@ -137,6 +164,13 @@ Panel .TitleBar
IContentView: ClassReference("org.apache.royale.html.supportClasses.ContainerContentArea");
}
+ DataGrid {
+ IBackgroundBead: ClassReference("org.apache.royale.html.beads.SolidBackgroundBead");
+ IBorderBead: ClassReference("org.apache.royale.html.beads.SingleLineBorderBead");
+ font-size: 11px;
+ font-family: Arial;
+ }
+
Label
{
IBeadModel: ClassReference("org.apache.royale.html.beads.models.TextModel");
@@ -144,6 +178,16 @@ Panel .TitleBar
iMeasurementBead: ClassReference("org.apache.royale.html.beads.TextFieldLabelMeasurementBead");
}
+ List
+ {
+ iBackgroundBead: ClassReference("org.apache.royale.html.beads.SolidBackgroundBead");
+ iBorderBead: ClassReference('org.apache.royale.html.beads.SingleLineBorderBead');
+ iBorderModel: ClassReference('org.apache.royale.html.beads.models.SingleLineBorderModel');
+ IContentView: ClassReference("org.apache.royale.html.supportClasses.DataGroup");
+ font-size: 11px;
+ font-family: Arial;
+ }
+
Panel
{
IContentView: ClassReference("org.apache.royale.html.supportClasses.ContainerContentArea");
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 eedabdb..6e163d4 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml
+++ b/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml
@@ -25,10 +25,13 @@
<component id="Button" class="mx.controls.Button" />
<component id="CheckBox" class="mx.controls.CheckBox" />
<component id="ComboBox" class="mx.controls.ComboBox" />
+ <component id="DataGrid" class="mx.controls.DataGrid" />
+ <component id="DataGridColumn" class="mx.controls.dataGridClasses.DataGridColumn" />
<component id="DateChooser" class="mx.controls.DateChooser" />
<component id="Image" class="mx.controls.Image" />
<component id="Label" class="mx.controls.Label" />
<component id="LinkButton" class="mx.controls.LinkButton" />
+ <component id="List" class="mx.controls.List" />
<component id="NumericStepper" class="mx.controls.NumericStepper" />
<component id="ProgressBar" class="mx.controls.ProgressBar" />
<component id="RadioButton" class="mx.controls.RadioButton" />
@@ -45,10 +48,13 @@
<component id="HDividedBox" class="mx.containers.HDividedBox" />
<component id="VBox" class="mx.containers.VBox" />
<component id="VDividedBox" class="mx.containers.VDividedBox" />
+ <component id="Panel" class="mx.containers.Panel" />
<!--<component id="ViewStack" class="mx.containers.ViewStack" /> waiting for commit -->
<component id="ApplicationLayout" class="mx.containers.beads.ApplicationLayout" />
<component id="BoxLayout" class="mx.containers.beads.BoxLayout" />
<component id="CanvasLayout" class="mx.containers.beads.CanvasLayout" />
- <component id="State" class="mx.states.State" />
+ <component id="State" class="mx.states.State" />
+
+ <component id="ListItemRenderer" class="mx.controls.listClasses.ListItemRenderer" />
</componentPackage>
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DataGrid.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DataGrid.as
new file mode 100644
index 0000000..2666643
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DataGrid.as
@@ -0,0 +1,831 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
+import flash.display.InteractiveObject;
+import flash.display.Graphics;
+import flash.display.Shape;
+import flash.display.Sprite;
+import flash.events.Event;
+import flash.events.FocusEvent;
+import flash.events.KeyboardEvent;
+import flash.events.MouseEvent;
+import flash.geom.Point;
+import flash.ui.Keyboard;
+import flash.utils.Dictionary;
+import flash.utils.describeType;
+
+import mx.collections.CursorBookmark;
+import mx.collections.ICollectionView;
+import mx.collections.ISort;
+import mx.collections.ISortField;
+import mx.collections.ItemResponder;
+import mx.collections.Sort;
+import mx.collections.SortField;
+import mx.collections.errors.ItemPendingError;
+import mx.controls.dataGridClasses.DataGridBase;
+import mx.controls.dataGridClasses.DataGridColumn;
+import mx.controls.dataGridClasses.DataGridDragProxy;
+import mx.controls.dataGridClasses.DataGridHeader;
+import mx.controls.dataGridClasses.DataGridItemRenderer;
+import mx.controls.dataGridClasses.DataGridListData;
+import mx.controls.listClasses.IDropInListItemRenderer;
+import mx.controls.listClasses.IListItemRenderer;
+import mx.controls.listClasses.ListBaseContentHolder;
+import mx.controls.listClasses.ListBaseSeekPending;
+import mx.controls.listClasses.ListRowInfo;
+import mx.controls.scrollClasses.ScrollBar;
+import mx.core.ContextualClassFactory;
+import mx.core.EdgeMetrics;
+import mx.core.EventPriority;
+import mx.core.FlexShape;
+import mx.core.FlexSprite;
+import mx.core.IFactory;
+import mx.core.IFlexDisplayObject;
+import mx.core.IFlexModuleFactory;
+import mx.core.IIMESupport;
+import mx.core.IInvalidating;
+import mx.core.IPropertyChangeNotifier;
+import mx.core.IRectangularBorder;
+import mx.core.IUIComponent;
+import mx.core.ScrollPolicy;
+import mx.core.UIComponent;
+import mx.core.UIComponentGlobals;
+import mx.core.mx_internal;
+import mx.events.CollectionEvent;
+import mx.events.CollectionEventKind;
+import mx.events.DataGridEvent;
+import mx.events.DataGridEventReason;
+import mx.events.DragEvent;
+import mx.events.IndexChangedEvent;
+import mx.events.ListEvent;
+import mx.events.SandboxMouseEvent;
+import mx.events.ScrollEvent;
+import mx.events.ScrollEventDetail;
+import mx.managers.IFocusManager;
+import mx.managers.IFocusManagerComponent;
+import mx.skins.halo.ListDropIndicator;
+import mx.styles.ISimpleStyleClient;
+import mx.utils.ObjectUtil;
+import mx.utils.StringUtil;
+
+use namespace mx_internal;
+*/
+
+import mx.controls.listClasses.ListBase;
+import org.apache.royale.core.IBead;
+import org.apache.royale.core.IDataGrid;
+import org.apache.royale.core.IDataGridPresentationModel;
+import org.apache.royale.core.IDataGridModel;
+import org.apache.royale.core.ValuesManager;
+
+//--------------------------------------
+// Events
+//--------------------------------------
+
+/**
+ * Dispatched when the user releases the mouse button while over an item
+ * renderer, tabs to the DataGrid control or within the DataGrid control,
+ * or in any other way attempts to edit an item.
+ *
+ * @eventType mx.events.DataGridEvent.ITEM_EDIT_BEGINNING
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemEditBeginning", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when the <code>editedItemPosition</code> property has been set
+ * and the item can be edited.
+ *
+ * @eventType mx.events.DataGridEvent.ITEM_EDIT_BEGIN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemEditBegin", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when the item editor has just been instantiated.
+ *
+ * @eventType mx.events.DataGridEvent.ITEM_EDITOR_CREATE
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemEditorCreate", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when an item editing session ends for any reason.
+ *
+ * @eventType mx.events.DataGridEvent.ITEM_EDIT_END
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemEditEnd", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when an item renderer gets focus, which can occur if the user
+ * clicks on an item in the DataGrid control or navigates to the item using
+ * a keyboard. Only dispatched if the item is editable.
+ *
+ * @eventType mx.events.DataGridEvent.ITEM_FOCUS_IN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemFocusIn", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when an item renderer loses focus, which can occur if the user
+ * clicks another item in the DataGrid control or clicks outside the control,
+ * or uses the keyboard to navigate to another item in the DataGrid control
+ * or outside the control.
+ * Only dispatched if the item is editable.
+ *
+ * @eventType mx.events.DataGridEvent.ITEM_FOCUS_OUT
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemFocusOut", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when a user changes the width of a column, indicating that the
+ * amount of data displayed in that column may have changed.
+ * If <code>horizontalScrollPolicy</code> is <code>"off"</code>, other
+ * columns shrink or expand to compensate for the columns' resizing,
+ * and they also dispatch this event.
+ *
+ * @eventType mx.events.DataGridEvent.COLUMN_STRETCH
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="columnStretch", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when the user releases the mouse button on a column header
+ * to request the control to sort
+ * the grid contents based on the contents of the column.
+ * Only dispatched if the column is sortable and the data provider supports
+ * sorting. The DataGrid control has a default handler for this event that implements
+ * a single-column sort. Multiple-column sort can be implemented by calling the
+ * <code>preventDefault()</code> method to prevent the single column sort and setting
+ * the <code>sort</code> property of the data provider.
+ * <p>
+ * <b>Note</b>: The sort arrows are defined by the default event handler for
+ * the headerRelease event. If you call the <code>preventDefault()</code> method
+ * in your event handler, the arrows are not drawn.
+ * </p>
+ *
+ * @eventType mx.events.DataGridEvent.HEADER_RELEASE
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="headerRelease", type="mx.events.DataGridEvent")]
+
+/**
+ * Dispatched when the user releases the mouse button on a column header after
+ * having dragged the column to a new location resulting in shifting the column
+ * to a new index.
+ *
+ * @eventType mx.events.IndexChangedEvent.HEADER_SHIFT
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="headerShift", type="mx.events.IndexChangedEvent")]
+
+//--------------------------------------
+// Styles
+//--------------------------------------
+
+//include "../styles/metadata/IconColorStyles.as"
+
+/**
+ * Name of the class of the itemEditor to be used if one is not
+ * specified for a column. This is a way to set
+ * an item editor for a group of DataGrids instead of having to
+ * set each one individually. If you set the DataGridColumn's itemEditor
+ * property, it supercedes this value.
+ * @default null
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4
+ */
+//[Style(name="defaultDataGridItemEditor", type="Class", inherit="no")]
+
+/**
+ * Name of the class of the itemRenderer to be used if one is not
+ * specified for a column or its header. This is a way to set
+ * an itemRenderer for a group of DataGrids instead of having to
+ * set each one individually. If you set the DataGrid's itemRenderer
+ * property, it supercedes this value.
+ * @default null
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10
+ * @playerversion AIR 1.5
+ * @productversion Flex 4
+ */
+//[Style(name="defaultDataGridItemRenderer", type="Class", inherit="no")]
+
+/**
+ * A flag that indicates whether to show vertical grid lines between
+ * the columns.
+ * If <code>true</code>, shows vertical grid lines.
+ * If <code>false</code>, hides vertical grid lines.
+ * @default true
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="verticalGridLines", type="Boolean", inherit="no")]
+
+/**
+ * A flag that indicates whether to show horizontal grid lines between
+ * the rows.
+ * If <code>true</code>, shows horizontal grid lines.
+ * If <code>false</code>, hides horizontal grid lines.
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="horizontalGridLines", type="Boolean", inherit="no")]
+
+/**
+ * The color of the vertical grid lines.
+ *
+ * The default value for the Halo theme is <code>0xCCCCCC</code>.
+ * The default value for the Spark theme is <code>0x696969</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="verticalGridLineColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ * The color of the horizontal grid lines.
+ * @default 0xF7F7F7
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="horizontalGridLineColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ * An array of two colors used to draw the header background gradient.
+ * The first color is the top color.
+ * The second color is the bottom color.
+ * @default [0xFFFFFF, 0xE6E6E6]
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="headerColors", type="Array", arrayType="uint", format="Color", inherit="yes", theme="halo")]
+
+/**
+ * The color of the row background when the user rolls over the row.
+ *
+ * The default value for the Halo theme is <code>0xB2E1FF</code>.
+ * The default value for the Spark theme is <code>0xCEDBEF</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="rollOverColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ * The color of the background for the row when the user selects
+ * an item renderer in the row.
+ *
+ * The default value for the Halo theme is <code>0x7FCEFF</code>.
+ * The default value for the Spark theme is <code>0xA8C6EE</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="selectionColor", type="uint", format="Color", inherit="yes")]
+
+/**
+ * The name of a CSS style declaration for controlling other aspects of
+ * the appearance of the column headers.
+ * @default "dataGridStyles"
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="headerStyleName", type="String", inherit="no")]
+
+/**
+ * The class to use as the skin for a column that is being resized.
+ *
+ * @default mx.skins.halo.DataGridColumnResizeSkin (for both Halo and Spark themes)
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="columnResizeSkin", type="Class", inherit="no")]
+
+
+/**
+ * The class to use as the skin that defines the appearance of the
+ * background of the column headers in a DataGrid control.
+ * The default value for the Halo theme is <code>mx.skins.halo.DataGridHeaderBackgroundSkin</code>.
+ * The default value for the Spark theme is <code>mx.skins.spark.DataGridHeaderBackgroundSkin</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="headerBackgroundSkin", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin that defines the appearance of the
+ * separator between column headers in a DataGrid control.
+ * The default value for the Halo theme is <code>mx.skins.halo.DataGridHeaderSeparator</code>.
+ * The default value for the Spark theme is <code>mx.skins.spark.DataGridHeaderSeparatorSkin</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="headerSeparatorSkin", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin that defines the appearance of the
+ * separator between rows in a DataGrid control.
+ * By default, the DataGrid control uses the
+ * <code>drawHorizontalLine()</code> and <code>drawVerticalLine()</code> methods
+ * to draw the separators.
+ *
+ * @default undefined
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="horizontalSeparatorSkin", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin that defines the appearance of the
+ * separator between the locked and unlocked rows in a DataGrid control.
+ * By default, the DataGrid control uses the
+ * <code>drawHorizontalLine()</code> and <code>drawVerticalLine()</code> methods
+ * to draw the separators.
+ *
+ * @default undefined
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="horizontalLockedSeparatorSkin", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin that defines the appearance of the
+ * separators between columns in a DataGrid control.
+ * By default, the DataGrid control uses the
+ * <code>drawHorizontalLine()</code> and <code>drawVerticalLine()</code> methods
+ * to draw the separators.
+ *
+ * @default undefined
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="verticalSeparatorSkin", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin that defines the appearance of the
+ * separator between the locked and unlocked columns in a DataGrid control.
+ * By default, the DataGrid control uses the
+ * <code>drawHorizontalLine()</code> and <code>drawVerticalLine()</code> methods
+ * to draw the separators.
+ *
+ * @default undefined
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="verticalLockedSeparatorSkin", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin for the arrow that indicates the column sort
+ * direction.
+ * The default value for the Halo theme is <code>mx.skins.halo.DataGridSortArrow</code>.
+ * The default value for the Spark theme is <code>mx.skins.spark.DataGridSortArrow</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="sortArrowSkin", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin for the cursor that indicates that a column
+ * can be resized.
+ * The default value is the "cursorStretch" symbol from the Assets.swf file.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="stretchCursor", type="Class", inherit="no")]
+
+/**
+ * The class to use as the skin that indicates that
+ * a column can be dropped in the current location.
+ *
+ * @default mx.skins.halo.DataGridColumnDropIndicator (for both Halo and Spark themes)
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="columnDropIndicatorSkin", type="Class", inherit="no")]
+
+/**
+ * The name of a CSS style declaration for controlling aspects of the
+ * appearance of column when the user is dragging it to another location.
+ *
+ * @default "headerDragProxyStyle"
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="headerDragProxyStyleName", type="String", inherit="no")]
+
+//--------------------------------------
+// Excluded APIs
+//--------------------------------------
+
+[Exclude(name="columnCount", kind="property")]
+[Exclude(name="columnWidth", kind="property")]
+[Exclude(name="iconField", kind="property")]
+[Exclude(name="iconFunction", kind="property")]
+[Exclude(name="labelField", kind="property")]
+[Exclude(name="offscreenExtraRowsOrColumns", kind="property")]
+[Exclude(name="offscreenExtraRows", kind="property")]
+[Exclude(name="offscreenExtraRowsTop", kind="property")]
+[Exclude(name="offscreenExtraRowsBottom", kind="property")]
+[Exclude(name="offscreenExtraColumns", kind="property")]
+[Exclude(name="offscreenExtraColumnsLeft", kind="property")]
+[Exclude(name="offscreenExtraColumnsRight", kind="property")]
+[Exclude(name="offscreenExtraRowsOrColumnsChanged", kind="property")]
+[Exclude(name="showDataTips", kind="property")]
+[Exclude(name="cornerRadius", kind="style")]
+
+//--------------------------------------
+// Other metadata
+//--------------------------------------
+
+[AccessibilityClass(implementation="mx.accessibility.DataGridAccImpl")]
+
+[DataBindingInfo("acceptedTypes", "{ dataProvider: "String" }")]
+
+[DefaultBindingProperty(source="selectedItem", destination="dataProvider")]
+
+[DefaultProperty("dataProvider")]
+
+[DefaultTriggerEvent("change")]
+
+//[IconFile("DataGrid.png")]
+
+[RequiresDataBinding(true)]
+
+[Alternative(replacement="spark.components.DataGrid", since="4.5")]
+
+/**
+ * The <code>DataGrid</code> control is like a List except that it can
+ * show more than one column of data making it suited for showing
+ * objects with multiple properties.
+ * <p>
+ * The DataGrid control provides the following features:
+ * <ul>
+ * <li>Columns of different widths or identical fixed widths</li>
+ * <li>Columns that the user can resize at runtime </li>
+ * <li>Columns that the user can reorder at runtime </li>
+ * <li>Optional customizable column headers</li>
+ * <li>Ability to use a custom item renderer for any column to display
+ * data
+ * other than text</li>
+ * <li>Support for sorting the data by clicking on a column</li>
+ * </ul>
+ * </p>
+ * The DataGrid control is intended for viewing data, and not as a
+ * layout tool like an HTML table.
+ * The mx.containers package provides those layout tools.
+ *
+ * <p>The DataGrid control has the following default sizing
+ * characteristics:</p>
+ * <table class="innertable">
+ * <tr>
+ * <th>Characteristic</th>
+ * <th>Description</th>
+ * </tr>
+ * <tr>
+ * <td>Default size</td>
+ * <td>If the columns are empty, the default width is 300
+ * pixels. If the columns contain information but define
+ * no explicit widths, the default width is 100 pixels
+ * per column. The DataGrid width is sized to fit the
+ * width of all columns, if possible.
+ * The default number of displayed rows, including the
+ * header is 7, and each row, by default, is 20 pixels
+ * high.
+ * </td>
+ * </tr>
+ * <tr>
+ * <td>Minimum size</td>
+ * <td>0 pixels.</td>
+ * </tr>
+ * <tr>
+ * <td>Maximum size</td>
+ * <td>5000 by 5000.</td>
+ * </tr>
+ * </table>
+ *
+ * @mxml
+ * <p>
+ * The <code><mx:DataGrid></code> tag inherits all of the tag
+ * attributes of its superclass, except for <code>labelField</code>,
+ * <code>iconField</code>, and <code>iconFunction</code>, and adds the
+ * following tag attributes:
+ * </p>
+ * <pre>
+ * <mx:DataGrid
+ * <b>Properties</b>
+ * columns="<i>From dataProvider</i>"
+ * draggableColumns="true|false"
+ * editable="false|true"
+ * editedItemPosition="<code>null</code>"
+ * horizontalScrollPosition="null"
+ * imeMode="null"
+ * itemEditorInstance="null"
+ * minColumnWidth="<code>NaN</code>"
+ * resizableColumns="true|false"
+ * sortableColumns="true|false"
+ *
+ * <b>Styles</b>
+ * backgroundDisabledColor="0xEFEEEF"
+ * columnDropIndicatorSkin="DataGridColumnDropIndicator"
+ * columnResizeSkin="DataGridColumnResizeSkin"
+ * disabledIconColor="0x999999"
+ * headerColors="[#FFFFFF, #E6E6E6]"
+ * headerDragProxyStyleName="headerDragProxyStyle"
+ * headerSeparatorSkin="DataGridHeaderSeparator"
+ * headerStyleName="dataGridStyles"
+ * horizontalGridLineColor="0xF7F7F7"
+ * horizontalGridLines="false|true"
+ * horizontalLockedSeparatorSkin="undefined"
+ * horizontalSeparatorSkin="undefined"
+ * iconColor="0x111111"
+ * rollOverColor="0xB2E1FF"
+ * selectionColor="0x7FCEFF"
+ * sortArrowSkin="DataGridSortArrow"
+ * stretchCursor="<i>"cursorStretch" symbol from the Assets.swf file</i>"
+ * verticalGridLineColor="0xCCCCCC"
+ * verticalGridLines="false|true"
+ * verticalLockedSeparatorSkin="undefined"
+ * verticalSeparatorSkin="undefined"
+ *
+ * <b>Events</b>
+ * columnStretch="<i>No default</i>"
+ * headerRelease="<i>No default</i>"
+ * headerShift="<i>No default</i>"
+ * itemEditBegin="<i>No default</i>"
+ * itemEditBeginning="<i>No default</i>"
+ * itemEditEnd="<i>No default</i>"
+ * itemFocusIn="<i>No default</i>"
+ * itemFocusOut="<i>No default</i>"
+ * />
+ *
+ * <b>The following DataGrid code sample specifies the column order:</b>
+ * <mx:DataGrid>
+ * <mx:dataProvider>
+ * <mx:Object Artist="Pavement" Price="11.99"
+ * Album="Slanted and Enchanted"/>
+ * <mx:Object Artist="Pavement"
+ * Album="Brighten the Corners" Price="11.99"/>
+ * </mx:dataProvider>
+ * <mx:columns>
+ * <mx:DataGridColumn dataField="Album"/>
+ * <mx:DataGridColumn dataField="Price"/>
+ * </mx:columns>
+ * </mx:DataGrid>
+ * </pre>
+ * </p>
+ *
+ * @see mx.controls.dataGridClasses.DataGridItemRenderer
+ * @see mx.controls.dataGridClasses.DataGridColumn
+ * @see mx.controls.dataGridClasses.DataGridDragProxy
+ * @see mx.events.DataGridEvent
+ *
+ * @includeExample examples/SimpleDataGrid.mxml
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+public class DataGrid extends ListBase implements IDataGrid// implements IIMESupport
+{
+
+ //--------------------------------------------------------------------------
+ //
+ // Constructor
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function DataGrid()
+ {
+ super();
+ }
+
+ //--------------------------------------------------------------------------
+ //
+ // Variables
+ //
+ //--------------------------------------------------------------------------
+
+ [Inspectable(environment="none")]
+
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Overridden properties
+ //
+ //--------------------------------------------------------------------------
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Properties
+ //
+ //--------------------------------------------------------------------------
+
+ //----------------------------------
+ // columns
+ //----------------------------------
+
+ [Bindable("columnsChanged")]
+ [Inspectable(category="General", arrayType="mx.controls.dataGridClasses.DataGridColumn")]
+
+ /**
+ * An array of DataGridColumn objects, one for each column that
+ * can be displayed. If not explicitly set, the DataGrid control
+ * attempts to examine the first data provider item to determine the
+ * set of properties and display those properties in alphabetic
+ * order.
+ *
+ * <p>If you want to change the set of columns, you must get this array,
+ * make modifications to the columns and order of columns in the array,
+ * and then assign the new array to the columns property. This is because
+ * the DataGrid control returned a new copy of the array of columns and therefore
+ * did not notice the changes.</p>
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get columns():Array
+ {
+ return IDataGridModel(model).columns;
+ }
+ /**
+ * @royaleignorecoercion org.apache.royale.core.IDataGridModel
+ */
+ public function set columns(value:Array):void
+ {
+ IDataGridModel(model).columns = value;
+ }
+
+ /**
+ * @private
+ */
+ private var _presentationModel:IDataGridPresentationModel;
+
+ /**
+ * The DataGrid's presentation model
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9
+ * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
+ * @royaleignorecoercion org.apache.royale.core.IBead
+ */
+ public function get presentationModel():IBead
+ {
+ if (_presentationModel == null) {
+ var c:Class = ValuesManager.valuesImpl.getValue(this, "iDataGridPresentationModel");
+ if (c) {
+ _presentationModel = new c() as IDataGridPresentationModel;
+ addBead(_presentationModel as IBead);
+ }
+ }
+
+ return _presentationModel;
+ }
+ /**
+ * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel
+ * @royaleignorecoercion org.apache.royale.core.IBead
+ */
+ public function set presentationModel(value:IBead):void
+ {
+ _presentationModel = value as IDataGridPresentationModel;
+ }
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/List.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/List.as
new file mode 100644
index 0000000..30c8e22
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/List.as
@@ -0,0 +1,360 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
+import flash.display.Graphics;
+import flash.display.Shape;
+import flash.display.Sprite;
+import flash.events.Event;
+import flash.events.FocusEvent;
+import flash.events.KeyboardEvent;
+import flash.events.MouseEvent;
+import flash.geom.Point;
+import flash.ui.Keyboard;
+import flash.utils.Dictionary;
+
+import mx.collections.CursorBookmark;
+import mx.collections.IList;
+import mx.collections.ItemResponder;
+import mx.collections.ItemWrapper;
+import mx.collections.ModifiedCollectionView;
+import mx.collections.errors.ItemPendingError;
+import mx.controls.listClasses.BaseListData;
+import mx.controls.listClasses.IDropInListItemRenderer;
+import mx.controls.listClasses.IListItemRenderer;
+import mx.controls.listClasses.ListBaseContentHolder;
+import mx.controls.listClasses.ListBaseSeekPending;
+import mx.controls.listClasses.ListData;
+import mx.controls.listClasses.ListItemRenderer;
+import mx.controls.listClasses.ListRowInfo;
+import mx.controls.scrollClasses.ScrollBar;
+import mx.core.EdgeMetrics;
+import mx.core.EventPriority;
+import mx.core.FlexShape;
+import mx.core.FlexSprite;
+import mx.core.IChildList;
+import mx.core.IFactory;
+import mx.core.IIMESupport;
+import mx.core.IInvalidating;
+import mx.core.IPropertyChangeNotifier;
+import mx.core.IUIComponent;
+import mx.core.ScrollPolicy;
+import mx.core.UIComponent;
+import mx.core.UIComponentGlobals;
+import mx.core.mx_internal;
+import mx.events.CollectionEvent;
+import mx.events.CollectionEventKind;
+import mx.events.ListEvent;
+import mx.events.ListEventReason;
+import mx.events.SandboxMouseEvent;
+import mx.events.ScrollEvent;
+import mx.events.ScrollEventDetail;
+import mx.managers.IFocusManager;
+import mx.managers.IFocusManagerComponent;
+import mx.managers.ISystemManager;
+
+use namespace mx_internal;
+*/
+
+import mx.core.ClassFactory;
+import mx.controls.listClasses.ListBase;
+
+//[IconFile("List.png")]
+
+[DataBindingInfo("acceptedTypes", "{ dataProvider: { label: "String" } }")]
+
+[DefaultProperty("dataProvider")]
+
+[DefaultBindingProperty(source="selectedItem", destination="dataProvider")]
+
+[DefaultTriggerEvent("change")]
+
+[AccessibilityClass(implementation="mx.accessibility.ListAccImpl")]
+
+/**
+ * Dispatched when the user releases the mouse button while over an item,
+ * tabs to the List or within the List, or in any other way
+ * attempts to edit an item.
+ *
+ * @eventType mx.events.ListEvent.ITEM_EDIT_BEGINNING
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemEditBeginning", type="mx.events.ListEvent")]
+
+/**
+ * Dispatched when the <code>editedItemPosition</code> property is set
+ * and the item can be edited.
+ *
+ * @eventType mx.events.ListEvent.ITEM_EDIT_BEGIN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemEditBegin", type="mx.events.ListEvent")]
+
+/**
+ * Dispatched when an item editing session is ending for any reason.
+ *
+ * @eventType mx.events.ListEvent.ITEM_EDIT_END
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemEditEnd", type="mx.events.ListEvent")]
+
+/**
+ * Dispatched when an item renderer gets focus, which can occur if the user
+ * clicks on an item in the List control or navigates to the item using a
+ * keyboard.
+ * Only dispatched if the list item is editable.
+ *
+ * @eventType mx.events.ListEvent.ITEM_FOCUS_IN
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemFocusIn", type="mx.events.ListEvent")]
+
+/**
+ * Dispatched when an item renderer loses the focus, which can occur if the
+ * user clicks another item in the List control or outside the list,
+ * or uses the keyboard to navigate to another item in the List control
+ * or outside the List control.
+ * Only dispatched if the list item is editable.
+ *
+ * @eventType mx.events.ListEvent.ITEM_FOCUS_OUT
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Event(name="itemFocusOut", type="mx.events.ListEvent")]
+
+//--------------------------------------
+// Effects
+//--------------------------------------
+
+/**
+ * The data effect to play when a change occur to the control's data provider.
+ *
+ * <p>By default, the List control does not use a data effect.
+ * For the List control, use an instance of the the DefaultListEffect class
+ * to configure the data effect. </p>
+ *
+ * @default undefined
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+[Effect(name="itemsChangeEffect", event="itemsChange")]
+
+[Alternative(replacement="spark.components.List", since="4.0")]
+
+/**
+ * The List control displays a vertical list of items.
+ * Its functionality is very similar to that of the SELECT
+ * form element in HTML.
+ * If there are more items than can be displayed at once, it
+ * can display a vertical scroll bar so the user can access
+ * all items in the list.
+ * An optional horizontal scroll bar lets the user view items
+ * when the full width of the list items is unlikely to fit.
+ * The user can select one or more items from the list, depending
+ * on the value of the <code>allowMultipleSelection</code> property.
+ *
+ * <p>The List control has the following default sizing
+ * characteristics:</p>
+ * <table class="innertable">
+ * <tr>
+ * <th>Characteristic</th>
+ * <th>Description</th>
+ * </tr>
+ * <tr>
+ * <td>Default size</td>
+ * <td>Wide enough to fit the widest label in the first seven
+ * visible items (or all visible items in the list, if
+ * there are less than seven); seven rows high, where
+ * each row is 20 pixels high.</td>
+ * </tr>
+ * <tr>
+ * <td>Minimum size</td>
+ * <td>0 pixels.</td>
+ * </tr>
+ * <tr>
+ * <td>Maximum size</td>
+ * <td>5000 by 5000.</td>
+ * </tr>
+ * </table>
+ *
+ * @mxml
+ *
+ * <p>The <code><mx:List></code> tag inherits all the tag attributes
+ * of its superclass, and adds the following tag attributes:</p>
+ *
+ * <pre>
+ * <mx:List
+ * <b>Properties</b>
+ * editable="false|true"
+ * editedItemPosition="<i>No default</i>"
+ * editorDataField="text"
+ * editorHeightOffset="0"
+ * editorUsesEnterKey="false|true"
+ * editorWidthOffset="0"
+ * editorXOffset="0"
+ * editorYOffset="0"
+ * imeMode="null"
+ * itemEditor="TextInput"
+ * itemEditorInstance="<i>Current item editor</i>"
+ * rendererIsEditor="false|true"
+ *
+ * <b>Styles</b>
+ * backgroundDisabledColor="0xDDDDDD"
+ *
+ * <b>Events</b>
+ * itemEditBegin="<i>No default</i>"
+ * itemEditEnd="<i>No default</i>"
+ * itemEditBeginning="<i>No default</i>"
+ * itemFocusIn="<i>No default</i>"
+ * itemFocusOut="<i>No default</i>"
+ * />
+ * </pre>
+ *
+ * @includeExample examples/SimpleList.mxml
+ *
+ * @see mx.events.ListEvent
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+public class List extends ListBase // implements IIMESupport
+{
+
+ //--------------------------------------------------------------------------
+ //
+ // Constructor
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function List()
+ {
+ super();
+
+ }
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Overridden properties
+ //
+ //--------------------------------------------------------------------------
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Properties
+ //
+ //--------------------------------------------------------------------------
+
+ //----------------------------------
+ // editable
+ //----------------------------------
+
+ private var _editable:Boolean = false;
+
+ [Inspectable(category="General")]
+
+ /**
+ * A flag that indicates whether or not the user can edit
+ * items in the data provider.
+ * If <code>true</code>, the item renderers in the control are editable.
+ * The user can click on an item renderer to open an editor.
+ *
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get editable():Boolean
+ {
+ return _editable;
+ }
+
+ /**
+ * @private
+ */
+ public function set editable(value:Boolean):void
+ {
+ _editable = value;
+ }
+
+ //--------------------------------------------------------------------------
+ //
+ // Overridden methods
+ //
+ //--------------------------------------------------------------------------
+
+ [Inspectable(category="Data", defaultValue="undefined")]
+
+ /**
+ * @private
+ override public function set dataProvider(value:Object):void
+ {
+ if (itemEditorInstance)
+ endEdit(ListEventReason.OTHER);
+
+ super.dataProvider = value;
+ }
+ */
+
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
new file mode 100644
index 0000000..2336624
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridColumn.as
@@ -0,0 +1,399 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.dataGridClasses
+{
+
+/*
+import flash.display.DisplayObject;
+import flash.events.Event;
+import flash.utils.Dictionary;
+
+import mx.controls.TextInput;
+import mx.controls.listClasses.IListItemRenderer;
+import mx.core.ClassFactory;
+import mx.core.ContextualClassFactory;
+import mx.core.IEmbeddedFontRegistry;
+import mx.core.IFactory;
+import mx.core.IFlexModuleFactory;
+import mx.core.IIMESupport;
+import mx.core.Singleton;
+import mx.core.mx_internal;
+import mx.styles.StyleManager;
+import mx.utils.StringUtil;
+
+use namespace mx_internal;
+*/
+import org.apache.royale.html.supportClasses.DataGridColumn;
+
+//--------------------------------------
+// Styles
+//--------------------------------------
+
+//include "../../styles/metadata/TextStyles.as";
+
+/**
+ * The Background color of the column.
+ * The default value is <code>undefined</code>, which means it uses the value of the
+ * <code>backgroundColor</code> style of the associated DataGrid control.
+ * The default value for the DataGrid control is <code>0xFFFFFF</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="backgroundColor", type="uint", format="Color", inherit="no")]
+
+/**
+ * The name of a CSS style declaration for controlling other aspects of
+ * the appearance of the column headers.
+ * The default value is <code>undefined</code>, which means it uses the value of the
+ * <code>headerStyleName</code> style of the associated DataGrid control.
+ * The default value for the DataGrid control is
+ * <code>".dataGridStyles"</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="headerStyleName", type="String", inherit="no")]
+
+/**
+ * The number of pixels between the container's left border and its content
+ * area.
+ * @default 0
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="paddingLeft", type="Number", format="Length", inherit="no")]
+
+/**
+ * The number of pixels between the container's right border and its content
+ * area.
+ * @default 0
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+//[Style(name="paddingRight", type="Number", format="Length", inherit="no")]
+
+/**
+ * The DataGridColumn class describes a column in a DataGrid control.
+ * There is one DataGridColumn per displayable column, even if a column
+ * is hidden or off-screen.
+ * The data provider items of a DataGrid control
+ * can contain properties that are not displayed
+ * and, therefore, do not need a DataGridColumn.
+ * A DataGridColumn allows specification of the color and font of the text
+ * in a column; what kind of component displays the data for the column;
+ * whether the column is editable, sortable, or resizable;
+ * and the text for the column header.
+ *
+ * <p><strong>Notes:</strong><ul>
+ * <li>A DataGridColumn only holds information about a column;
+ * it is not the parent of the item renderers in the column.</li>
+ * <li>If you specify a DataGridColumn class without a <code>dataField</code>
+ * property, you must specify a <code>sortCompareFunction</code>
+ * property. Otherwise, sort operations may cause run-time errors.</li></ul>
+ * </p>
+ *
+ * @mxml
+ *
+ * <p>You use the <code><mx.DataGridColumn></code> tag to configure a column
+ * of a DataGrid control.
+ * You specify the <code><mx.DataGridColumn></code> tag as a child
+ * of the columns property in MXML.
+ * The <code><mx.DataGridColumn></code> tag inherits all of the
+ * tag attributes of its superclass, and adds the following tag attributes:</p>
+ *
+ * <pre>
+ * <mx:DataGridColumn
+ * <b>Properties </b>
+ * dataField="<i>No default</i>"
+ * dataTipField="<i>No default</i>"
+ * dataTipFunction="<i>No default</i>"
+ * editable="true|false"
+ * editorDataField="text"
+ * editorHeightOffset="0"
+ * editorUsesEnterKey="false|true"
+ * editorWidthOffset="0"
+ * editorXOffset="0"
+ * editorYOffset="0"
+ * headerRenderer="DataGridItemRenderer"
+ * headerText="<i>No default</i>"
+ * headerWordWrap="undefined"
+ * imeMode="null"
+ * itemEditor="TextInput"
+ * itemRenderer="DataGridItemRenderer"
+ * labelFunction="<i>No default</i>"
+ * minWidth="20"
+ * rendererIsEditor="false|true"
+ * resizable="true|false"
+ * showDataTips="false|true"
+ * sortable="true|false"
+ * sortCompareFunction="<i>No default</i>"
+ * sortDescending="false|true"
+ * visible="true|false"
+ * width="100"
+ * wordWrap="false|true"
+ *
+ * <b>Styles</b>
+ * backgroundColor="0xFFFFFF"
+ * color="<i>No default.</i>"
+ * disabledColor="0xAAB3B3"
+ * fontAntiAliasType="advanced"
+ * fontFamily="<i>No default</i>"
+ * fontGridFitType="pixel"
+ * fontSharpness="0"
+ * fontSize="<i>No default</i>"
+ * fontStyle="normal|italic"
+ * fontThickness="0"
+ * fontWeight="normal|bold"
+ * headerStyleName="<i>No default</i>"
+ * paddingLeft="0"
+ * paddingRight="0"
+ * textAlign="right|center|left"
+ * textDecoration="none|underline"
+ * textIndent="0"
+ * />
+ * </pre>
+ * </p>
+ *
+ * @see mx.controls.DataGrid
+ *
+ * @see mx.styles.CSSStyleDeclaration
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+public class DataGridColumn extends org.apache.royale.html.supportClasses.DataGridColumn // implements IIMESupport
+{
+ //--------------------------------------------------------------------------
+ //
+ // Constructor
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @param columnName The name of the field in the data provider
+ * associated with the column, and the text for the header cell of this
+ * column. This is equivalent to setting the <code>dataField</code>
+ * and <code>headerText</code> properties.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function DataGridColumn(columnName:String = null)
+ {
+ super();
+
+ if (columnName)
+ {
+ dataField = columnName;
+ headerText = columnName;
+ }
+ }
+
+ //--------------------------------------------------------------------------
+ //
+ // Variables
+ //
+ //--------------------------------------------------------------------------
+
+ //--------------------------------------------------------------------------
+ //
+ // Overridden properties
+ //
+ //--------------------------------------------------------------------------
+
+ //--------------------------------------------------------------------------
+ //
+ // Properties
+ //
+ //--------------------------------------------------------------------------
+
+
+
+ //----------------------------------
+ // headerText
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the headerText property.
+ */
+ private var _headerText:String;
+
+ [Bindable("headerTextChanged")]
+ [Inspectable(category="General")]
+
+ /**
+ * Text for the header of this column. By default, the DataGrid
+ * control uses the value of the <code>dataField</code> property
+ * as the header text.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get headerText():String
+ {
+ return (_headerText != null) ? _headerText : dataField;
+ }
+
+ /**
+ * @private
+ */
+ public function set headerText(value:String):void
+ {
+ _headerText = value;
+ }
+
+
+ //----------------------------------
+ // rendererIsEditor
+ //----------------------------------
+
+ [Inspectable(category="General", defaultValue="false")]
+
+ /**
+ * A flag that indicates that the item renderer is also an item editor.
+ * If this property is <code>true</code>, Flex
+ * ignores the <code>itemEditor</code> property and uses the item
+ * renderer for that item as the editor.
+ *
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ * @royalesuppresspublicvarwarning
+ */
+ public var rendererIsEditor:Boolean = false;
+
+ //----------------------------------
+ // labelFunction
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the labelFunction property.
+ */
+ private var _labelFunction:Function;
+
+ [Bindable("labelFunctionChanged")]
+ [Inspectable(category="Other")]
+
+ /**
+ * A function that determines the text to display in this column. By default
+ * the column displays the text for the field in the data that matches the
+ * column name. However, sometimes you want to display text based on
+ * more than one field in the data, or display something that does not
+ * have the format that you want.
+ * In such a case you specify a callback function using <code>labelFunction</code>.
+ *
+ * <p>For the DataGrid control, the method signature has the following form:</p>
+ *
+ * <pre>labelFunction(item:Object, column:DataGridColumn):String</pre>
+ *
+ * <p>Where <code>item</code> contains the DataGrid item object, and
+ * <code>column</code> specifies the DataGrid column.</p>
+ *
+ * <p>A callback function might concatenate the firstName and
+ * lastName fields in the data, or do some custom formatting on a Date,
+ * or convert a number for the month into the string for the month.</p>
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get labelFunction():Function
+ {
+ return _labelFunction;
+ }
+
+ /**
+ * @private
+ */
+ public function set labelFunction(value:Function):void
+ {
+ _labelFunction = value;
+ }
+
+ //----------------------------------
+ // width
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the width property.
+ */
+ private var _width:Number = 100;
+
+ [Bindable("widthChanged")]
+ [Inspectable(category="General", defaultValue="100")]
+
+ /**
+ * The width of the column, in pixels.
+ * If the DataGrid's <code>horizontalScrollPolicy</code> property
+ * is <code>false</code>, all visible columns must fit in the displayable
+ * area, and the DataGrid will not always honor the width of
+ * the columns if the total width of the columns is too
+ * small or too large for the displayable area.
+ *
+ * @default 100
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get width():Number
+ {
+ return _width;
+ }
+
+ /**
+ * @private
+ */
+ public function set width(value:Number):void
+ {
+ // otherwise, just store the size
+ _width = value;
+ }
+
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
index b38870d..cabddd2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListBase.as
@@ -18,12 +18,61 @@
////////////////////////////////////////////////////////////////////////////////
package mx.controls.listClasses
{
+COMPILE::JS
+{
+ import goog.DEBUG;
+}
+
+import mx.core.EdgeMetrics;
+import mx.core.IFactory;
+import mx.core.ScrollPolicy;
+import mx.core.UIComponent;
import mx.core.mx_internal;
-import org.apache.royale.core.ListBase;
+
+import org.apache.royale.core.ContainerBaseStrandChildren;
+import org.apache.royale.core.IBeadLayout;
+import org.apache.royale.core.IChild;
+import org.apache.royale.core.IContainer;
+import org.apache.royale.core.IContainerBaseStrandChildrenHost;
+import org.apache.royale.core.IDataProviderItemRendererMapper;
+import org.apache.royale.core.IItemRendererClassFactory;
+import org.apache.royale.core.ILayoutHost;
+import org.apache.royale.core.ILayoutChild;
+import org.apache.royale.core.ILayoutParent;
+import org.apache.royale.core.ILayoutView;
+import org.apache.royale.core.IParent;
+import org.apache.royale.core.ISelectionModel;
+import org.apache.royale.core.ValuesManager;
+import org.apache.royale.events.Event;
+import org.apache.royale.events.ValueEvent;
+import org.apache.royale.utils.loadBeadFromValuesManager;
use namespace mx_internal;
+/**
+ * Dispatched when the user clicks on an item in the control.
+ *
+ * @eventType mx.events.ListEvent.ITEM_CLICK
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+[Event(name="itemClick", type="mx.events.ListEvent")]
+
+/**
+ * Dispatched when the user double-clicks on an item in the control.
+ *
+ * @eventType mx.events.ListEvent.ITEM_DOUBLE_CLICK
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+[Event(name="itemDoubleClick", type="mx.events.ListEvent")]
/**
*
@@ -33,19 +82,229 @@ use namespace mx_internal;
* @productversion Royale 0.0
* @royalesuppresspublicvarwarning
*/
- public class ListBase extends org.apache.royale.core.ListBase
+ public class ListBase extends UIComponent implements IContainerBaseStrandChildrenHost, IContainer, ILayoutParent, ILayoutView
{
+ //----------------------------------
+ // dragEnabled
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the dragEnabled property.
+ */
+ private var _dragEnabled:Boolean = false;
+
+ /**
+ * A flag that indicates whether you can drag items out of
+ * this control and drop them on other controls.
+ * If <code>true</code>, dragging is enabled for the control.
+ * If the <code>dropEnabled</code> property is also <code>true</code>,
+ * you can drag items and drop them within this control
+ * to reorder the items.
+ *
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get dragEnabled():Boolean
+ {
+ return _dragEnabled;
+ }
+
+ /**
+ * @private
+ */
+ public function set dragEnabled(value:Boolean):void
+ {
+ _dragEnabled = value;
+ }
+
+ //----------------------------------
+ // dragMoveEnabled
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the dragMoveEnabled property.
+ */
+ private var _dragMoveEnabled:Boolean = false;
+
+ [Inspectable(defaultValue="false")]
+
+ /**
+ * A flag that indicates whether items can be moved instead
+ * of just copied from the control as part of a drag-and-drop
+ * operation.
+ * If <code>true</code>, and the <code>dragEnabled</code> property
+ * is <code>true</code>, items can be moved.
+ * Often the data provider cannot or should not have items removed
+ * from it, so a MOVE operation should not be allowed during
+ * drag-and-drop.
+ *
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get dragMoveEnabled():Boolean
+ {
+ return _dragMoveEnabled;
+ }
+
+ /**
+ * @private
+ */
+ public function set dragMoveEnabled(value:Boolean):void
+ {
+ _dragMoveEnabled = value;
+ }
+
+ //----------------------------------
+ // dataProvider
+ //----------------------------------
+
+ [Bindable("collectionChange")]
+ [Inspectable(category="Data", defaultValue="undefined")]
+
+ /**
+ * Set of data to be viewed.
+ * This property lets you use most types of objects as data providers.
+ * If you set the <code>dataProvider</code> property to an Array,
+ * it will be converted to an ArrayCollection. If you set the property to
+ * an XML object, it will be converted into an XMLListCollection with
+ * only one item. If you set the property to an XMLList, it will be
+ * converted to an XMLListCollection.
+ * If you set the property to an object that implements the
+ * IList or ICollectionView interface, the object will be used directly.
+ *
+ * <p>As a consequence of the conversions, when you get the
+ * <code>dataProvider</code> property, it will always be
+ * an ICollectionView, and therefore not necessarily be the type of object
+ * you used to you set the property.
+ * This behavior is important to understand if you want to modify the data
+ * in the data provider: changes to the original data may not be detected,
+ * but changes to the ICollectionView object that you get back from the
+ * <code>dataProvider</code> property will be detected.</p>
+ *
+ * @default null
+ * @see mx.collections.ICollectionView
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ public function get dataProvider():Object
+ {
+ return (model as ISelectionModel).dataProvider;
+ }
+ /**
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ public function set dataProvider(value:Object):void
+ {
+ (model as ISelectionModel).dataProvider = value;
+ }
+
+
+ //----------------------------------
+ // dropEnabled
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the <code>dropEnabled</code> property.
+ */
+ private var _dropEnabled:Boolean = false;
+
+ [Inspectable(defaultValue="false")]
+
+ /**
+ * A flag that indicates whether dragged items can be dropped onto the
+ * control.
+ *
+ * <p>If you set this property to <code>true</code>,
+ * the control accepts all data formats, and assumes that
+ * the dragged data matches the format of the data in the data provider.
+ * If you want to explicitly check the data format of the data
+ * being dragged, you must handle one or more of the drag events,
+ * such as <code>dragOver</code>, and call the DragEvent's
+ * <code>preventDefault()</code> method to customize
+ * the way the list class accepts dropped data.</p>
+ *
+ * <p>When you set <code>dropEnabled</code> to <code>true</code>,
+ * Flex automatically calls the <code>showDropFeedback()</code>
+ * and <code>hideDropFeedback()</code> methods to display the drop indicator.</p>
+ *
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get dropEnabled():Boolean
+ {
+ return _dropEnabled;
+ }
+
+ /**
+ * @private
+ */
+ public function set dropEnabled(value:Boolean):void
+ {
+ _dropEnabled = value;
+ }
+
+ //----------------------------------
+ // labelField
+ //----------------------------------
+
+ [Bindable("labelFieldChanged")]
+ [Inspectable(category="Data", defaultValue="label")]
+
+ /**
+ * The name of the field in the data provider items to display as the label.
+ * By default the list looks for a property named <code>label</code>
+ * on each item and displays it.
+ * However, if the data objects do not contain a <code>label</code>
+ * property, you can set the <code>labelField</code> property to
+ * use a different property in the data object. An example would be
+ * "FullName" when viewing a set of people names fetched from a database.
+ *
+ * @default "label"
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ public function get labelField():String
+ {
+ return (model as ISelectionModel).labelField;
+ }
+
+ /**
+ * @private
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ public function set labelField(value:String):void
+ {
+ (model as ISelectionModel).labelField = value;
+ }
+
//----------------------------------
// selectedIndex
//----------------------------------
- /**
- * @private
- * Storage for the selectedIndex property.
- */
- mx_internal var _selectedIndex:int = -1;
-
[Bindable("change")]
[Bindable("valueCommit")]
[Inspectable(category="General", defaultValue="-1")]
@@ -60,20 +319,22 @@ use namespace mx_internal;
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
*/
public function get selectedIndex():int
{
- return _selectedIndex;
+ return (model as ISelectionModel).selectedIndex;
}
/**
* @private
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
*/
public function set selectedIndex(value:int):void
{
// if (!collection || collection.length == 0)
// {
- _selectedIndex = value;
+ (model as ISelectionModel).selectedIndex = value;
// bSelectionChanged = true;
// bSelectedIndexChanged = true;
// invalidateDisplayList();
@@ -82,7 +343,78 @@ use namespace mx_internal;
//commitSelectedIndex(value);
}
- //----------------------------------
+ //----------------------------------
+ // selectedIndices
+ //----------------------------------
+
+ [Bindable("change")]
+ [Bindable("valueCommit")]
+ [Inspectable(category="General")]
+
+ /**
+ * An array of indices in the data provider of the selected items. The
+ * items are in the reverse order that the user selected the items.
+ * @default [ ]
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get selectedIndices():Array
+ {
+ // TODO
+ if (GOOG::DEBUG)
+ trace("selectedIndices not implemented");
+ return null;
+ }
+
+ /**
+ * @private
+ */
+ public function set selectedIndices(indices:Array):void
+ {
+ // TODO
+ if (GOOG::DEBUG)
+ trace("selectedIndices not implemented");
+ }
+
+ //----------------------------------
+ // selectedItems
+ //----------------------------------
+
+ [Bindable("change")]
+ [Bindable("valueCommit")]
+
+ /**
+ * An array of references to the selected items in the data provider. The
+ * items are in the reverse order that the user selected the items.
+ * @default [ ]
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get selectedItems():Array
+ {
+ // TODO
+ if (GOOG::DEBUG)
+ trace("selectedItems not implemented");
+ return null;
+ }
+
+ /**
+ * @private
+ */
+ public function set selectedItems(items:Array):void
+ {
+ // TODO
+ if (GOOG::DEBUG)
+ trace("selectedItems not implemented");
+ }
+
+ //----------------------------------
// variableRowHeight
//----------------------------------
@@ -124,7 +456,46 @@ use namespace mx_internal;
// dispatchEvent(new Event("variableRowHeightChanged"));
}
-
+ //----------------------------------
+ // allowMultipleSelection
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the allowMultipleSelection property.
+ */
+ private var _allowMultipleSelection:Boolean = false;
+
+ [Inspectable(category="General", enumeration="false,true", defaultValue="false")]
+
+ /**
+ * A flag that indicates whether you can allow more than one item to be
+ * selected at the same time.
+ * If <code>true</code>, users can select multiple items.
+ * There is no option to disallow discontiguous selection.
+ * Standard complex selection options are always in effect
+ * (Shift-click, Ctrl-click).
+ *
+ * @default false
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get allowMultipleSelection():Boolean
+ {
+ return _allowMultipleSelection;
+ }
+
+ /**
+ * @private
+ */
+ public function set allowMultipleSelection(value:Boolean):void
+ {
+ _allowMultipleSelection = value;
+ }
+
/**
* Constructor.
@@ -138,5 +509,506 @@ use namespace mx_internal;
{
super();
}
+
+ private var _DCinitialized:Boolean = true;
+
+ /**
+ * @private
+ */
+ override public function addedToParent():void
+ {
+ if (!_DCinitialized)
+ {
+ ValuesManager.valuesImpl.init(this);
+ _DCinitialized = true;
+ }
+
+ super.addedToParent();
+
+ // Load the layout bead if it hasn't already been loaded.
+ loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this);
+
+ // Even though super.addedToParent dispatched "beadsAdded", DataContainer still needs its data mapper
+ // and item factory beads. These beads are added after super.addedToParent is called in case substitutions
+ // were made; these are just defaults extracted from CSS.
+ loadBeadFromValuesManager(IDataProviderItemRendererMapper, "iDataProviderItemRendererMapper", this);
+ loadBeadFromValuesManager(IItemRendererClassFactory, "iItemRendererClassFactory", this);
+
+ dispatchEvent(new Event("initComplete"));
+ }
+
+ /*
+ * IItemRendererProvider
+ */
+
+ private var _itemRenderer:IFactory;
+
+ /**
+ * The class or factory used to display each item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public function get itemRenderer():IFactory
+ {
+ return _itemRenderer;
+ }
+ public function set itemRenderer(value:IFactory):void
+ {
+ _itemRenderer = value;
+ }
+
+ private var _strandChildren:ContainerBaseStrandChildren;
+
+ /**
+ * @private
+ */
+ public function get strandChildren():IParent
+ {
+ if (_strandChildren == null) {
+ _strandChildren = new ContainerBaseStrandChildren(this);
+ }
+ return _strandChildren;
+ }
+
+ /**
+ * @private
+ */
+ public function childrenAdded():void
+ {
+ dispatchEvent(new ValueEvent("childrenAdded"));
+ }
+
+ /**
+ * Returns the ILayoutHost which is its view. From ILayoutParent.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.8
+ * @royaleignorecoercion org.apache.royale.core.ILayoutHost
+ */
+ public function getLayoutHost():ILayoutHost
+ {
+ return view as ILayoutHost;
+ }
+
+ /*
+ * The following functions are for the SWF-side only and re-direct element functions
+ * to the content area, enabling scrolling and clipping which are provided automatically
+ * in the JS-side. GroupBase handles event dispatching if necessary.
+ */
+
+ /**
+ * @private
+ */
+ COMPILE::SWF
+ override public function addElement(c:IChild, dispatchEvent:Boolean = true):void
+ {
+ var contentView:IParent = getLayoutHost().contentView as IParent;
+ if (contentView == this)
+ return super.addElement(c, dispatchEvent);
+ contentView.addElement(c, dispatchEvent);
+ if (dispatchEvent)
+ this.dispatchEvent(new ValueEvent("childrenAdded", c));
+ }
+
+ /**
+ * @private
+ */
+ COMPILE::SWF
+ override public function addElementAt(c:IChild, index:int, dispatchEvent:Boolean = true):void
+ {
+ var contentView:IParent = getLayoutHost().contentView as IParent;
+ if (contentView == this)
+ return super.addElementAt(c, index, dispatchEvent);
+ contentView.addElementAt(c, index, dispatchEvent);
+ if (dispatchEvent)
+ this.dispatchEvent(new ValueEvent("childrenAdded", c));
+ }
+
+ /**
+ * @private
+ */
+ COMPILE::SWF
+ override public function getElementIndex(c:IChild):int
+ {
+ var layoutHost:ILayoutHost = view as ILayoutHost;
+ var contentView:IParent = layoutHost.contentView as IParent;
+ if (contentView == this)
+ return super.getElementIndex(c);
+ return contentView.getElementIndex(c);
+ }
+
+ /**
+ * @private
+ */
+ COMPILE::SWF
+ override public function removeElement(c:IChild, dispatchEvent:Boolean = true):void
+ {
+ var layoutHost:ILayoutHost = view as ILayoutHost;
+ var contentView:IParent = layoutHost.contentView as IParent;
+ contentView.removeElement(c, dispatchEvent);
+ //TODO This should possibly be ultimately refactored to be more PAYG
+ if(dispatchEvent)
+ this.dispatchEvent(new ValueEvent("childrenRemoved", c));
+ }
+
+ /**
+ * @private
+ */
+ COMPILE::SWF
+ override public function get numElements():int
+ {
+ var layoutHost:ILayoutHost = view as ILayoutHost;
+ var contentView:IParent = layoutHost.contentView as IParent;
+ if (contentView == this)
+ return super.numElements;
+ return contentView.numElements;
+ }
+
+ /**
+ * @private
+ */
+ COMPILE::SWF
+ override public function getElementAt(index:int):IChild
+ {
+ var layoutHost:ILayoutHost = view as ILayoutHost;
+ var contentView:IParent = layoutHost.contentView as IParent;
+ if (contentView == this)
+ return super.getElementAt(index);
+ return contentView.getElementAt(index);
+ }
+
+ /*
+ * IStrandPrivate
+ *
+ * These "internal" function provide a backdoor way for proxy classes to
+ * operate directly at strand level. While these function are available on
+ * both SWF and JS platforms, they really only have meaning on the SWF-side.
+ * Other subclasses may provide use on the JS-side.
+ *
+ * @see org.apache.royale.core.IContainer#strandChildren
+ */
+
+ /**
+ * @private
+ * @suppress {undefinedNames}
+ * Support strandChildren.
+ */
+ public function $numElements():int
+ {
+ return super.numElements;
+ }
+
+ /**
+ * @private
+ * @suppress {undefinedNames}
+ * Support strandChildren.
+ */
+ public function $addElement(c:IChild, dispatchEvent:Boolean = true):void
+ {
+ super.addElement(c, dispatchEvent);
+ }
+
+ /**
+ * @private
+ * @suppress {undefinedNames}
+ * Support strandChildren.
+ */
+ public function $addElementAt(c:IChild, index:int, dispatchEvent:Boolean = true):void
+ {
+ super.addElementAt(c, index, dispatchEvent);
+ }
+
+ /**
+ * @private
+ * @suppress {undefinedNames}
+ * Support strandChildren.
+ */
+ public function $removeElement(c:IChild, dispatchEvent:Boolean = true):void
+ {
+ super.removeElement(c, dispatchEvent);
+ }
+
+ /**
+ * @private
+ * @suppress {undefinedNames}
+ * Support strandChildren.
+ */
+ public function $getElementIndex(c:IChild):int
+ {
+ return super.getElementIndex(c);
+ }
+
+ /**
+ * @private
+ * @suppress {undefinedNames}
+ * Support strandChildren.
+ */
+ public function $getElementAt(index:int):IChild
+ {
+ return super.getElementAt(index);
+ }
+
+ //----------------------------------
+ // explicitColumnCount
+ //----------------------------------
+
+ /**
+ * The column count requested by explicitly setting the
+ * <code>columnCount</code> property.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ protected var explicitColumnCount:int = -1;
+
+ //----------------------------------
+ // explicitColumnWidth
+ //----------------------------------
+
+ /**
+ * The column width requested by explicitly setting the
+ * <code>columnWidth</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ protected var explicitColumnWidth:Number;
+
+ //----------------------------------
+ // explicitRowHeight
+ //----------------------------------
+
+ /**
+ * The row height requested by explicitly setting
+ * <code>rowHeight</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ protected var explicitRowHeight:Number;
+
+ //----------------------------------
+ // explicitRowCount
+ //----------------------------------
+
+ /**
+ * The row count requested by explicitly setting
+ * <code>rowCount</code>.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ protected var explicitRowCount:int = -1;
+
+ //----------------------------------
+ // defaultColumnCount
+ //----------------------------------
+
+ /**
+ * The default number of columns to display. This value
+ * is used if the calculation for the number of
+ * columns results in a value less than 1 when
+ * trying to calculate the columnCount based on size or
+ * content.
+ *
+ * @default 4
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ protected var defaultColumnCount:int = 4;
+
+ //----------------------------------
+ // defaultRowCount
+ //----------------------------------
+
+ /**
+ * The default number of rows to display. This value
+ * is used if the calculation for the number of
+ * columns results in a value less than 1 when
+ * trying to calculate the rowCount based on size or
+ * content.
+ *
+ * @default 4
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ protected var defaultRowCount:int = 4;
+
+ //----------------------------------
+ // rowHeight
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the rowHeight property.
+ */
+ private var _rowHeight:Number;
+
+ /**
+ * @private
+ */
+ private var rowHeightChanged:Boolean = false;
+
+ [Inspectable(category="General")]
+
+ /**
+ * The height of the rows in pixels.
+ * Unless the <code>variableRowHeight</code> property is
+ * <code>true</code>, all rows are the same height.
+ * If not specified, the row height is based on
+ * the font size and other properties of the renderer.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get rowHeight():Number
+ {
+ return _rowHeight;
+ }
+
+ /**
+ * @private
+ */
+ public function set rowHeight(value:Number):void
+ {
+ explicitRowHeight = value;
+
+ if (_rowHeight != value)
+ {
+ _rowHeight = value;
+
+ /*
+ invalidateSize();
+ itemsSizeChanged = true;
+ invalidateDisplayList();
+
+ dispatchEvent(new Event("rowHeightChanged"));
+ */
+ }
+ }
+
+ //----------------------------------
+ // columnWidth
+ //----------------------------------
+
+ /**
+ * @private
+ * Storage for the columnWidth property.
+ */
+ private var _columnWidth:Number;
+
+ /**
+ * @private
+ */
+ private var columnWidthChanged:Boolean = false;
+
+ /**
+ * The width of the control's columns.
+ * This property is used by TileList and HorizontalList controls;
+ * It has no effect on DataGrid controls, where you set the individual
+ * DataGridColumn widths.
+ *
+ * @default 50
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get columnWidth():Number
+ {
+ return _columnWidth;
+ }
+
+ /**
+ * @private
+ */
+ public function set columnWidth(value:Number):void
+ {
+ explicitColumnWidth = value;
+
+ if (_columnWidth != value)
+ {
+ _columnWidth = value;
+
+ /*
+ invalidateSize();
+ itemsSizeChanged = true;
+ invalidateDisplayList();
+
+ dispatchEvent(new Event("columnWidthChanged"));*/
+ }
+ }
+
+ /**
+ * @royaleignorecoercion org.apache.royale.core.ILayoutChild
+ */
+ override protected function measure():void
+ {
+ super.measure();
+
+ var cc:int = explicitColumnCount < 1 ?
+ defaultColumnCount :
+ explicitColumnCount;
+
+ var rc:int = explicitRowCount < 1 ?
+ defaultRowCount :
+ explicitRowCount;
+
+ if (!isNaN(explicitRowHeight))
+ {
+ measuredHeight = explicitRowHeight * rc // + o.top + o.bottom;
+ //measuredMinHeight = explicitRowHeight * Math.min(rc, 2) +
+ // o.top + o.bottom;
+ }
+ else
+ {
+ if (isNaN(rowHeight) && numChildren > 0)
+ {
+ rowHeight = (getElementAt(0) as ILayoutChild).height;
+ }
+ measuredHeight = rowHeight * rc // + o.top + o.bottom;
+ //measuredMinHeight = rowHeight * Math.min(rc, 2) +
+ // o.top + o.bottom;
+ }
+
+ if (!isNaN(explicitColumnWidth))
+ {
+ measuredWidth = explicitColumnWidth * cc // + o.left + o.right;
+ //measuredMinWidth = explicitColumnWidth * Math.min(cc, 1) +
+ // o.left + o.right;
+ }
+ else
+ {
+ if (isNaN(columnWidth) && numChildren > 0)
+ {
+ columnWidth = (getElementAt(0) as ILayoutChild).width;
+ }
+ measuredWidth = columnWidth * cc // + o.left + o.right;
+ //measuredMinWidth = columnWidth * Math.min(cc, 1) +
+ // o.left + o.right;
+ }
+ }
}
}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListItemRenderer.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListItemRenderer.as
new file mode 100644
index 0000000..922aa3f
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/listClasses/ListItemRenderer.as
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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
+{
+import org.apache.royale.html.supportClasses.StringItemRenderer;
+import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
+import org.apache.royale.core.layout.EdgeData;
+import org.apache.royale.core.ValuesManager;
+
+/**
+ * The ListItemRenderer is the default renderer for mx.controls.List
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+
+public class ListItemRenderer extends StringItemRenderer
+{
+ override public function set text(value:String):void
+ {
+ super.text = value;
+ COMPILE::SWF
+ {
+ var edge:EdgeData = (ValuesManager.valuesImpl as IBorderPaddingMarginValuesImpl).getPaddingMetrics(this);
+ var h:Number = textField.textHeight + edge.top + edge.bottom;
+ textField.autoSize = "none";
+ textField.height = h;
+ }
+ }
+
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/core/Container.as b/frameworks/projects/MXRoyale/src/main/royale/mx/core/Container.as
index b497c30..6964e92 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/Container.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/Container.as
@@ -31,7 +31,7 @@ package mx.core
import org.apache.royale.core.IMXMLDocument;
import org.apache.royale.core.IParent;
import org.apache.royale.core.IStatesImpl;
- import org.apache.royale.core.IStrandPrivate;
+ import org.apache.royale.core.IContainerBaseStrandChildrenHost;
import org.apache.royale.core.layout.EdgeData;
import org.apache.royale.core.ValuesManager;
import org.apache.royale.events.Event;
@@ -315,7 +315,7 @@ use namespace mx_internal;
public class Container extends UIComponent
implements IDataRenderer, IChildList,
IContainer, ILayoutParent, ILayoutView, IContentViewHost,
- IStrandPrivate, IMXMLDocument, IFocusManagerContainer
+ IContainerBaseStrandChildrenHost, IMXMLDocument, IFocusManagerContainer
//implements IContainer, IDataRenderer,
//IListItemRenderer,
//IRawChildrenContainer, IChildList, IVisualElementContainer,
@@ -867,7 +867,7 @@ public class Container extends UIComponent
}
/*
- * IStrandPrivate
+ * IContainerBaseStrandChildrenHost
*
* These "internal" function provide a backdoor way for proxy classes to
* operate directly at strand level. While these function are available on
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/styles/CSSStyleDeclaration.as b/frameworks/projects/MXRoyale/src/main/royale/mx/styles/CSSStyleDeclaration.as
new file mode 100644
index 0000000..728d114
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/styles/CSSStyleDeclaration.as
@@ -0,0 +1,216 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.styles
+{
+/*
+import flash.display.DisplayObject;
+import flash.events.EventDispatcher;
+import flash.utils.Dictionary;
+
+import mx.core.Singleton;
+import mx.core.mx_internal;
+import mx.events.FlexChangeEvent;
+import mx.managers.ISystemManager;
+import mx.managers.SystemManagerGlobals;
+import mx.utils.ObjectUtil;
+
+use namespace mx_internal;
+*/
+import org.apache.royale.events.EventDispatcher;
+
+/**
+ * The CSSStyleDeclaration class represents a set of CSS style rules.
+ * The MXML compiler automatically generates one CSSStyleDeclaration object
+ * for each selector in the CSS files associated with a Flex application.
+ *
+ * <p>A CSS rule such as
+ * <pre>
+ * Button { color: #FF0000 }
+ * </pre>
+ * affects every instance of the Button class;
+ * a selector like <code>Button</code> is called a type selector
+ * and must not start with a dot.</p>
+ *
+ * <p>A CSS rule such as
+ * <pre>
+ * .redButton { color: #FF0000 }
+ * </pre>
+ * affects only components whose <code>styleName</code> property
+ * is set to <code>"redButton"</code>;
+ * a selector like <code>.redButton</code> is called a class selector
+ * and must start with a dot.</p>
+ *
+ * <p>You can access the autogenerated CSSStyleDeclaration objects
+ * using the <code>StyleManager.getStyleDeclaration()</code> method,
+ * passing it either a type selector
+ * <pre>
+ * var buttonDeclaration:CSSStyleDeclaration =
+ * StyleManager.getStyleDeclaration("Button");
+ * </pre>
+ * or a class selector
+ * <pre>
+ * var redButtonStyleDeclaration:CSSStyleDeclaration =
+ * StyleManager.getStyleDeclaration(".redButton");
+ * </pre>
+ * </p>
+ *
+ * <p>You can use the <code>getStyle()</code>, <code>setStyle()</code>,
+ * and <code>clearStyle()</code> methods to get, set, and clear
+ * style properties on a CSSStyleDeclaration.</p>
+ *
+ * <p>You can also create and install a CSSStyleDeclaration at run time
+ * using the <code>StyleManager.setStyleDeclaration()</code> method:
+ * <pre>
+ * var newStyleDeclaration:CSSStyleDeclaration = new CSSStyleDeclaration(".bigMargins");
+ * newStyleDeclaration.defaultFactory = function():void
+ * {
+ * leftMargin = 50;
+ * rightMargin = 50;
+ * }
+ * StyleManager.setStyleDeclaration(".bigMargins", newStyleDeclaration, true);
+ * </pre>
+ * </p>
+ *
+ * @see mx.core.UIComponent
+ * @see mx.styles.StyleManager
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+public class CSSStyleDeclaration extends EventDispatcher
+{
+// include "../core/Version.as";
+
+ //--------------------------------------------------------------------------
+ //
+ // Constructor
+ //
+ //--------------------------------------------------------------------------
+
+ /**
+ * Constructor.
+ *
+ * @param selector - If the selector is a CSSSelector then advanced
+ * CSS selectors are supported. If a String is used for the selector then
+ * only simple CSS selectors are supported. If the String starts with a
+ * dot it is interpreted as a universal class selector, otherwise it must
+ * represent a simple type selector. If not null, this CSSStyleDeclaration
+ * will be registered with StyleManager.
+ *
+ * @param styleManager - The style manager to set this declaration into. If the
+ * styleManager is null the top-level style manager will be used.
+ *
+ * @param autoRegisterWithStyleManager - If true set the selector in the styleManager. The selector
+ * will only be set if both <code>selector</code> and <code>styleManager</code> are
+ * both non-null.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function CSSStyleDeclaration(selector:Object=null, styleManager:IStyleManager2=null, autoRegisterWithStyleManager:Boolean = true)
+ {
+ super();
+
+ /*
+ // Do not reference StyleManager directly because this is a bootstrap class
+ if (!styleManager)
+ styleManager = Singleton.getInstance("mx.styles::IStyleManager2") as IStyleManager2;
+
+ this.styleManager = styleManager;
+
+ if (selector)
+ {
+ if (selector is CSSSelector)
+ {
+ this.selector = selector as CSSSelector;
+ }
+ else
+ {
+ // Otherwise, a legacy Flex 3 String selector was provided
+ selectorString = selector.toString();
+ }
+
+ if (autoRegisterWithStyleManager)
+ styleManager.setStyleDeclaration(selectorString, this, false);
+ }
+ */
+
+ }
+
+ //--------------------------------------------------------------------------
+ //
+ // Variables
+ //
+ //--------------------------------------------------------------------------
+
+ //--------------------------------------------------------------------------
+ //
+ // Properties
+ //
+ //--------------------------------------------------------------------------
+
+ //----------------------------------
+ // defaultFactory
+ //----------------------------------
+
+ private var _defaultFactory:Function;
+
+ [Inspectable(environment="none")]
+
+ /**
+ * This function, if it isn't <code>null</code>,
+ * is usually autogenerated by the MXML compiler.
+ * It produce copies of a plain Object, such as
+ * <code>{ leftMargin: 10, rightMargin: 10 }</code>,
+ * containing name/value pairs for style properties; the object is used
+ * to build a node of the prototype chain for looking up style properties.
+ *
+ * <p>If this CSSStyleDeclaration is owned by a UIComponent
+ * written in MXML, this function encodes the style attributes
+ * that were specified on the root tag of the component definition.</p>
+ *
+ * <p>If the UIComponent was written in ActionScript,
+ * this property is <code>null</code>.</p>
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ */
+ public function get defaultFactory():Function
+ {
+ return _defaultFactory;
+ }
+
+ /**
+ * @private
+ */
+ public function set defaultFactory(f:Function):void
+ {
+ _defaultFactory = f;
+ }
+
+}
+
+}
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/styles/IStyleManager2.as b/frameworks/projects/MXRoyale/src/main/royale/mx/styles/IStyleManager2.as
new file mode 100644
index 0000000..8eb2ae9
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/styles/IStyleManager2.as
@@ -0,0 +1,47 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.styles
+{
+/*
+import flash.events.IEventDispatcher;
+import flash.system.ApplicationDomain;
+import flash.system.SecurityDomain;
+*/
+/**
+ * The IStyleManager2 class manages the following:
+ * <ul>
+ * <li>Which CSS style properties the class inherits</li>
+ * <li>Which style properties are colors, and therefore get special handling</li>
+ * <li>A list of strings that are aliases for color values</li>
+ * </ul>
+ *
+ * @see mx.styles.CSSStyleDeclaration
+ *
+ * @langversion 3.0
+ * @playerversion Flash 9
+ * @playerversion AIR 1.1
+ * @productversion Flex 3
+ *
+ */
+public interface IStyleManager2 // extends IStyleManager
+{
+}
+
+}
--
To stop receiving notification emails like this one, please contact
aharui@apache.org.