package com.kaichunlin.transition.adapter;
import android.support.annotation.NonNull;
import com.kaichunlin.transition.AbstractTransitionBuilder;
import com.kaichunlin.transition.DefaultTransitionManager;
import com.kaichunlin.transition.Transition;
import com.kaichunlin.transition.TransitionManagerListener;
import com.kaichunlin.transition.TransitionManager;
import java.util.List;
/**
* Provides implementation shared by most adapters.
*/
public abstract class AbstractAdapter implements TransitionAdapter {
private TransitionManager mTransitionManager = new DefaultTransitionManager();
private AdapterState mAdapterState;
public AbstractAdapter() {
mAdapterState = new AdapterState();
}
public AbstractAdapter(@NonNull AdapterState adapterState) {
mAdapterState = adapterState;
}
public void setTransitionManager(TransitionManager manager) {
mTransitionManager = manager;
}
public TransitionManager getTransitionManager() {
return mTransitionManager;
}
@Override
public AdapterState getAdapterState() {
return mAdapterState;
}
@Override
public void addTransition(@NonNull AbstractTransitionBuilder builder) {
mTransitionManager.addTransition(builder);
}
@Override
public void addTransition(@NonNull Transition transition) {
mTransitionManager.addTransition(transition);
}
@Override
public void addAllTransitions(@NonNull List<Transition> transitionsList) {
mTransitionManager.addAllTransitions(transitionsList);
}
@Override
public boolean removeTransition(@NonNull Transition transition) {
return mTransitionManager.removeTransition(transition);
}
@Override
public void removeAllTransitions() {
stopTransition();
mTransitionManager.removeAllTransitions();
}
@Override
public List<Transition> getTransitions() {
return mTransitionManager.getTransitions();
}
@Override
public boolean startTransition() {
return startTransition(getAdapterState().isOpen()?1:0);
}
@Override
public boolean startTransition(float progress) {
if (mAdapterState.isTransiting()) {
return false;
}
mTransitionManager.startTransition(progress);
mAdapterState.setTransiting(true);
return true;
}
@Override
public void updateProgress(float value) {
mTransitionManager.updateProgress(value);
}
@Override
public void stopTransition() {
if (!mAdapterState.isTransiting()) {
return;
}
mTransitionManager.stopTransition();
mAdapterState.setTransiting(false);
}
@Override
public void addTransitionListener(TransitionManagerListener listener) {
mTransitionManager.addTransitionListener(listener);
}
@Override
public void removeTransitionListener(TransitionManagerListener listener) {
mTransitionManager.removeTransitionListener(listener);
}
@Override
public void notifyTransitionStart() {
mTransitionManager.notifyTransitionStart();
}
@Override
public void notifyTransitionEnd() {
mTransitionManager.notifyTransitionEnd();
}
}