package architect; import android.view.View; import java.util.ArrayList; import java.util.List; /** * Views transitions mapping * * @author Lukasz Piliszczuk - lukasz.pili@gmail.com */ public class TransitionsMapping { final List<Mapping> list = new ArrayList<>(); public TransitionsMapping byDefault(ViewTransition transition) { return new Mapping(null).withTransition(transition); } /** * Create new transition mapping to the destination view */ public Mapping show(Class<? extends View> view) { return new Mapping(view); } public class Mapping { Class<? extends View> view; Class<? extends View>[] from; ViewTransition transition; private Mapping(Class<? extends View> view) { this.view = view; } /** * Specify specific originating views * If you want that to be any view, don't call this method */ public Mapping from(Class<? extends View>... from) { Preconditions.checkArgument(from != null && from.length > 0, "From views cannot be null or empty"); this.from = from; return this; } public TransitionsMapping withTransition(ViewTransition transition) { Preconditions.checkNotNull(transition, "Screen transition cannot be null"); this.transition = transition; return build(); } public TransitionsMapping withoutTransition() { return build(); } private TransitionsMapping build() { list.add(this); return TransitionsMapping.this; } } }