This is an automated email from the ASF dual-hosted git repository. carlosrovira pushed a commit to branch feature/jewel-datagrid in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit bcc665c26dbbc97e27c35eed41770d30a470b93d Author: Carlos Rovira <[email protected]> AuthorDate: Mon Nov 25 13:05:33 2019 +0100 jewel-datagrid: starting point creating placeholder and some support classes. Created SASS file to start the styling. Added DataGridColumn to manifest and removed from JewelClasses --- .../projects/Jewel/src/main/resources/defaults.css | 12 ++ .../Jewel/src/main/resources/jewel-manifest.xml | 3 + .../projects/Jewel/src/main/royale/JewelClasses.as | 1 - .../royale/org/apache/royale/jewel/DataGrid.as | 196 +++++++++++++++++++++ .../Jewel/src/main/sass/components/_datagrid.sass | 99 +++++++++++ .../projects/Jewel/src/main/sass/defaults.sass | 1 + 6 files changed, 311 insertions(+), 1 deletion(-) diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css index 597a581..60f2a67 100644 --- a/frameworks/projects/Jewel/src/main/resources/defaults.css +++ b/frameworks/projects/Jewel/src/main/resources/defaults.css @@ -457,6 +457,18 @@ j|ComboBoxPopUp { IBeadView: ClassReference("org.apache.royale.jewel.beads.views.ComboBoxPopUpView"); } +j|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"); + columnClass: ClassReference("org.apache.royale.html.supportClasses.DataGridColumnList"); + columnContainerClass: ClassReference("org.apache.royale.html.DataGridButtonBar"); + columnLayoutClass: ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout"); + listAreaClass: ClassReference("org.apache.royale.html.beads.DataGridListArea"); +} + .jewel.datechooser .jewel.table { min-width: 324px; min-height: 364px; diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml index ecb6a12..b38ee40 100644 --- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml +++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml @@ -43,6 +43,9 @@ <component id="TableHeaderCell" class="org.apache.royale.jewel.supportClasses.table.TableHeaderCell"/> <component id="TableColumn" class="org.apache.royale.jewel.supportClasses.table.TableColumn"/> + <component id="DataGrid" class="org.apache.royale.jewel.DataGrid"/> + <component id="DataGridColumn" class="org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn"/> + <component id="SimpleButton" class="org.apache.royale.jewel.supportClasses.button.SimpleButton"/> <component id="Button" class="org.apache.royale.jewel.Button"/> <component id="IconButton" class="org.apache.royale.jewel.IconButton"/> diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as index f180b51..7eb7101 100644 --- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as +++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as @@ -103,7 +103,6 @@ package import org.apache.royale.jewel.supportClasses.Viewport; Viewport; import org.apache.royale.jewel.supportClasses.NoViewport; NoViewport; import org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport; ScrollingViewport; - import org.apache.royale.jewel.supportClasses.datagrid.DataGridColumn; DataGridColumn; import org.apache.royale.jewel.supportClasses.datechooser.DateChooserTable; DateChooserTable; import org.apache.royale.jewel.supportClasses.table.TBodyContentArea; TBodyContentArea; import org.apache.royale.jewel.supportClasses.combobox.ComboBoxPopUp; ComboBoxPopUp; diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as new file mode 100644 index 0000000..cd76f93 --- /dev/null +++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataGrid.as @@ -0,0 +1,196 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package org.apache.royale.jewel +{ + import org.apache.royale.core.GroupBase; + import org.apache.royale.core.IBead; + import org.apache.royale.core.IChangePropagator; + import org.apache.royale.core.IDataGrid; + import org.apache.royale.core.IDataGridModel; + import org.apache.royale.core.IDataGridPresentationModel; + import org.apache.royale.core.ValuesManager; + import org.apache.royale.events.Event; + import org.apache.royale.utils.loadBeadFromValuesManager; + + [Event(name="change", type="org.apache.royale.events.Event")] + + /** + * The DataGrid class displays a collection of data using columns and rows. Each + * column represents a specific field in the data set; each row represents a specific + * datum. The DataGrid is a composite component built with a org.apache.royale.html.ButtonBar + * for the column headers and a org.apache.royale.html.List for each column. The DataGrid's + * view bead (usually org.apache.royale.html.beads.DataGridView) constructs these parts while + * itemRenderer factories contruct the elements to display the data in each cell. + * + * @toplevel + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.7 + */ + public class DataGrid extends GroupBase implements IDataGrid + { + /** + * constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9.7 + */ + public function DataGrid() + { + super(); + + typeNames = "jewel datagrid"; + + // set a reasonable default size + width = 200; + height = 200; + } + + /** + * The array of org.apache.royale.html.supportClasses.DataGridColumns used to + * describe each column. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9 + * @royaleignorecoercion org.apache.royale.core.IDataGridModel + */ + 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; + } + + /** + * The object used to provide data to the org.apache.royale.html.DataGrid. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9 + * @royaleignorecoercion org.apache.royale.core.IDataGridModel + */ + public function get dataProvider():Object + { + return IDataGridModel(model).dataProvider; + } + /** + * @royaleignorecoercion org.apache.royale.core.IDataGridModel + */ + public function set dataProvider(value:Object):void + { + IDataGridModel(model).dataProvider = value; + } + + /** + * The currently selected row. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9 + * @royaleignorecoercion org.apache.royale.core.IDataGridModel + */ + [Bindable("change")] + public function get selectedIndex():int + { + return IDataGridModel(model).selectedIndex; + } + /** + * @royaleignorecoercion org.apache.royale.core.IDataGridModel + */ + public function set selectedIndex(value:int):void + { + IDataGridModel(model).selectedIndex = 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 + */ + public function set presentationModel(value:IBead):void + { + _presentationModel = value as IDataGridPresentationModel; + } + + /** + * The default height of each cell in every column + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.9 + * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel + */ + public function get rowHeight():Number + { + return (presentationModel as IDataGridPresentationModel).rowHeight; + } + /** + * @royaleignorecoercion org.apache.royale.core.IDataGridPresentationModel + */ + public function set rowHeight(value:Number):void + { + (presentationModel as IDataGridPresentationModel).rowHeight = value; + } + + override public function addedToParent():void + { + loadBeadFromValuesManager(IChangePropagator, "iChangePropagator", this); + super.addedToParent(); + dispatchEvent(new Event("initComplete")); + } + } +} diff --git a/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass new file mode 100644 index 0000000..827b040 --- /dev/null +++ b/frameworks/projects/Jewel/src/main/sass/components/_datagrid.sass @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +// Jewel DataGrid + +// DataGrid variables + +.jewel.datagrid + +j|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") + columnClass: ClassReference("org.apache.royale.html.supportClasses.DataGridColumnList") + columnContainerClass: ClassReference("org.apache.royale.html.DataGridButtonBar") + columnLayoutClass: ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout") + listAreaClass: ClassReference("org.apache.royale.html.beads.DataGridListArea") + +// DataGridButtonBar +// { +// IBeadModel: ClassReference("org.apache.royale.html.beads.models.ButtonBarModel") +// IBeadView: ClassReference("org.apache.royale.html.beads.ButtonBarView") +// IBeadController: ClassReference("org.apache.royale.html.beads.controllers.ListSingleSelectionMouseController") +// IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.ButtonBarLayout") +// IDataProviderItemRendererMapper: ClassReference("org.apache.royale.html.beads.TextItemRendererFactoryForArrayData") +// IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory") +// IItemRenderer: ClassReference("org.apache.royale.html.supportClasses.TextButtonItemRenderer") + +// border-style: none +// height: 40px +// min-height: 40px +// flex-grow: 0 +// } + +// DataGridColumnList { +// IBeadModel: ClassReference("org.apache.royale.html.beads.models.DataGridModel") +// 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("org.apache.royale.html.supportClasses.StringItemRenderer") +// IViewport: ClassReference("org.apache.royale.html.supportClasses.Viewport") +// IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel") +// border-style: none +// background-color: #FFFFFF +// } + +// DataGridListArea { +// background-color: #FFFFFF +// IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.HorizontalLayout") +// IViewport: ClassReference("org.apache.royale.html.supportClasses.ScrollingViewport") +// IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel") +// flex-grow: 1 +// } + +// DynamicDataGrid { +// 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.DataGridCollectionViewModel") +// IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.DataGridLayout") +// ColumnClass: ClassReference("org.apache.royale.html.supportClasses.DynamicDataGridColumnList") + +// background-color: #FFFFFF +// border: 1px solid #222222 +// } + +// DynamicDataGridColumnList { +// IBeadModel: ClassReference("org.apache.royale.html.beads.models.DataGridCollectionViewModel") +// 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.DataItemRendererFactoryForCollectionView") +// IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory") +// IItemRenderer: ClassReference("org.apache.royale.html.supportClasses.StringItemRenderer") +// IViewport: ClassReference("org.apache.royale.html.supportClasses.Viewport") +// IViewportModel: ClassReference("org.apache.royale.html.beads.models.ViewportModel") +// border-style: none +// background-color: #FFFFFF +// } \ No newline at end of file diff --git a/frameworks/projects/Jewel/src/main/sass/defaults.sass b/frameworks/projects/Jewel/src/main/sass/defaults.sass index d17b721..f848b27 100644 --- a/frameworks/projects/Jewel/src/main/sass/defaults.sass +++ b/frameworks/projects/Jewel/src/main/sass/defaults.sass @@ -30,6 +30,7 @@ @import "components/checkbox" @import "components/controlbar" @import "components/combobox" +@import "components/datagrid" @import "components/datechooser" @import "components/datefield" @import "components/divider"
