content: /*
   * Created by LuaView.
   * Copyright (c) 2017, Alibaba Group. All rights reserved.
   *
   * This source code is licensed under the MIT.
   * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
   */
  
  package com.taobao.luaview.userdata.ui;
  
  import android.annotation.TargetApi;
  import android.graphics.drawable.Drawable;
  import android.graphics.drawable.StateListDrawable;
  import android.os.Build;
  import android.util.StateSet;
  import android.widget.Button;
  
  import com.taobao.luaview.util.ImageUtil;
  
  import org.luaj.vm2.Globals;
  import org.luaj.vm2.LuaValue;
  import org.luaj.vm2.Varargs;
  
  import java.util.Map;
  
  public class UDButton extends UDTextView<Button> {
      private String mNormalImage;
      private String mPressedImage;
  
      public UDButton(Button view, Globals globals, LuaValue metatable, Varargs initParams) {
          super(view, globals, metatable, initParams);
      }
  
      /**
       * 设置高亮颜色
       *
       * @param highlightColor
       * @return
       */
      public UDButton setHighlightColor(Integer highlightColor) {
          if (highlightColor != null) {
              final Button btn = getView();
              if (btn != null) {
                  btn.setHighlightColor(highlightColor);
              }
          }
          return this;
      }
  
  
      /**
       * 获取高亮颜色
       *
       * @return
       */
      @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
      public int getHighlightColor() {
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
              return getView() != null ? getView().getHighlightColor() : 0;
          } else {
              return 0;
          }
      }
  
      /**
       * 设置按钮的图片
       *
       * @param normalImage
       * @param pressedImage
       * @return
       */
      public UDButton setImage(final String normalImage, final String pressedImage) {
          this.mNormalImage = normalImage;
          this.mPressedImage = pressedImage;
          final Button btn = getView();
          if (btn != null && getContext() != null) {
              ImageUtil.fetch(getContext(), getLuaResourceFinder(), new String[]{normalImage, pressedImage}, new ImageUtil.LoadCallback() {
                  @Override
                  public void onLoadResult(Map<String, Drawable> drawables) {
                      if (drawables != null) {
                          final StateListDrawable stateListDrawable = new StateListDrawable();
                          if (drawables.containsKey(pressedImage)) {
                              stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, drawables.get(pressedImage));
                          }
                          if (drawables.containsKey(normalImage)) {
                              stateListDrawable.addState(StateSet.WILD_CARD, drawables.get(normalImage));
                          }
                          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                              btn.setBackground(stateListDrawable);
                          } else {
                              btn.setBackgroundDrawable(stateListDrawable);
                          }
                      }
                  }
              });
          }
          return this;
      }
  
      /**
       * get image
       *
       * @return
       */
      public Varargs getImage() {
          return varargsOf(valueOf(mNormalImage), valueOf(mPressedImage));
      }
  }
  