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/07/03 20:45:22 UTC
[royale-asjs] 03/05: fix abstractions around DateField/DateChooser
so dropdown can be replaced
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 37b0dbeae43c25c07baef0597f9f58d01756d0c3
Author: Alex Harui <ah...@apache.org>
AuthorDate: Tue Jul 3 13:44:10 2018 -0700
fix abstractions around DateField/DateChooser so dropdown can be replaced
---
.../Basic/src/main/resources/basic-manifest.xml | 1 +
.../projects/Basic/src/main/resources/defaults.css | 11 +++++
.../org/apache/royale/html/beads/DateFieldView.as | 15 ++++---
.../beads/controllers/DateFieldMouseController.as | 2 +-
.../html/supportClasses/DateFieldDateChooser.as | 48 ++++++++++++++++++++++
.../royale/html/supportClasses/IDateChooser.as | 36 ++++++++++++++++
6 files changed, 104 insertions(+), 9 deletions(-)
diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index 6d00cc9..f7da4ce 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -186,6 +186,7 @@
<component id="DateChooserList" class="org.apache.royale.html.supportClasses.DateChooserList" />
<component id="DateChooserHeader" class="org.apache.royale.html.supportClasses.DateChooserHeader" />
<component id="DateField" class="org.apache.royale.html.DateField"/>
+ <component id="DateFieldDateChooser" class="org.apache.royale.html.supportClasses.DateFieldDateChooser"/>
<component id="VerticalColumnLayout" class="org.apache.royale.html.beads.layouts.VerticalColumnLayout" />
<component id="ToolTipBead" class="org.apache.royale.html.accessories.ToolTipBead" />
diff --git a/frameworks/projects/Basic/src/main/resources/defaults.css b/frameworks/projects/Basic/src/main/resources/defaults.css
index 901f1f0..d60a26e 100644
--- a/frameworks/projects/Basic/src/main/resources/defaults.css
+++ b/frameworks/projects/Basic/src/main/resources/defaults.css
@@ -221,6 +221,16 @@ DateChooser {
height: 240px;
}
+DateFieldDateChooser {
+ IBeadView: ClassReference("org.apache.royale.html.beads.DateChooserView");
+ IBeadModel: ClassReference("org.apache.royale.html.beads.models.DateChooserModel");
+ IBeadLayout: ClassReference("org.apache.royale.html.beads.layouts.VerticalFlexLayout");
+ IBeadController: ClassReference("org.apache.royale.html.beads.controllers.DateChooserMouseController");
+ width: 210px;
+ height: 230px;
+}
+
+
DateChooserList {
IDataProviderItemRendererMapper: ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData");
IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory");
@@ -272,6 +282,7 @@ DateField {
IBeadModel: ClassReference("org.apache.royale.html.beads.models.DateChooserModel");
IBeadController: ClassReference("org.apache.royale.html.beads.controllers.DateFieldMouseController");
IFormatBead: ClassReference("org.apache.royale.html.accessories.DateFormatYYYYMMDD");
+ IPopUp: ClassReference("org.apache.royale.html.supportClasses.DateFieldDateChooser");
}
/** DividedContainer */
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
index 7148dbf..069df0c 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
@@ -32,8 +32,9 @@ package org.apache.royale.html.beads
import org.apache.royale.events.IEventDispatcher;
import org.apache.royale.utils.UIUtils;
import org.apache.royale.utils.PointUtils;
+ import org.apache.royale.utils.loadBeadFromValuesManager;
import org.apache.royale.geom.Point;
- import org.apache.royale.html.DateChooser;
+ import org.apache.royale.html.supportClasses.IDateChooser;
import org.apache.royale.html.TextButton;
import org.apache.royale.html.TextInput;
COMPILE::SWF
@@ -157,7 +158,7 @@ package org.apache.royale.html.beads
_textInput.text = formatter.formattedString;
}
- private var _popUp:DateChooser;
+ private var _popUp:IDateChooser;
/**
* The pop-up component that holds the selection list.
@@ -167,7 +168,7 @@ package org.apache.royale.html.beads
* @playerversion AIR 2.6
* @productversion Royale 0.0
*/
- public function get popUp():DateChooser
+ public function get popUp():IDateChooser
{
return _popUp;
}
@@ -194,11 +195,9 @@ package org.apache.royale.html.beads
if (value)
{
if (!_popUp)
- {
- _popUp = new DateChooser();
- _popUp.width = 210;
- _popUp.height = 230;
- }
+ {
+ _popUp = ValuesManager.valuesImpl.newInstance(_strand, "iPopUp") as IDateChooser;
+ }
var model:IDateChooserModel = _strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
_popUp.selectedDate = model.selectedDate;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
index 810dd3a..e9967f8 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
@@ -69,7 +69,7 @@ package org.apache.royale.html.beads.controllers
_strand = value;
var viewBead:DateFieldView = _strand.getBeadByType(DateFieldView) as DateFieldView;
- IEventDispatcher(viewBead.menuButton).addEventListener("click", clickHandler);
+ IEventDispatcher(_strand).addEventListener("click", clickHandler);
}
/**
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DateFieldDateChooser.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DateFieldDateChooser.as
new file mode 100644
index 0000000..b8e2bc5
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DateFieldDateChooser.as
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.html.supportClasses
+{
+ import org.apache.royale.core.IPopUp;
+ import org.apache.royale.html.DateChooser;
+
+ /**
+ * The DateFieldDateChooser class is the DateChooser class used internally
+ * by DateField as the dropdown/popup.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public class DateFieldDateChooser extends DateChooser implements IPopUp, IDateChooser
+ {
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.0
+ */
+ public function DateFieldDateChooser()
+ {
+ super();
+ }
+ }
+}
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/IDateChooser.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/IDateChooser.as
new file mode 100644
index 0000000..25cc614
--- /dev/null
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/IDateChooser.as
@@ -0,0 +1,36 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.html.supportClasses
+{
+ import org.apache.royale.core.IUIBase;
+
+ public interface IDateChooser extends IUIBase
+ {
+ /**
+ * The selectedDate
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9
+ */
+ function get selectedDate():Date;
+ function set selectedDate(value:Date):void;
+ }
+}
\ No newline at end of file