package com.kaichunlin.transition.adapter;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.Menu;
/**
* Adds support for {@link android.view.MenuItem} transition.
*/
public abstract class MenuBaseAdapter extends AbstractAdapter implements MenuOptionHandler {
MenuOptionHandler mMenuHandler;
protected abstract MenuOptionHandler createMenuHandler();
@Override
public void removeAllTransitions() {
super.removeAllTransitions();
createMenuHandlerIfNecessary();
mMenuHandler.clearOptions();
}
protected MenuOptionHandler getMenuOptionHandler() {
return mMenuHandler;
}
private void createMenuHandlerIfNecessary() {
if (mMenuHandler == null) {
mMenuHandler = createMenuHandler();
}
}
public void onCreateOptionsMenu(@NonNull Activity activity, @NonNull Menu menu) {
createMenuHandlerIfNecessary();
mMenuHandler.onCreateOptionsMenu(activity, menu);
}
public void onCreateOptionsMenu(@NonNull Activity activity, @NonNull Menu menu, AdapterState adapterState) {
createMenuHandlerIfNecessary();
mMenuHandler.onCreateOptionsMenu(activity, menu, adapterState);
}
@Override
public void setupOption(@NonNull Activity activity, MenuOptionConfiguration openConfig) {
createMenuHandlerIfNecessary();
mMenuHandler.setupOption(activity, openConfig);
}
@Override
public void setupOpenOption(@NonNull Activity activity, MenuOptionConfiguration openConfig) {
createMenuHandlerIfNecessary();
mMenuHandler.setupOpenOption(activity, openConfig);
}
@Override
public void setupCloseOption(@NonNull Activity activity, MenuOptionConfiguration closeConfig) {
createMenuHandlerIfNecessary();
mMenuHandler.setupCloseOption(activity, closeConfig);
}
@Override
public void setupOptions(@NonNull Activity activity, MenuOptionConfiguration openConfig, MenuOptionConfiguration closeConfig) {
createMenuHandlerIfNecessary();
mMenuHandler.setupOptions(activity, openConfig, closeConfig);
}
@Override
public void clearOptions() {
mMenuHandler.clearOptions();
}
@Nullable
@Override
public MenuOptionConfiguration getOpenConfig() {
return mMenuHandler.getOpenConfig();
}
@Nullable
@Override
public MenuOptionConfiguration getCloseConfig() {
return mMenuHandler.getCloseConfig();
}
}