]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #1573
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 30 Apr 2008 08:33:39 +0000 (08:33 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 30 Apr 2008 08:33:39 +0000 (08:33 +0000)
svn changeset:4296/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/DateLocale.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/DateTimeService.java
src/com/itmill/toolkit/terminal/gwt/client/LocaleService.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IDateField.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ITextualDate.java
src/com/itmill/toolkit/terminal/gwt/client/util/DateLocale.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/util/Pattern.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/util/SimpleDateFormat.java [deleted file]
src/com/itmill/toolkit/terminal/gwt/client/util/SimpleDateParser.java [deleted file]

diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DateLocale.java b/src/com/itmill/toolkit/terminal/gwt/client/DateLocale.java
deleted file mode 100644 (file)
index 481f3ec..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* \r
-@ITMillApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.itmill.toolkit.terminal.gwt.client;\r
-\r
-public class DateLocale extends\r
-        com.itmill.toolkit.terminal.gwt.client.util.DateLocale {\r
-\r
-    private static String locale;\r
-\r
-    public DateLocale() {\r
-        locale = LocaleService.getDefaultLocale();\r
-    }\r
-\r
-    public static void setLocale(String l) {\r
-        if (LocaleService.getAvailableLocales().contains(locale)) {\r
-            locale = l;\r
-        } else {\r
-            // TODO redirect to console\r
-            System.out.println("Tried to use an unloaded locale \"" + locale\r
-                    + "\". Using default in stead (" + locale + ")");\r
-        }\r
-    }\r
-\r
-    public static String getAM() {\r
-        try {\r
-            return LocaleService.getAmPmStrings(locale)[0];\r
-        } catch (final LocaleNotLoadedException e) {\r
-            // TODO redirect to console\r
-            System.out.println("Tried to use an unloaded locale \"" + locale\r
-                    + "\".");\r
-            return "AM";\r
-        }\r
-    }\r
-\r
-    public static String getPM() {\r
-        try {\r
-            return LocaleService.getAmPmStrings(locale)[1];\r
-        } catch (final LocaleNotLoadedException e) {\r
-            // TODO redirect to console\r
-            System.out.println("Tried to use an unloaded locale \"" + locale\r
-                    + "\".");\r
-            return "PM";\r
-        }\r
-    }\r
-\r
-    public String[] getWEEKDAY_LONG() {\r
-        try {\r
-            return LocaleService.getDayNames(locale);\r
-        } catch (final LocaleNotLoadedException e) {\r
-            // TODO redirect to console\r
-            System.out.println("Tried to use an unloaded locale \"" + locale\r
-                    + "\".");\r
-            return null;\r
-        }\r
-    }\r
-\r
-    public String[] getWEEKDAY_SHORT() {\r
-        try {\r
-            return LocaleService.getShortDayNames(locale);\r
-        } catch (final LocaleNotLoadedException e) {\r
-            // TODO redirect to console\r
-            System.out.println("Tried to use an unloaded locale \"" + locale\r
-                    + "\".");\r
-            return null;\r
-        }\r
-    }\r
-}\r
index 1138412fcdeda94e801ceff9ca43e58efbce0985..aaa3ebc9b63198884322f1f3c796a0069ca6fc2a 100644 (file)
@@ -158,16 +158,6 @@ public class DateTimeService {
         return start;\r
     }\r
 \r
-    public String getDateFormat() {\r
-        try {\r
-            return LocaleService.getDateFormat(currentLocale);\r
-        } catch (final LocaleNotLoadedException e) {\r
-            // TODO redirect to console\r
-            System.out.println(e + ":" + e.getMessage());\r
-        }\r
-        return "M/d/yy";\r
-    }\r
-\r
     public static int getNumberOfDaysInMonth(Date date) {\r
         final int month = date.getMonth();\r
         if (month == 1 && true == isLeapYear(date)) {\r
index 6b74b2c186ccb7ea52f95ed1fcb03ab5b4f31b76..ed5a8432c66e66be9de106ba612a348c6fb8d048 100644 (file)
@@ -191,6 +191,7 @@ public class LocaleService {
         } else {\r
             throw new LocaleNotLoadedException(locale);\r
         }\r
+\r
     }\r
 \r
 }\r
index bd368810f05da80c307bcfbc683adb1bb61c6b29..c064164035e49d6a9ec01938fe6ab6c2382458b3 100644 (file)
@@ -23,13 +23,13 @@ public class IDateField extends FlowPanel implements Paintable {
 \r
     protected boolean immediate;\r
 \r
-    public static int RESOLUTION_YEAR = 0;\r
-    public static int RESOLUTION_MONTH = 1;\r
-    public static int RESOLUTION_DAY = 2;\r
-    public static int RESOLUTION_HOUR = 3;\r
-    public static int RESOLUTION_MIN = 4;\r
-    public static int RESOLUTION_SEC = 5;\r
-    public static int RESOLUTION_MSEC = 6;\r
+    public static final int RESOLUTION_YEAR = 0;\r
+    public static final int RESOLUTION_MONTH = 1;\r
+    public static final int RESOLUTION_DAY = 2;\r
+    public static final int RESOLUTION_HOUR = 3;\r
+    public static final int RESOLUTION_MIN = 4;\r
+    public static final int RESOLUTION_SEC = 5;\r
+    public static final int RESOLUTION_MSEC = 6;\r
 \r
     protected int currentResolution = RESOLUTION_YEAR;\r
 \r
index c4eade28d19d3d4a83d9e8cdfe66a523b511fdd3..69b31c9600f3082ad28982e85d96e777cfaea20c 100644 (file)
@@ -4,24 +4,23 @@
 \r
 package com.itmill.toolkit.terminal.gwt.client.ui;\r
 \r
+import com.google.gwt.i18n.client.DateTimeFormat;\r
 import com.google.gwt.user.client.Timer;\r
 import com.google.gwt.user.client.ui.ChangeListener;\r
 import com.google.gwt.user.client.ui.Widget;\r
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;\r
 import com.itmill.toolkit.terminal.gwt.client.ContainerResizedListener;\r
-import com.itmill.toolkit.terminal.gwt.client.DateLocale;\r
+import com.itmill.toolkit.terminal.gwt.client.LocaleNotLoadedException;\r
+import com.itmill.toolkit.terminal.gwt.client.LocaleService;\r
 import com.itmill.toolkit.terminal.gwt.client.Paintable;\r
 import com.itmill.toolkit.terminal.gwt.client.UIDL;\r
-import com.itmill.toolkit.terminal.gwt.client.util.SimpleDateFormat;\r
 \r
 public class ITextualDate extends IDateField implements Paintable,\r
         ChangeListener, ContainerResizedListener {\r
 \r
     private final ITextField text;\r
 \r
-    private SimpleDateFormat format;\r
-\r
-    private DateLocale dl;\r
+    private String formatStr;\r
 \r
     private String width;\r
 \r
@@ -37,62 +36,70 @@ public class ITextualDate extends IDateField implements Paintable,
     }\r
 \r
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
+        int origRes = currentResolution;\r
         super.updateFromUIDL(uidl, client);\r
+        if (origRes != currentResolution) {\r
+            // force recreating format string\r
+            formatStr = null;\r
+        }\r
         buildDate();\r
     }\r
 \r
-    public void buildDate() {\r
-        dl = new DateLocale();\r
-        DateLocale.setLocale(currentLocale);\r
+    protected String getFormatString() {\r
+        if (formatStr == null) {\r
+            if (currentResolution == RESOLUTION_YEAR) {\r
+                formatStr = "yyyy"; // force full year\r
+            } else {\r
+\r
+                try {\r
+                    String frmString = LocaleService\r
+                            .getDateFormat(currentLocale);\r
+                    frmString = cleanFormat(frmString);\r
+                    String delim = LocaleService\r
+                            .getClockDelimiter(currentLocale);\r
+\r
+                    if (currentResolution >= RESOLUTION_HOUR) {\r
+                        if (dts.isTwelveHourClock()) {\r
+                            frmString += " hh";\r
+                        } else {\r
+                            frmString += " HH";\r
+                        }\r
+                        if (currentResolution >= RESOLUTION_MIN) {\r
+                            frmString += ":mm";\r
+                            if (currentResolution >= RESOLUTION_SEC) {\r
+                                frmString += ":ss";\r
+                                if (currentResolution >= RESOLUTION_MSEC) {\r
+                                    frmString += ".SSS";\r
+                                }\r
+                            }\r
+                        }\r
+                        if (dts.isTwelveHourClock()) {\r
+                            frmString += " aaa";\r
+                        }\r
+\r
+                    }\r
 \r
-        com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_YEAR;\r
-        if (currentResolution == IDateField.RESOLUTION_MONTH) {\r
-            com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_MONTH;\r
-        } else if (currentResolution >= IDateField.RESOLUTION_DAY) {\r
-            com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_DAY;\r
+                    formatStr = frmString;\r
+                } catch (LocaleNotLoadedException e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
         }\r
+        return formatStr;\r
+    }\r
 \r
-        format = new SimpleDateFormat(cleanFormat(dts.getDateFormat()));\r
-        format.setLocale(dl);\r
+    /**\r
+     * \r
+     */\r
+    protected void buildDate() {\r
 \r
         // Create the initial text for the textfield\r
-        String dateText = "";\r
+        String dateText;\r
         if (date != null) {\r
-            dateText = format.format(date);\r
-\r
-            if (currentResolution >= IDateField.RESOLUTION_HOUR) {\r
-                com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_ALL;\r
-                int h = date.getHours();\r
-                if (h > 11 && dts.isTwelveHourClock()) {\r
-                    h -= 12;\r
-                }\r
-                final int m = currentResolution > IDateField.RESOLUTION_HOUR ? date\r
-                        .getMinutes()\r
-                        : 0;\r
-                dateText += " " + (h < 10 ? "0" + h : "" + h)\r
-                        + dts.getClockDelimeter() + (m < 10 ? "0" + m : "" + m);\r
-            }\r
-            if (currentResolution >= IDateField.RESOLUTION_SEC) {\r
-                final int s = date.getSeconds();\r
-                dateText += dts.getClockDelimeter()\r
-                        + (s < 10 ? "0" + s : "" + s);\r
-            }\r
-            if (currentResolution == IDateField.RESOLUTION_MSEC) {\r
-                final int ms = getMilliseconds();\r
-                String text = "" + ms;\r
-                if (ms < 10) {\r
-                    text = "00" + text;\r
-                } else if (ms < 100) {\r
-                    text = "0" + text;\r
-                }\r
-                dateText += "." + text;\r
-            }\r
-            if (currentResolution >= IDateField.RESOLUTION_HOUR\r
-                    && dts.isTwelveHourClock()) {\r
-                dateText += " "\r
-                        + (date.getHours() < 12 ? dts.getAmPmStrings()[0] : dts\r
-                                .getAmPmStrings()[1]);\r
-            }\r
+            dateText = DateTimeFormat.getFormat(getFormatString()).format(date);\r
+        } else {\r
+            dateText = "";\r
         }\r
 \r
         text.setText(dateText);\r
@@ -108,50 +115,9 @@ public class ITextualDate extends IDateField implements Paintable,
     public void onChange(Widget sender) {\r
         if (sender == text) {\r
             if (!text.getText().equals("")) {\r
-                com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_ALL;\r
-                if (currentResolution == IDateField.RESOLUTION_YEAR) {\r
-                    com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_YEAR;\r
-                } else if (currentResolution == IDateField.RESOLUTION_MONTH) {\r
-                    com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_MONTH;\r
-                } else if (currentResolution == IDateField.RESOLUTION_DAY) {\r
-                    com.itmill.toolkit.terminal.gwt.client.util.DateLocale.SUPPORTED_DF_TOKENS = com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKENS_RESOLUTION_DAY;\r
-                }\r
-\r
-                String f = cleanFormat(dts.getDateFormat());\r
-\r
-                if (currentResolution >= IDateField.RESOLUTION_HOUR) {\r
-                    f += " "\r
-                            + (dts.isTwelveHourClock() ? com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_HOUR_12\r
-                                    + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_HOUR_12\r
-                                    : com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_HOUR_24\r
-                                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_HOUR_24)\r
-                            + dts.getClockDelimeter()\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_MINUTE\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_MINUTE;\r
-                }\r
-                if (currentResolution >= IDateField.RESOLUTION_SEC) {\r
-                    f += dts.getClockDelimeter()\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_SECOND\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_SECOND;\r
-                }\r
-                if (currentResolution == IDateField.RESOLUTION_MSEC) {\r
-                    f += "."\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_MILLISECOND\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_MILLISECOND\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_MILLISECOND;\r
-                }\r
-                if (currentResolution >= IDateField.RESOLUTION_HOUR\r
-                        && dts.isTwelveHourClock()) {\r
-                    f += " "\r
-                            + com.itmill.toolkit.terminal.gwt.client.util.DateLocale.TOKEN_AM_PM;\r
-                }\r
-\r
-                format = new SimpleDateFormat(f);\r
-                DateLocale.setLocale(currentLocale);\r
-                format.setLocale(dl);\r
-\r
                 try {\r
-                    date = format.parse(text.getText());\r
+                    date = DateTimeFormat.getFormat(getFormatString()).parse(\r
+                            text.getText());\r
                 } catch (final Exception e) {\r
                     ApplicationConnection.getConsole().log(e.getMessage());\r
                     text.addStyleName(ITextField.CLASSNAME + "-error");\r
@@ -166,6 +132,7 @@ public class ITextualDate extends IDateField implements Paintable,
                 }\r
 \r
             } else {\r
+                ApplicationConnection.getConsole().log("jep jep");\r
                 date = null;\r
             }\r
 \r
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/util/DateLocale.java b/src/com/itmill/toolkit/terminal/gwt/client/util/DateLocale.java
deleted file mode 100644 (file)
index 43e40ad..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.util;\r
-\r
-import java.util.Arrays;\r
-import java.util.List;\r
-\r
-/**\r
- * Date locale support for the {@link SimpleDateParser}. You are encouraged to\r
- * extend this class and provide implementations for other locales.\r
- * \r
- * @author <a href="mailto:g.georgovassilis@gmail.com">George Georgovassilis</a>\r
- * \r
- */\r
-public class DateLocale {\r
-    public final static String TOKEN_DAY_OF_WEEK = "E";\r
-\r
-    public final static String TOKEN_DAY_OF_MONTH = "d";\r
-\r
-    public final static String TOKEN_MONTH = "M";\r
-\r
-    public final static String TOKEN_YEAR = "y";\r
-\r
-    public final static String TOKEN_HOUR_12 = "h";\r
-\r
-    public final static String TOKEN_HOUR_24 = "H";\r
-\r
-    public final static String TOKEN_MINUTE = "m";\r
-\r
-    public final static String TOKEN_SECOND = "s";\r
-\r
-    public final static String TOKEN_MILLISECOND = "S";\r
-\r
-    public final static String TOKEN_AM_PM = "a";\r
-\r
-    public final static String AM = "AM";\r
-\r
-    public final static String PM = "PM";\r
-\r
-    public static List SUPPORTED_DF_TOKENS = Arrays.asList(new String[] {\r
-            TOKEN_DAY_OF_WEEK, TOKEN_DAY_OF_MONTH, TOKEN_MONTH, TOKEN_YEAR,\r
-            TOKEN_HOUR_12, TOKEN_HOUR_24, TOKEN_MINUTE, TOKEN_SECOND,\r
-            TOKEN_AM_PM });\r
-\r
-    public static List TOKENS_RESOLUTION_ALL = Arrays.asList(new String[] {\r
-            TOKEN_DAY_OF_WEEK, TOKEN_DAY_OF_MONTH, TOKEN_MONTH, TOKEN_YEAR,\r
-            TOKEN_HOUR_12, TOKEN_HOUR_24, TOKEN_MINUTE, TOKEN_SECOND,\r
-            TOKEN_AM_PM });\r
-\r
-    public static List TOKENS_RESOLUTION_YEAR = Arrays\r
-            .asList(new String[] { TOKEN_YEAR });\r
-\r
-    public static List TOKENS_RESOLUTION_MONTH = Arrays.asList(new String[] {\r
-            TOKEN_YEAR, TOKEN_MONTH });\r
-\r
-    public static List TOKENS_RESOLUTION_DAY = Arrays.asList(new String[] {\r
-            TOKEN_YEAR, TOKEN_MONTH, TOKEN_DAY_OF_MONTH });\r
-\r
-    public String[] MONTH_LONG = { "January", "February", "March", "April",\r
-            "May", "June", "July", "August", "September", "October",\r
-            "November", "December" };\r
-\r
-    public String[] MONTH_SHORT = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",\r
-            "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };\r
-\r
-    public String[] WEEKDAY_LONG = { "Sunday", "Monday", "Tuesday",\r
-            "Wednesday", "Thursday", "Friday", "Saturday" };\r
-\r
-    public String[] WEEKDAY_SHORT = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri",\r
-            "Sat" };\r
-\r
-    public static String getAM() {\r
-        return AM;\r
-    }\r
-\r
-    public static String getPM() {\r
-        return PM;\r
-    }\r
-\r
-    public String[] getWEEKDAY_LONG() {\r
-        return WEEKDAY_LONG;\r
-    }\r
-\r
-    public String[] getWEEKDAY_SHORT() {\r
-        return WEEKDAY_SHORT;\r
-    }\r
-\r
-}\r
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/util/Pattern.java b/src/com/itmill/toolkit/terminal/gwt/client/util/Pattern.java
deleted file mode 100644 (file)
index 0e041e0..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/*\r
- * Copyright 2006 Robert Hanson <iamroberthanson AT gmail.com>\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *    http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
-package com.itmill.toolkit.terminal.gwt.client.util;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import com.google.gwt.core.client.JavaScriptObject;\r
-\r
-/**\r
- * <p>\r
- * Implementation of the {@link java.util.regex.Pattern} class with a wrapper\r
- * aroung the Javascript <a\r
- * href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Regular_Expressions">RegExp</a>\r
- * object. As most of the methods delegate to the JavaScript RegExp object,\r
- * certain differences in the declaration and behaviour of regular expressions\r
- * must be expected.\r
- * </p>\r
- * <p>\r
- * Please note that neither the {@link java.util.regex.Pattern#compile(String)}\r
- * method nor {@link java.util.regex.Matcher} instances are supported. For the\r
- * later, consider using {@link Pattern#match(String)}.\r
- * </p>\r
- * \r
- * @author George Georgovassilis\r
- * \r
- */\r
-public class Pattern {\r
-\r
-    /**\r
-     * Declares that regular expressions should be matched across line borders.\r
-     */\r
-    public final static int MULTILINE = 1;\r
-\r
-    /**\r
-     * Declares that characters are matched reglardless of case.\r
-     */\r
-    public final static int CASE_INSENSITIVE = 2;\r
-\r
-    private final JavaScriptObject regExp;\r
-\r
-    private static JavaScriptObject createExpression(String pattern, int flags) {\r
-        String sFlags = "";\r
-        if ((flags & MULTILINE) != 0) {\r
-            sFlags += "m";\r
-        }\r
-        if ((flags & CASE_INSENSITIVE) != 0) {\r
-            sFlags += "i";\r
-        }\r
-        return _createExpression(pattern, sFlags);\r
-    }\r
-\r
-    private static native JavaScriptObject _createExpression(String pattern,\r
-            String flags)/*-{\r
-                                                                        return new RegExp(pattern, flags);\r
-                                                                        }-*/;\r
-\r
-    private native void _match(String text, List matches)/*-{\r
-                                                                        var regExp = this.@com.itmill.toolkit.terminal.gwt.client.util.Pattern::regExp;\r
-                                                                        var result = text.match(regExp);\r
-                                                                        if (result == null) return;\r
-                                                                        for (var i=0;i<result.length;i++)\r
-                                                                        matches.@java.util.ArrayList::add(Ljava/lang/Object;)(result[i]);\r
-                                                                        }-*/;\r
-\r
-    /**\r
-     * Determines wether the specified regular expression is validated by the\r
-     * provided input.\r
-     * \r
-     * @param regex\r
-     *                Regular expression\r
-     * @param input\r
-     *                String to validate\r
-     * @return <code>true</code> if matched.\r
-     */\r
-    public static boolean matches(String regex, String input) {\r
-        return new Pattern(regex).matches(input);\r
-    }\r
-\r
-    /**\r
-     * Escape a provided string so that it will be interpreted as a literal in\r
-     * regular expressions. The current implementation does escape each\r
-     * character even if not neccessary, generating verbose literals.\r
-     * \r
-     * @param input\r
-     * @return\r
-     */\r
-    public static String quote(String input) {\r
-        String output = "";\r
-        for (int i = 0; i < input.length(); i++) {\r
-            output += "\\" + input.charAt(i);\r
-        }\r
-        return output;\r
-    }\r
-\r
-    /**\r
-     * Class constructor\r
-     * \r
-     * @param pattern\r
-     *                Regular expression\r
-     */\r
-    public Pattern(String pattern) {\r
-        this(pattern, 0);\r
-    }\r
-\r
-    /**\r
-     * Class constructor\r
-     * \r
-     * @param pattern\r
-     *                Regular expression\r
-     * @param flags\r
-     */\r
-    public Pattern(String pattern, int flags) {\r
-        regExp = createExpression(pattern, flags);\r
-    }\r
-\r
-    /**\r
-     * This method is borrowed from the JavaScript RegExp object. It parses a\r
-     * string and returns as an array any assignments to parenthesis groups in\r
-     * the pattern's regular expression\r
-     * \r
-     * @param text\r
-     * @return Array of strings following java's Pattern convention for groups:\r
-     *         Group 0 is the entire input string and the remaining groups are\r
-     *         the matched parenthesis. In case nothing was matched an empty\r
-     *         array is returned.\r
-     */\r
-    public String[] match(String text) {\r
-        final List matches = new ArrayList();\r
-        _match(text, matches);\r
-        final String arr[] = new String[matches.size()];\r
-        for (int i = 0; i < matches.size(); i++) {\r
-            arr[i] = matches.get(i).toString();\r
-        }\r
-        return arr;\r
-    }\r
-\r
-    /**\r
-     * Determines wether a provided text matches the regular expression\r
-     * \r
-     * @param text\r
-     * @return\r
-     */\r
-    public native boolean matches(String text)/*-{\r
-                                                                        var regExp = this.@com.itmill.toolkit.terminal.gwt.client.util.Pattern::regExp;\r
-                                                                        return regExp.test(text);\r
-                                                                        }-*/;\r
-\r
-    /**\r
-     * Returns the regular expression for this pattern\r
-     * \r
-     * @return\r
-     */\r
-    public native String pattern()/*-{\r
-                                                                        var regExp = this.@com.itmill.toolkit.terminal.gwt.client.util.Pattern::regExp;\r
-                                                                        return regExp.source;\r
-                                                                        }-*/;\r
-\r
-    private native void _split(String input, List results)/*-{\r
-                                                                        var regExp = this.@com.itmill.toolkit.terminal.gwt.client.util.Pattern::regExp;\r
-                                                                        var parts = input.split(regExp);\r
-                                                                        for (var i=0;i<parts.length;i++)\r
-                                                                        results.@java.util.ArrayList::add(Ljava/lang/Object;)(parts[i] );\r
-                                                                        }-*/;\r
-\r
-    /**\r
-     * Split an input string by the pattern's regular expression\r
-     * \r
-     * @param input\r
-     * @return Array of strings\r
-     */\r
-    public String[] split(String input) {\r
-        final List results = new ArrayList();\r
-        _split(input, results);\r
-        final String[] parts = new String[results.size()];\r
-        for (int i = 0; i < results.size(); i++) {\r
-            parts[i] = (String) results.get(i);\r
-        }\r
-        return parts;\r
-    }\r
-\r
-}\r
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/util/SimpleDateFormat.java b/src/com/itmill/toolkit/terminal/gwt/client/util/SimpleDateFormat.java
deleted file mode 100644 (file)
index 08a3ed2..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright 2006 Robert Hanson <iamroberthanson AT gmail.com>
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *    http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.itmill.toolkit.terminal.gwt.client.util;
-
-import java.util.Date;
-
-/**
- * <dl>
- * <dt><b>Title: </b>
- * <dd>SimpleDateFormat</dd>
- * <p>
- * <dt><b>Description: </b>
- * <dd>GWT does not implement any of the java.text package, so this class tries
- * to fill the void of the missing java.text.SimpleDateFormat class. This
- * version however only supports a subset of the date and time patterns
- * supported by its java.text counterpart. The pattern symbols supported by this
- * class are:
- * <dl>
- * <dt><b>E</b></dt>
- * <dd>Day in a week</dd>
- * <dt><b>d</b></dt>
- * <dd>Day of the month</dd>
- * <dt><b>y</b></dt>
- * <dd>Year</dd>
- * <dt><b>M</b></dt>
- * <dd>Month January, Jan, 01, 1</dd>
- * <dt><b>H</b></dt>
- * <dd>Hour in 24 hour format (0-23)</dd>
- * <dt><b>h</b></dt>
- * <dd>Hour in 12 hour format (1-12)</dd>
- * <dt><b>m</b></dt>
- * <dd>Minute of the hour </dd>
- * <dt><b>s</b></dt>
- * <dd>Seconds of the minute</dd>
- * <dt><b>a</b></dt>
- * <dd>am/pm</dd>
- * </dl>
- * All characters that are not recognised as a date format character are
- * translated literally into the output string. <br/> </dd>
- * <p>
- * </dl>
- * <p>
- * A simple date parsing facility has also been implemented resembling the java
- * prototype. You can currently parse most numeric patterns but no temporal
- * literals (such as day or month names).
- * </p>
- * 
- * @author <a href="mailto:jasone@greenrivercomputing.com">Jason Essington</a>
- * @author <a href="mailto:g.georgovassilis@gmail.com">George Georgovassilis</a>
- * @version $Revision: 0.0 $
- */
-public class SimpleDateFormat {
-    private final String format;
-    private DateLocale locale = new DateLocale();
-
-    /**
-     * Gets the support locale for formatting and parsing dates
-     * 
-     * @return
-     */
-    public DateLocale getLocale() {
-        return locale;
-    }
-
-    public void setLocale(DateLocale locale) {
-        this.locale = locale;
-    }
-
-    public SimpleDateFormat(String pattern) {
-        format = pattern;
-    }
-
-    public String format(Date date) {
-        String f = "";
-        if (format != null && format.length() > 0) {
-            String lastTokenType = null;
-            String currentToken = "";
-            for (int i = 0; i < format.length(); i++) {
-                final String thisChar = format.substring(i, i + 1);
-                final String currentTokenType = DateLocale.SUPPORTED_DF_TOKENS
-                        .contains(thisChar) ? thisChar : "";
-                if (currentTokenType.equals(lastTokenType) || i == 0) {
-                    currentToken += thisChar;
-                    lastTokenType = currentTokenType;
-                } else {
-                    if ("".equals(lastTokenType)) {
-                        f += currentToken;
-                    } else {
-                        f += handleToken(currentToken, date);
-                    }
-                    currentToken = thisChar;
-                    lastTokenType = currentTokenType;
-                }
-            }
-            if ("".equals(lastTokenType)) {
-                f += currentToken;
-            } else {
-                f += handleToken(currentToken, date);
-            }
-        }
-        return f;
-    }
-
-    /**
-     * takes a date format string and returns the formatted portion of the date.
-     * For instance if the token is MMMM then the full month name is returned.
-     * 
-     * @param token
-     *                date format token
-     * @param date
-     *                date to format
-     * @return formatted portion of the date
-     */
-    private String handleToken(String token, Date date) {
-        String response = token;
-        final String tc = token.substring(0, 1);
-        if (DateLocale.TOKEN_DAY_OF_WEEK.equals(tc)) {
-            if (token.length() > 3) {
-                response = locale.getWEEKDAY_LONG()[date.getDay()];
-            } else {
-                response = locale.getWEEKDAY_SHORT()[date.getDay()];
-            }
-        } else if (DateLocale.TOKEN_DAY_OF_MONTH.equals(tc)) {
-            if (token.length() == 1) {
-                response = Integer.toString(date.getDate());
-            } else {
-                response = twoCharDateField(date.getDate());
-            }
-        } else if (DateLocale.TOKEN_MONTH.equals(tc)) {
-            switch (token.length()) {
-            case 1:
-                response = Integer.toString(date.getMonth() + 1);
-                break;
-            case 2:
-                response = twoCharDateField(date.getMonth() + 1);
-                break;
-            case 3:
-                response = locale.MONTH_SHORT[date.getMonth()];
-                break;
-            default:
-                response = locale.MONTH_LONG[date.getMonth()];
-                break;
-            }
-        } else if (DateLocale.TOKEN_YEAR.equals(tc)) {
-            if (token.length() >= 2) {
-                response = Integer.toString(date.getYear() + 1900);
-            } else {
-                response = twoCharDateField(date.getYear());
-            }
-        } else if (DateLocale.TOKEN_HOUR_12.equals(tc)) {
-            int h = date.getHours();
-            if (h == 0) {
-                h = 12;
-            } else if (h > 12) {
-                h -= 12;
-            }
-            // if (token.length() > 1)
-            response = twoCharDateField(h);
-            // else
-            // response = Integer.toString(h);
-        } else if (DateLocale.TOKEN_HOUR_24.equals(tc)) {
-            // if (token.length() > 1)
-            response = twoCharDateField(date.getHours());
-            // else
-            // response = Integer.toString(date.getHours());
-        } else if (DateLocale.TOKEN_MINUTE.equals(tc)) {
-            // if (token.length() > 1)
-            response = twoCharDateField(date.getMinutes());
-            // else
-            // response = Integer.toString(date.getMinutes());
-        } else if (DateLocale.TOKEN_SECOND.equals(tc)) {
-            // if (token.length() > 1)
-            response = twoCharDateField(date.getSeconds());
-            // else
-            // response = Integer.toString(date.getSeconds());
-        } else if (DateLocale.TOKEN_AM_PM.equals(tc)) {
-            final int hour = date.getHours();
-            if (hour > 11) {
-                response = DateLocale.getPM();
-            } else {
-                response = DateLocale.getAM();
-            }
-        }
-        return response;
-    }
-
-    /**
-     * This is basically just a sneaky way to guarantee that our 1 or 2 digit
-     * numbers come out as a 2 character string. we add an arbitrary number
-     * larger than 100, convert this new number to a string, then take the right
-     * most 2 characters.
-     * 
-     * @param num
-     * @return
-     */
-    private String twoCharDateField(int num) {
-        String res = Integer.toString(num + 1900);
-        res = res.substring(res.length() - 2);
-        return res;
-    }
-
-    private static Date newDate(long time) {
-        return new Date(time);
-    }
-
-    /**
-     * Parses text and returns the corresponding date object.
-     * 
-     * @param source
-     * @return java.util.Date
-     */
-    public Date parse(String source) {
-        return SimpleDateParser.parse(source, format);
-    };
-
-}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/util/SimpleDateParser.java b/src/com/itmill/toolkit/terminal/gwt/client/util/SimpleDateParser.java
deleted file mode 100644 (file)
index a0543e7..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-package com.itmill.toolkit.terminal.gwt.client.util;\r
-\r
-import java.util.Date;\r
-\r
-/**\r
- * This is a simple regular expression based parser for date notations. While\r
- * our aim is to fully support in the future the JDK date parser, currently only\r
- * numeric notations and literals are supported such as\r
- * <code>dd/MM/yyyy HH:mm:ss.SSSS</code>. Each entity is parsed with the same\r
- * number of digits, i.e. for <code>dd</code> two digits will be parsed while\r
- * for <code>d</code> only one will be parsed.\r
- * \r
- * @author <a href="mailto:g.georgovassilis@gmail.com">George Georgovassilis</a>\r
- * \r
- */\r
-\r
-public class SimpleDateParser {\r
-\r
-    private final static String DAY_IN_MONTH = "d";\r
-\r
-    private final static String MONTH = "M";\r
-\r
-    private final static String YEAR = "y";\r
-\r
-    private final static String LITERAL = "\\";\r
-\r
-    private final static int DATE_PATTERN = 0;\r
-\r
-    private final static int REGEX_PATTERN = 1;\r
-\r
-    private final static int COMPONENT = 2;\r
-\r
-    private final static int REGEX = 0;\r
-\r
-    private final static int INSTRUCTION = 1;\r
-\r
-    private final static String[] TOKENS[] = {\r
-            { "SSSS", "(\\d\\d\\d\\d)", DateLocale.TOKEN_MILLISECOND },\r
-            { "SSS", "(\\d\\d\\d)", DateLocale.TOKEN_MILLISECOND },\r
-            { "SS", "(\\d\\d)", DateLocale.TOKEN_MILLISECOND },\r
-            { "S", "(\\d)", DateLocale.TOKEN_MILLISECOND },\r
-            { "ss", "(\\d\\d)", DateLocale.TOKEN_SECOND },\r
-            { "s", "(\\d\\d)", DateLocale.TOKEN_SECOND },\r
-            { "mm", "(\\d\\d)", DateLocale.TOKEN_MINUTE },\r
-            { "m", "(\\d\\d)", DateLocale.TOKEN_MINUTE },\r
-            { "HH", "(\\d\\d)", DateLocale.TOKEN_HOUR_24 },\r
-            { "H", "(\\d{1,2})", DateLocale.TOKEN_HOUR_24 },\r
-            { "hh", "(\\d\\d)", DateLocale.TOKEN_HOUR_12 },\r
-            { "h", "(\\d{1,2})", DateLocale.TOKEN_HOUR_12 },\r
-            { "dd", "(\\d\\d)", DateLocale.TOKEN_DAY_OF_MONTH },\r
-            { "d", "(\\d{1,2})", DateLocale.TOKEN_DAY_OF_MONTH },\r
-            { "MM", "(\\d\\d)", DateLocale.TOKEN_MONTH },\r
-            { "M", "(\\d{1,2})", DateLocale.TOKEN_MONTH },\r
-            { "yyyy", "(\\d\\d\\d\\d)", DateLocale.TOKEN_YEAR },\r
-            { "yyy", "(\\d\\d\\d\\d)", DateLocale.TOKEN_YEAR },\r
-            { "yy", "(\\d\\d\\d\\d)", DateLocale.TOKEN_YEAR },\r
-            { "y", "(\\d{1,2})", DateLocale.TOKEN_YEAR },\r
-            { "a", "(\\S{1,4})", DateLocale.TOKEN_AM_PM } };\r
-\r
-    private final Pattern regularExpression;\r
-\r
-    private String instructions = "";\r
-\r
-    private static void _parse(String format, String[] args) {\r
-        if (format.length() == 0) {\r
-            return;\r
-        }\r
-        if (format.startsWith("'")) {\r
-            format = format.substring(1);\r
-            final int end = format.indexOf("'");\r
-            if (end == -1) {\r
-                throw new IllegalArgumentException("Unmatched single quotes.");\r
-            }\r
-            args[REGEX] += Pattern.quote(format.substring(0, end));\r
-            format = format.substring(end + 1);\r
-        }\r
-        for (int i = 0; i < TOKENS.length; i++) {\r
-            final String[] row = TOKENS[i];\r
-            final String datePattern = row[DATE_PATTERN];\r
-            if (!format.startsWith(datePattern)) {\r
-                continue;\r
-            }\r
-            format = format.substring(datePattern.length());\r
-            args[REGEX] += row[REGEX_PATTERN];\r
-            args[INSTRUCTION] += row[COMPONENT];\r
-            _parse(format, args);\r
-            return;\r
-        }\r
-        args[REGEX] += Pattern.quote("" + format.charAt(0));\r
-        format = format.substring(1);\r
-        _parse(format, args);\r
-    }\r
-\r
-    private static void load(Date date, String text, String component,\r
-            String input, Pattern regex) {\r
-        if (component.equals(DateLocale.TOKEN_MILLISECOND)) {\r
-            date.setTime(date.getTime() / 1000 * 1000 + Integer.parseInt(text));\r
-        }\r
-\r
-        if (component.equals(DateLocale.TOKEN_SECOND)) {\r
-            date.setSeconds(Integer.parseInt(text));\r
-        }\r
-\r
-        if (component.equals(DateLocale.TOKEN_MINUTE)) {\r
-            date.setMinutes(Integer.parseInt(text));\r
-        }\r
-\r
-        if (component.equals(DateLocale.TOKEN_HOUR_24)) {\r
-            date.setHours(Integer.parseInt(text));\r
-        }\r
-\r
-        if (component.equals(DateLocale.TOKEN_HOUR_12)) {\r
-            int h = Integer.parseInt(text);\r
-            final String token = com.itmill.toolkit.terminal.gwt.client.DateLocale\r
-                    .getPM();\r
-            final String which = input.substring(input.length()\r
-                    - token.length()); // Assumes\r
-            // both\r
-            // AM\r
-            // and\r
-            // PM\r
-            // tokens\r
-            // have\r
-            // same\r
-            // length\r
-            if (which.equalsIgnoreCase(token)) {\r
-                h += 12;\r
-            }\r
-            date.setHours(h);\r
-        }\r
-\r
-        if (component.equals(DateLocale.TOKEN_DAY_OF_MONTH)) {\r
-            date.setDate(Integer.parseInt(text));\r
-        }\r
-        if (component.equals(DateLocale.TOKEN_MONTH)) {\r
-            date.setMonth(Integer.parseInt(text) - 1);\r
-        }\r
-        if (component.equals(DateLocale.TOKEN_YEAR)) {\r
-            // TODO: fix for short patterns\r
-            date.setYear(Integer.parseInt(text) - 1900);\r
-        }\r
-\r
-    }\r
-\r
-    public SimpleDateParser(String format) {\r
-        final String[] args = new String[] { "", "" };\r
-        _parse(format, args);\r
-        regularExpression = new Pattern(args[REGEX]);\r
-        instructions = args[INSTRUCTION];\r
-    }\r
-\r
-    public Date parse(String input) {\r
-        final Date date = new Date(0, 0, 0, 0, 0, 0);\r
-        final String matches[] = regularExpression.match(input);\r
-        if (matches == null) {\r
-            throw new IllegalArgumentException(input + " does not match "\r
-                    + regularExpression.pattern());\r
-        }\r
-        if (matches.length - 1 != instructions.length()) {\r
-            throw new IllegalArgumentException("Different group count - "\r
-                    + input + " does not match " + regularExpression.pattern());\r
-        }\r
-        for (int group = 0; group < instructions.length(); group++) {\r
-            final String match = matches[group + 1];\r
-            load(date, match, "" + instructions.charAt(group), input,\r
-                    regularExpression);\r
-        }\r
-        return date;\r
-    }\r
-\r
-    public static Date parse(String input, String pattern) {\r
-        return new SimpleDateParser(pattern).parse(input);\r
-    }\r
-}\r