package com.zhuinden.simplestackdemonestedstack.application;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import com.zhuinden.simplestack.navigator.StateKey;
import com.zhuinden.simplestack.navigator.ViewChangeHandler;
import com.zhuinden.simplestack.navigator.changehandlers.SegueViewChangeHandler;
import com.zhuinden.simplestackdemonestedstack.util.PreserveTreeScopesStrategy;
import com.zhuinden.servicetree.ServiceTree;
import com.zhuinden.simplestack.BackstackManager;
import java.util.Collections;
import java.util.List;
/**
* Created by Owner on 2017. 01. 12..
*/
public abstract class Key
implements Parcelable, StateKey {
public static final String NESTED_STACK = "NESTED_STACK";
public abstract int layout();
public abstract String stackIdentifier();
public void bindServices(ServiceTree.Node node) {
if(hasNestedStack()) {
BackstackManager backstackManager = new BackstackManager();
backstackManager.setStateClearStrategy(new PreserveTreeScopesStrategy(node.getTree()));
backstackManager.setup(initialKeys());
node.bindService(NESTED_STACK, backstackManager);
}
}
protected List<?> initialKeys() {
return Collections.emptyList();
}
public boolean hasNestedStack() {
return false;
}
@NonNull
@Override
public ViewChangeHandler viewChangeHandler() {
return new SegueViewChangeHandler();
}
}