1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 package org.chromium.chrome.browser.toolbar.menu_button;
6 
7 import android.view.View;
8 
9 import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonProperties.ShowBadgeProperty;
10 import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonProperties.ThemeProperty;
11 import org.chromium.ui.modelutil.PropertyKey;
12 import org.chromium.ui.modelutil.PropertyModel;
13 import org.chromium.ui.modelutil.PropertyModelChangeProcessor.ViewBinder;
14 
15 class MenuButtonViewBinder implements ViewBinder<PropertyModel, MenuButton, PropertyKey> {
16     @Override
bind(PropertyModel model, MenuButton view, PropertyKey propertyKey)17     public void bind(PropertyModel model, MenuButton view, PropertyKey propertyKey) {
18         if (propertyKey == MenuButtonProperties.ALPHA) {
19             view.setAlpha(model.get(MenuButtonProperties.ALPHA));
20         } else if (propertyKey == MenuButtonProperties.APP_MENU_BUTTON_HELPER) {
21             view.setAppMenuButtonHelper(model.get(MenuButtonProperties.APP_MENU_BUTTON_HELPER));
22         } else if (propertyKey == MenuButtonProperties.CONTENT_DESCRIPTION) {
23             view.updateContentDescription(model.get(MenuButtonProperties.CONTENT_DESCRIPTION));
24         } else if (propertyKey == MenuButtonProperties.IS_CLICKABLE) {
25             view.setClickable(model.get(MenuButtonProperties.IS_CLICKABLE));
26         } else if (propertyKey == MenuButtonProperties.IS_HIGHLIGHTING) {
27             view.setMenuButtonHighlight(model.get(MenuButtonProperties.IS_HIGHLIGHTING));
28         } else if (propertyKey == MenuButtonProperties.IS_VISIBLE) {
29             view.setVisibility(
30                     model.get(MenuButtonProperties.IS_VISIBLE) ? View.VISIBLE : View.GONE);
31         } else if (propertyKey == MenuButtonProperties.SHOW_UPDATE_BADGE) {
32             ShowBadgeProperty showBadgeProperty = model.get(MenuButtonProperties.SHOW_UPDATE_BADGE);
33             if (showBadgeProperty.mShowUpdateBadge) {
34                 view.showAppMenuUpdateBadge(showBadgeProperty.mShouldAnimate);
35             } else {
36                 view.removeAppMenuUpdateBadge(showBadgeProperty.mShouldAnimate);
37             }
38         } else if (propertyKey == MenuButtonProperties.THEME) {
39             ThemeProperty themeProperty = model.get(MenuButtonProperties.THEME);
40             view.onTintChanged(themeProperty.mColorStateList, themeProperty.mUseLightColors);
41         } else if (propertyKey == MenuButtonProperties.TRANSLATION_X) {
42             view.setTranslationX(model.get(MenuButtonProperties.TRANSLATION_X));
43         }
44     }
45 }
46