package architect; import java.util.ArrayList; import java.util.List; /** * @author Lukasz Piliszczuk - lukasz.pili@gmail.com */ public class NavigationChain { List<Chain> chains = new ArrayList<>(); Object result; public NavigationChain back() { chains.add(new Chain(Chain.TYPE_BACK)); return this; } public NavigationChain back(Object result) { chains.add(new Chain(Chain.TYPE_BACK)); this.result = result; return this; } public NavigationChain backToRoot() { chains.add(new Chain(Chain.TYPE_BACK_ROOT)); return this; } public NavigationChain backToRoot(Object result) { chains.add(new Chain(Chain.TYPE_BACK_ROOT)); this.result = result; return this; } public NavigationChain push(StackablePath path) { chains.add(new Chain(path, Chain.TYPE_PUSH)); return this; } public NavigationChain show(StackablePath path) { chains.add(new Chain(path, Chain.TYPE_SHOW)); return this; } public NavigationChain replace(StackablePath path) { chains.add(new Chain(path, Chain.TYPE_REPLACE)); return this; } public static class Chain { static final int TYPE_PUSH = 1; static final int TYPE_SHOW = 2; static final int TYPE_REPLACE = 3; static final int TYPE_BACK = 4; static final int TYPE_BACK_ROOT = 5; StackablePath path; int type; public Chain(int type) { this(null, type); } public Chain(StackablePath path, int type) { this.path = path; this.type = type; } } }