package org.wikipedia.page.action; import android.support.annotation.NonNull; import org.wikipedia.model.EnumCode; import org.wikipedia.model.EnumCodeMap; public enum PageActionTab implements EnumCode { ADD_TO_READING_LIST() { @Override public void select(@NonNull Callback cb) { cb.onAddToReadingListTabSelected(); } }, SHARE() { @Override public void select(@NonNull Callback cb) { cb.onSharePageTabSelected(); } }, CHOOSE_LANGUAGE() { @Override public void select(@NonNull Callback cb) { cb.onChooseLangTabSelected(); } }, FIND_IN_PAGE() { @Override public void select(@NonNull Callback cb) { cb.onFindInPageTabSelected(); } }, VIEW_TOC() { @Override public void select(@NonNull Callback cb) { cb.onViewToCTabSelected(); } }; private static final EnumCodeMap<PageActionTab> MAP = new EnumCodeMap<>(PageActionTab.class); @NonNull public static PageActionTab of(int code) { return MAP.get(code); } public abstract void select(@NonNull Callback cb); @Override public int code() { // This enumeration is not marshalled so tying declaration order to presentation order is // convenient and consistent. return ordinal(); } public interface Callback { void onAddToReadingListTabSelected(); void onSharePageTabSelected(); void onChooseLangTabSelected(); void onFindInPageTabSelected(); void onViewToCTabSelected(); void updateBookmark(boolean pageSaved); } }