14dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen/*
24dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Copyright (C) 2015 The Android Open Source Project
34dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen *
44dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Licensed under the Apache License, Version 2.0 (the "License");
54dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * you may not use this file except in compliance with the License.
64dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * You may obtain a copy of the License at
74dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen *
84dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen *      http://www.apache.org/licenses/LICENSE-2.0
94dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen *
104dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Unless required by applicable law or agreed to in writing, software
114dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * distributed under the License is distributed on an "AS IS" BASIS,
124dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * See the License for the specific language governing permissions and
144dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * limitations under the License.
154dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen */
164dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen
174dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenpackage com.android.layoutlib.bridge.android.support;
184dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen
194dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport com.android.ide.common.rendering.api.LayoutLog;
204dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport com.android.layoutlib.bridge.Bridge;
21671b7f9b99316f7224c1213d6923d449a2de9b62Deepanshu Guptaimport com.android.layoutlib.bridge.util.ReflectionUtils.ReflectionException;
224dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen
234dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport android.annotation.NonNull;
244dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport android.annotation.Nullable;
254dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport android.view.View;
264dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen
274dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport static com.android.layoutlib.bridge.util.ReflectionUtils.getMethod;
284dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenimport static com.android.layoutlib.bridge.util.ReflectionUtils.invoke;
294dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen
304dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen/**
314dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen * Utility class for working with the design support lib.
324dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen */
334dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsenpublic class DesignLibUtil {
344dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen
354dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    private static final String PKG_PREFIX = "android.support.design.widget.";
364dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    public static final String CN_COORDINATOR_LAYOUT = PKG_PREFIX + "CoordinatorLayout";
374dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    public static final String CN_APPBAR_LAYOUT = PKG_PREFIX + "AppBarLayout";
384dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    public static final String CN_COLLAPSING_TOOLBAR_LAYOUT =
394dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen            PKG_PREFIX + "CollapsingToolbarLayout";
404dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    public static final String CN_TOOLBAR = "android.support.v7.widget.Toolbar";
414dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    public static final int SCROLL_AXIS_VERTICAL = 1 << 1;
424dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen
434dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    /**
444dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen     * Tries to set the title of a view. This is used to set the title in a
454dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen     * CollapsingToolbarLayout.
464dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen     * <p/>
474dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen     * Any exceptions thrown during the process are logged in {@link Bridge#getLog()}
484dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen     */
494dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    public static void setTitle(@NonNull View view, @Nullable String title) {
504dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen        if (title == null) {
514dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen            return;
524dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen        }
534dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen        try {
54671b7f9b99316f7224c1213d6923d449a2de9b62Deepanshu Gupta            invoke(getMethod(view.getClass(), "setTitle", CharSequence.class), view, title);
554dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen        } catch (ReflectionException e) {
564dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen            Bridge.getLog().warning(LayoutLog.TAG_INFO,
574dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen                    "Error occurred while trying to set title.", e);
584dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen        }
594dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen    }
604dfe4d43ce5634f059a3ba669e3cac4551c3a3eeJens Ole Lauridsen}
61