summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDeepanshu Gupta <deepanshu@google.com>2013-10-17 10:06:16 -0700
committerThe Android Automerger <android-build@google.com>2013-10-23 14:19:39 -0700
commit9921d9b318475d7610bd0b0e6f11969863447210 (patch)
tree2f90c7cce89a2c92e5b92dfd5d219901be07c9a9
parentc0ba61337b80ebedd6b90286a5d1cb2b134e69a2 (diff)
downloadbase-9921d9b318475d7610bd0b0e6f11969863447210.tar.gz
Layoutlib: Add DateIntervalFormat_Delegate required by CalendarView
Change-Id: Ica79267a4eb231db833cb0232cfacf419fe73de3
-rw-r--r--tools/layoutlib/bridge/src/libcore/icu/DateIntervalFormat_Delegate.java70
-rw-r--r--tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java1
2 files changed, 71 insertions, 0 deletions
diff --git a/tools/layoutlib/bridge/src/libcore/icu/DateIntervalFormat_Delegate.java b/tools/layoutlib/bridge/src/libcore/icu/DateIntervalFormat_Delegate.java
new file mode 100644
index 000000000000..a773d93602d9
--- /dev/null
+++ b/tools/layoutlib/bridge/src/libcore/icu/DateIntervalFormat_Delegate.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * 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 libcore.icu;
+
+import java.text.FieldPosition;
+
+import com.android.ide.common.rendering.api.LayoutLog;
+import com.android.layoutlib.bridge.Bridge;
+import com.android.layoutlib.bridge.impl.DelegateManager;
+import com.ibm.icu.text.DateIntervalFormat;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+public class DateIntervalFormat_Delegate {
+
+ // ---- delegate manager ----
+ private static final DelegateManager<DateIntervalFormat_Delegate> sManager =
+ new DelegateManager<DateIntervalFormat_Delegate>(DateIntervalFormat_Delegate.class);
+
+ // ---- delegate data ----
+ private DateIntervalFormat mFormat;
+
+
+ // ---- native methods ----
+
+ /*package*/static String formatDateInterval(long address, long fromDate, long toDate) {
+ DateIntervalFormat_Delegate delegate = sManager.getDelegate((int)address);
+ if (delegate == null) {
+ Bridge.getLog().error(LayoutLog.TAG_BROKEN,
+ "Unable for find native DateIntervalFormat", null);
+ return null;
+ }
+ DateInterval interval = new DateInterval(fromDate, toDate);
+ StringBuffer sb = new StringBuffer();
+ FieldPosition pos = new FieldPosition(0);
+ delegate.mFormat.format(interval, sb, pos);
+ return sb.toString();
+ }
+
+ /*package*/ static long createDateIntervalFormat(String skeleton, String localeName,
+ String tzName) {
+ TimeZone prevDefaultTz = TimeZone.getDefault();
+ TimeZone.setDefault(TimeZone.getTimeZone(tzName));
+ DateIntervalFormat_Delegate newDelegate = new DateIntervalFormat_Delegate();
+ newDelegate.mFormat =
+ DateIntervalFormat.getInstance(skeleton, new ULocale(localeName));
+ TimeZone.setDefault(prevDefaultTz);
+ return sManager.addNewDelegate(newDelegate);
+ }
+
+ /*package*/ static void destroyDateIntervalFormat(long address) {
+ sManager.removeJavaReferenceFor((int)address);
+ }
+
+}
diff --git a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
index 4cada5d675f6..fd071910e840 100644
--- a/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
+++ b/tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java
@@ -187,6 +187,7 @@ public final class CreateInfo implements ICreateInfo {
"android.text.AndroidBidi",
"android.util.FloatMath",
"android.view.Display",
+ "libcore.icu.DateIntervalFormat",
"libcore.icu.ICU",
};