package com.pan.simplepicture.widget.drawerItems;
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.RecyclerView;
import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageButton;
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.iconics.IconicsDrawable;
import com.pan.materialdrawer.model.BasePrimaryDrawerItem;
import com.pan.materialdrawer.model.utils.ViewHolderFactory;
import com.pan.simplepicture.R;
/**
* Created by mikepenz on 03.02.15.
*/
public class OverflowMenuDrawerItem extends BasePrimaryDrawerItem<OverflowMenuDrawerItem> {
private int mMenu;
public OverflowMenuDrawerItem withMenu(int menu) {
this.mMenu = menu;
return this;
}
public int getMenu() {
return mMenu;
}
private PopupMenu.OnMenuItemClickListener mOnMenuItemClickListener;
public OverflowMenuDrawerItem withOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener onMenuItemClickListener) {
this.mOnMenuItemClickListener = onMenuItemClickListener;
return this;
}
public PopupMenu.OnMenuItemClickListener getOnMenuItemClickListener() {
return mOnMenuItemClickListener;
}
private PopupMenu.OnDismissListener mOnDismissListener;
public OverflowMenuDrawerItem withOnDismissListener(PopupMenu.OnDismissListener onDismissListener) {
this.mOnDismissListener = onDismissListener;
return this;
}
public PopupMenu.OnDismissListener getOnDismissListener() {
return mOnDismissListener;
}
@Override
public String getType() {
return "PRIMARY_OVERFLOW_MENU_ITEM";
}
@Override
@LayoutRes
public int getLayoutRes() {
return R.layout.material_drawer_item_overflow_menu_primary;
}
@Override
public void bindView(RecyclerView.ViewHolder holder) {
Context ctx = holder.itemView.getContext();
//get our viewHolder
ViewHolder viewHolder = (ViewHolder) holder;
//bind the basic view parts
bindViewHelper((BaseViewHolder) holder);
//handle menu click
viewHolder.menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu popup = new PopupMenu(view.getContext(), view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(mMenu, popup.getMenu());
popup.setOnMenuItemClickListener(mOnMenuItemClickListener);
popup.setOnDismissListener(mOnDismissListener);
popup.show();
}
});
//handle image
viewHolder.menu.setImageDrawable(new IconicsDrawable(ctx, GoogleMaterial.Icon.gmd_more_vert).sizeDp(12).color(getIconColor(ctx)));
//call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required)
onPostBindView(this, holder.itemView);
}
@Override
public ViewHolderFactory getFactory() {
return new ItemFactory();
}
public static class ItemFactory implements ViewHolderFactory<ViewHolder> {
public ViewHolder factory(View v) {
return new ViewHolder(v);
}
}
private static class ViewHolder extends BaseViewHolder {
//protected ImageButton ibOverflow;
private ImageButton menu;
public ViewHolder(View view) {
super(view);
this.menu = (ImageButton) view.findViewById(R.id.material_drawer_menu_overflow);
}
}
}