This is an automated email from the ASF dual-hosted git repository.
harbs pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 25823c3 Fixed StringDateFormatter
25823c3 is described below
commit 25823c376a68da2553fa1a2c25b30973bd10b2a1
Author: Harbs <[email protected]>
AuthorDate: Wed Jan 23 00:09:29 2019 +0200
Fixed StringDateFormatter
Added dateFormat to Jewel DateField
---
.../src/main/royale/DateComponentsPlayGround.mxml | 4 +--
.../projects/Core/src/main/royale/CoreClasses.as | 1 +
.../org/apache/royale/core/IDateFormatter.as | 35 ++++++++++++++++++++++
.../royale/html/accessories/SimpleDateFormatter.as | 3 +-
.../royale/html/accessories/StringDateFormatter.as | 8 +++--
.../royale/org/apache/royale/jewel/DateField.as | 19 ++++++++++++
.../royale/jewel/beads/views/DateFieldView.as | 10 +++++++
7 files changed, 74 insertions(+), 6 deletions(-)
diff --git
a/examples/royale/TourDeJewel/src/main/royale/DateComponentsPlayGround.mxml
b/examples/royale/TourDeJewel/src/main/royale/DateComponentsPlayGround.mxml
index a79b99e..77bb1f5 100644
--- a/examples/royale/TourDeJewel/src/main/royale/DateComponentsPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/DateComponentsPlayGround.mxml
@@ -76,7 +76,7 @@ limitations under the License.
private function configDateFieldToES():void
{
- dateFieldES.addBead(new DateFormatDDMMYYYY());
// this one removes the default IFormatter
+ dateFieldES.dateFormat = "DD/MM/YYYY";
dateFieldES.model.dayNames =
['D','L','M','X','J','V','S'];
dateFieldES.model.monthNames =
["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Deciembre"];
@@ -117,7 +117,7 @@ limitations under the License.
<html:H3 text="Jewel DateField (Default)"/>
<j:HGroup gap="3">
- <j:DateField id="dateFieldDefault"
change="dateFieldDefaultChanged()">
+ <j:DateField id="dateFieldDefault"
change="dateFieldDefaultChanged()" dateFormat="MM/DD/YYYY">
<j:beads>
<j:DateFieldTextPrompt
prompt="MM/DD/YYYY"/>
</j:beads>
diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as
b/frameworks/projects/Core/src/main/royale/CoreClasses.as
index 21361e9..9802c43 100644
--- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
@@ -103,6 +103,7 @@ import org.apache.royale.events.ItemRemovedEvent;
ItemRemovedEvent;
import org.apache.royale.core.IDocument; IDocument;
import org.apache.royale.core.IDragInitiator; IDragInitiator;
import org.apache.royale.core.IFormatter; IFormatter;
+ import org.apache.royale.core.IDateFormatter; IDateFormatter;
import org.apache.royale.core.IDateControlConfigBead;
IDateControlConfigBead;
import org.apache.royale.core.IImage; IImage;
import org.apache.royale.core.IImageModel; IImageModel;
diff --git
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IDateFormatter.as
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IDateFormatter.as
new file mode 100644
index 0000000..5dc49cf
--- /dev/null
+++
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IDateFormatter.as
@@ -0,0 +1,35 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.core
+{
+ /**
+ * The IDateFormatter interface should be implemented by any bead that
+ * provides formatting of a date.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.6
+ */
+ public interface IDateFormatter
+ {
+ function get dateFormat():String;
+ function set dateFormat(value:String):void;
+ }
+}
\ No newline at end of file
diff --git
a/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/SimpleDateFormatter.as
b/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/SimpleDateFormatter.as
index b2d7656..24d087a 100644
---
a/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/SimpleDateFormatter.as
+++
b/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/SimpleDateFormatter.as
@@ -19,6 +19,7 @@
package org.apache.royale.html.accessories
{
import org.apache.royale.core.FormatBase;
+ import org.apache.royale.core.IDateFormatter;
/**
* The DateFormatter class formats the display of a DateField using a
dateFormat.
@@ -30,7 +31,7 @@ package org.apache.royale.html.accessories
* @playerversion AIR 2.6
* @productversion Royale 0.9.6
*/
- public class SimpleDateFormatter extends FormatBase
+ public class SimpleDateFormatter extends FormatBase implements
IDateFormatter
{
/**
* constructor.
diff --git
a/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/StringDateFormatter.as
b/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/StringDateFormatter.as
index 2ce8c15..b6bbacc 100644
---
a/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/StringDateFormatter.as
+++
b/frameworks/projects/Formatters/src/main/royale/org/apache/royale/html/accessories/StringDateFormatter.as
@@ -52,7 +52,8 @@ package org.apache.royale.html.accessories
for (var i:int = 0; i < length; i++) {
if(!str)
break;
- switch (tokens[i]) {
+ var token:String = tokens[i];
+ switch (token) {
case "YYYY":
part = str.substr(0,4);
str = str.substr(4);
@@ -95,8 +96,9 @@ package org.apache.royale.html.accessories
break;
}
// if there's no more left, str is empty and no separator
- if (str && i <= length - 2) {
- result += _separator;
+ if (i <= length - 2) {
+ if(token.length == part.length)
+ result += _separator;
}
}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as
index 8bb8eb5..744faed 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as
@@ -100,5 +100,24 @@ package org.apache.royale.jewel
{
IDateChooserModel(model).selectedDate = value;
}
+ private var _dateFormat:String;
+
+ /**
+ * A Date format using D for Days, M for Months and Y for Year
i.e. DD/MM/YYYY
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.6
+ */
+ public function get dateFormat():String
+ {
+ return _dateFormat;
+ }
+
+ public function set dateFormat(value:String):void
+ {
+ _dateFormat = value.toUpperCase();
+ }
}
}
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as
index 1ba239b..a37635e 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateFieldView.as
@@ -46,6 +46,8 @@ package org.apache.royale.jewel.beads.views
import org.apache.royale.jewel.Table;
import org.apache.royale.jewel.beads.views.DateChooserView;
import org.apache.royale.utils.UIUtils;
+ import org.apache.royale.core.IDateFormatter;
+ import org.apache.royale.jewel.DateField;
/**
* The DateFieldView class is a bead for DateField that creates the
@@ -150,6 +152,10 @@ package org.apache.royale.jewel.beads.views
private var model:IDateChooserModel;
+ /**
+ * @royaleignorecoercion org.apache.royale.core.IDateFormatter
+ * @royaleignorecoercion org.apache.royale.jewel.DateField
+ */
private function handleInitComplete(event:Event):void
{
model = _strand.getBeadByType(IDateChooserModel) as
IDateChooserModel;
@@ -162,6 +168,10 @@ package org.apache.royale.jewel.beads.views
_textInput.addBead(maxNumberCharacters);
var formatter:IFormatter =
_strand.getBeadByType(IFormatter) as IFormatter;
+ var dateFormat:String = (_strand as
DateField).dateFormat;
+ if(dateFormat)
+ (formatter as IDateFormatter).dateFormat =
dateFormat;
+
mask.formatter = formatter;
}