Loading tools/layoutlib/bridge/src/android/widget/SimpleMonthView_Delegate.javadeleted 100644 → 0 +0 −99 Original line number Diff line number Diff line /* * Copyright (C) 2015 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 android.widget; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import android.annotation.NonNull; import android.annotation.Nullable; import android.icu.text.SimpleDateFormat; import android.text.format.DateFormat; import java.util.Calendar; import java.util.Locale; /** * Delegate that provides implementation for some methods in {@link SimpleMonthView}. * <p/> * Through the layoutlib_create tool, selected methods of SimpleMonthView have been replaced by * calls to methods of the same name in this delegate class. * <p/> * The main purpose of this class is to use {@link android.icu.text.SimpleDateFormat} instead of * {@link java.text.SimpleDateFormat}. */ public class SimpleMonthView_Delegate { private static final String DEFAULT_TITLE_FORMAT = "MMMMy"; private static final String DAY_OF_WEEK_FORMAT = "EEEEE"; // Maintain a cache of the last view used, so that the formatters can be reused. @Nullable private static SimpleMonthView sLastView; @Nullable private static SimpleMonthView_Delegate sLastDelegate; private SimpleDateFormat mTitleFormatter; private SimpleDateFormat mDayOfWeekFormatter; private Locale locale; @LayoutlibDelegate /*package*/ static CharSequence getTitle(SimpleMonthView view) { if (view.mTitle == null) { SimpleMonthView_Delegate delegate = getDelegate(view); if (delegate.mTitleFormatter == null) { delegate.mTitleFormatter = new SimpleDateFormat(DateFormat.getBestDateTimePattern( getLocale(delegate, view), DEFAULT_TITLE_FORMAT)); } view.mTitle = delegate.mTitleFormatter.format(view.mCalendar.getTime()); } return view.mTitle; } @LayoutlibDelegate /*package*/ static String getDayOfWeekLabel(SimpleMonthView view, int dayOfWeek) { view.mDayOfWeekLabelCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek); SimpleMonthView_Delegate delegate = getDelegate(view); if (delegate.mDayOfWeekFormatter == null) { delegate.mDayOfWeekFormatter = new SimpleDateFormat(DAY_OF_WEEK_FORMAT, getLocale(delegate, view)); } return delegate.mDayOfWeekFormatter.format(view.mDayOfWeekLabelCalendar.getTime()); } private static Locale getLocale(SimpleMonthView_Delegate delegate, SimpleMonthView view) { if (delegate.locale == null) { delegate.locale = view.getContext().getResources().getConfiguration().locale; } return delegate.locale; } @NonNull private static SimpleMonthView_Delegate getDelegate(SimpleMonthView view) { if (view == sLastView) { assert sLastDelegate != null; return sLastDelegate; } else { sLastView = view; sLastDelegate = new SimpleMonthView_Delegate(); return sLastDelegate; } } public static void clearCache() { sLastView = null; sLastDelegate = null; } } tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java +0 −2 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import android.util.DisplayMetrics; import android.view.ViewConfiguration_Accessor; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager_Accessor; import android.widget.SimpleMonthView_Delegate; import java.util.Locale; import java.util.concurrent.TimeUnit; Loading Loading @@ -278,7 +277,6 @@ public abstract class RenderAction<T extends RenderParams> extends FrameworkReso mContext.getRenderResources().setLogger(null); } ParserFactory.setParserFactory(null); SimpleMonthView_Delegate.clearCache(); } public static BridgeContext getCurrentContext() { Loading tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java +14 −32 Original line number Diff line number Diff line Loading @@ -77,8 +77,6 @@ public class AsmGenerator { /** Methods to inject. FQCN of class in which method should be injected => runnable that does * the injection. */ private final Map<String, ICreateInfo.InjectMethodRunnable> mInjectedMethodsMap; /** A map { FQCN => set { field names } } which should be promoted to public visibility */ private final Map<String, Set<String>> mPromotedFields; /** * Creates a new generator that can generate the output JAR with the stubbed classes. Loading Loading @@ -111,8 +109,20 @@ public class AsmGenerator { // Create the map/set of methods to change to delegates mDelegateMethods = new HashMap<String, Set<String>>(); addToMap(createInfo.getDelegateMethods(), mDelegateMethods); for (String signature : createInfo.getDelegateMethods()) { int pos = signature.indexOf('#'); if (pos <= 0 || pos >= signature.length() - 1) { continue; } String className = binaryToInternalClassName(signature.substring(0, pos)); String methodName = signature.substring(pos + 1); Set<String> methods = mDelegateMethods.get(className); if (methods == null) { methods = new HashSet<String>(); mDelegateMethods.put(className, methods); } methods.add(methodName); } for (String className : createInfo.getDelegateClassNatives()) { className = binaryToInternalClassName(className); Set<String> methods = mDelegateMethods.get(className); Loading Loading @@ -177,33 +187,9 @@ public class AsmGenerator { returnTypes.add(binaryToInternalClassName(className)); } mPromotedFields = new HashMap<String, Set<String>>(); addToMap(createInfo.getPromotedFields(), mPromotedFields); mInjectedMethodsMap = createInfo.getInjectedMethodsMap(); } /** * For each value in the array, split the value on '#' and add the parts to the map as key * and value. */ private void addToMap(String[] entries, Map<String, Set<String>> map) { for (String entry : entries) { int pos = entry.indexOf('#'); if (pos <= 0 || pos >= entry.length() - 1) { return; } String className = binaryToInternalClassName(entry.substring(0, pos)); String methodOrFieldName = entry.substring(pos + 1); Set<String> set = map.get(className); if (set == null) { set = new HashSet<String>(); map.put(className, set); } set.add(methodOrFieldName); } } /** * Returns the list of classes that have not been renamed yet. * <p/> Loading Loading @@ -394,10 +380,6 @@ public class AsmGenerator { } } Set<String> promoteFields = mPromotedFields.get(className); if (promoteFields != null && !promoteFields.isEmpty()) { cv = new PromoteFieldClassAdapter(cv, promoteFields); } cr.accept(cv, 0); return cw.toByteArray(); } Loading tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java +0 −13 Original line number Diff line number Diff line Loading @@ -119,11 +119,6 @@ public final class CreateInfo implements ICreateInfo { return excludedClasses; } @Override public String[] getPromotedFields() { return PROMOTED_FIELDS; } @Override public Map<String, InjectMethodRunnable> getInjectedMethodsMap() { return INJECTED_METHODS; Loading Loading @@ -190,8 +185,6 @@ public final class CreateInfo implements ICreateInfo { "android.view.RenderNode#nSetElevation", "android.view.RenderNode#nGetElevation", "android.view.ViewGroup#drawChild", "android.widget.SimpleMonthView#getTitle", "android.widget.SimpleMonthView#getDayOfWeekLabel", "android.widget.TimePickerClockDelegate#getAmOrPmKeyCode", "com.android.internal.view.menu.MenuBuilder#createNewMenuItem", "com.android.internal.util.XmlUtils#convertValueToInt", Loading Loading @@ -296,12 +289,6 @@ public final class CreateInfo implements ICreateInfo { "org.kxml2.io.KXmlParser" }; private final static String[] PROMOTED_FIELDS = new String[] { "android.widget.SimpleMonthView#mTitle", "android.widget.SimpleMonthView#mCalendar", "android.widget.SimpleMonthView#mDayOfWeekLabelCalendar" }; /** * List of classes for which the methods returning them should be deleted. * The array contains a list of null terminated section starting with the name of the class Loading tools/layoutlib/create/src/com/android/tools/layoutlib/create/ICreateInfo.java +0 −7 Original line number Diff line number Diff line Loading @@ -77,13 +77,6 @@ public interface ICreateInfo { Set<String> getExcludedClasses(); /** * Returns a list of fields which should be promoted to public visibility. The array values * are in the form of the binary FQCN of the class containing the field and the field name * separated by a '#'. */ String[] getPromotedFields(); /** * Returns a map from binary FQCN className to {@link InjectMethodRunnable} which will be * called to inject methods into a class. Loading Loading
tools/layoutlib/bridge/src/android/widget/SimpleMonthView_Delegate.javadeleted 100644 → 0 +0 −99 Original line number Diff line number Diff line /* * Copyright (C) 2015 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 android.widget; import com.android.tools.layoutlib.annotations.LayoutlibDelegate; import android.annotation.NonNull; import android.annotation.Nullable; import android.icu.text.SimpleDateFormat; import android.text.format.DateFormat; import java.util.Calendar; import java.util.Locale; /** * Delegate that provides implementation for some methods in {@link SimpleMonthView}. * <p/> * Through the layoutlib_create tool, selected methods of SimpleMonthView have been replaced by * calls to methods of the same name in this delegate class. * <p/> * The main purpose of this class is to use {@link android.icu.text.SimpleDateFormat} instead of * {@link java.text.SimpleDateFormat}. */ public class SimpleMonthView_Delegate { private static final String DEFAULT_TITLE_FORMAT = "MMMMy"; private static final String DAY_OF_WEEK_FORMAT = "EEEEE"; // Maintain a cache of the last view used, so that the formatters can be reused. @Nullable private static SimpleMonthView sLastView; @Nullable private static SimpleMonthView_Delegate sLastDelegate; private SimpleDateFormat mTitleFormatter; private SimpleDateFormat mDayOfWeekFormatter; private Locale locale; @LayoutlibDelegate /*package*/ static CharSequence getTitle(SimpleMonthView view) { if (view.mTitle == null) { SimpleMonthView_Delegate delegate = getDelegate(view); if (delegate.mTitleFormatter == null) { delegate.mTitleFormatter = new SimpleDateFormat(DateFormat.getBestDateTimePattern( getLocale(delegate, view), DEFAULT_TITLE_FORMAT)); } view.mTitle = delegate.mTitleFormatter.format(view.mCalendar.getTime()); } return view.mTitle; } @LayoutlibDelegate /*package*/ static String getDayOfWeekLabel(SimpleMonthView view, int dayOfWeek) { view.mDayOfWeekLabelCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek); SimpleMonthView_Delegate delegate = getDelegate(view); if (delegate.mDayOfWeekFormatter == null) { delegate.mDayOfWeekFormatter = new SimpleDateFormat(DAY_OF_WEEK_FORMAT, getLocale(delegate, view)); } return delegate.mDayOfWeekFormatter.format(view.mDayOfWeekLabelCalendar.getTime()); } private static Locale getLocale(SimpleMonthView_Delegate delegate, SimpleMonthView view) { if (delegate.locale == null) { delegate.locale = view.getContext().getResources().getConfiguration().locale; } return delegate.locale; } @NonNull private static SimpleMonthView_Delegate getDelegate(SimpleMonthView view) { if (view == sLastView) { assert sLastDelegate != null; return sLastDelegate; } else { sLastView = view; sLastDelegate = new SimpleMonthView_Delegate(); return sLastDelegate; } } public static void clearCache() { sLastView = null; sLastDelegate = null; } }
tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderAction.java +0 −2 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import android.util.DisplayMetrics; import android.view.ViewConfiguration_Accessor; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager_Accessor; import android.widget.SimpleMonthView_Delegate; import java.util.Locale; import java.util.concurrent.TimeUnit; Loading Loading @@ -278,7 +277,6 @@ public abstract class RenderAction<T extends RenderParams> extends FrameworkReso mContext.getRenderResources().setLogger(null); } ParserFactory.setParserFactory(null); SimpleMonthView_Delegate.clearCache(); } public static BridgeContext getCurrentContext() { Loading
tools/layoutlib/create/src/com/android/tools/layoutlib/create/AsmGenerator.java +14 −32 Original line number Diff line number Diff line Loading @@ -77,8 +77,6 @@ public class AsmGenerator { /** Methods to inject. FQCN of class in which method should be injected => runnable that does * the injection. */ private final Map<String, ICreateInfo.InjectMethodRunnable> mInjectedMethodsMap; /** A map { FQCN => set { field names } } which should be promoted to public visibility */ private final Map<String, Set<String>> mPromotedFields; /** * Creates a new generator that can generate the output JAR with the stubbed classes. Loading Loading @@ -111,8 +109,20 @@ public class AsmGenerator { // Create the map/set of methods to change to delegates mDelegateMethods = new HashMap<String, Set<String>>(); addToMap(createInfo.getDelegateMethods(), mDelegateMethods); for (String signature : createInfo.getDelegateMethods()) { int pos = signature.indexOf('#'); if (pos <= 0 || pos >= signature.length() - 1) { continue; } String className = binaryToInternalClassName(signature.substring(0, pos)); String methodName = signature.substring(pos + 1); Set<String> methods = mDelegateMethods.get(className); if (methods == null) { methods = new HashSet<String>(); mDelegateMethods.put(className, methods); } methods.add(methodName); } for (String className : createInfo.getDelegateClassNatives()) { className = binaryToInternalClassName(className); Set<String> methods = mDelegateMethods.get(className); Loading Loading @@ -177,33 +187,9 @@ public class AsmGenerator { returnTypes.add(binaryToInternalClassName(className)); } mPromotedFields = new HashMap<String, Set<String>>(); addToMap(createInfo.getPromotedFields(), mPromotedFields); mInjectedMethodsMap = createInfo.getInjectedMethodsMap(); } /** * For each value in the array, split the value on '#' and add the parts to the map as key * and value. */ private void addToMap(String[] entries, Map<String, Set<String>> map) { for (String entry : entries) { int pos = entry.indexOf('#'); if (pos <= 0 || pos >= entry.length() - 1) { return; } String className = binaryToInternalClassName(entry.substring(0, pos)); String methodOrFieldName = entry.substring(pos + 1); Set<String> set = map.get(className); if (set == null) { set = new HashSet<String>(); map.put(className, set); } set.add(methodOrFieldName); } } /** * Returns the list of classes that have not been renamed yet. * <p/> Loading Loading @@ -394,10 +380,6 @@ public class AsmGenerator { } } Set<String> promoteFields = mPromotedFields.get(className); if (promoteFields != null && !promoteFields.isEmpty()) { cv = new PromoteFieldClassAdapter(cv, promoteFields); } cr.accept(cv, 0); return cw.toByteArray(); } Loading
tools/layoutlib/create/src/com/android/tools/layoutlib/create/CreateInfo.java +0 −13 Original line number Diff line number Diff line Loading @@ -119,11 +119,6 @@ public final class CreateInfo implements ICreateInfo { return excludedClasses; } @Override public String[] getPromotedFields() { return PROMOTED_FIELDS; } @Override public Map<String, InjectMethodRunnable> getInjectedMethodsMap() { return INJECTED_METHODS; Loading Loading @@ -190,8 +185,6 @@ public final class CreateInfo implements ICreateInfo { "android.view.RenderNode#nSetElevation", "android.view.RenderNode#nGetElevation", "android.view.ViewGroup#drawChild", "android.widget.SimpleMonthView#getTitle", "android.widget.SimpleMonthView#getDayOfWeekLabel", "android.widget.TimePickerClockDelegate#getAmOrPmKeyCode", "com.android.internal.view.menu.MenuBuilder#createNewMenuItem", "com.android.internal.util.XmlUtils#convertValueToInt", Loading Loading @@ -296,12 +289,6 @@ public final class CreateInfo implements ICreateInfo { "org.kxml2.io.KXmlParser" }; private final static String[] PROMOTED_FIELDS = new String[] { "android.widget.SimpleMonthView#mTitle", "android.widget.SimpleMonthView#mCalendar", "android.widget.SimpleMonthView#mDayOfWeekLabelCalendar" }; /** * List of classes for which the methods returning them should be deleted. * The array contains a list of null terminated section starting with the name of the class Loading
tools/layoutlib/create/src/com/android/tools/layoutlib/create/ICreateInfo.java +0 −7 Original line number Diff line number Diff line Loading @@ -77,13 +77,6 @@ public interface ICreateInfo { Set<String> getExcludedClasses(); /** * Returns a list of fields which should be promoted to public visibility. The array values * are in the form of the binary FQCN of the class containing the field and the field name * separated by a '#'. */ String[] getPromotedFields(); /** * Returns a map from binary FQCN className to {@link InjectMethodRunnable} which will be * called to inject methods into a class. Loading