/** * Adds the drawable to the specific direction for the divider. */ public DividerBuilder with(Drawable drawable, Direction direction) { sublayers.put(direction, new Sublayer(drawable)); return this; }
private Drawable getDrawable(Direction direction) { return sublayers.get(direction).getDrawable(); }
Divider override(Divider override, EnumSet<Direction> overrideDirections, int depth) { Divider overridden = new Divider(this); for (Direction direction : overrideDirections) { Sublayer sublayer = override.getSublayer(direction); if (sublayer != null && (!overridden.hasSublayer(direction) || depth >= getSublayer(direction) .getDepth())) { overridden.sublayers.put(direction, new Sublayer(sublayer.getDrawable(), depth)); } } return overridden; }
Divider overrideSublayer(Divider override, Direction sourceDirection, Direction targetDirection) { Divider overridden = new Divider(this); if (override.hasSublayer(sourceDirection)) { Sublayer overrideSublayer = override.getSublayer(sourceDirection); if (!overridden.hasSublayer(targetDirection) || overrideSublayer.isCloserThan( overridden.getSublayer(targetDirection))) { overridden.sublayers.put(targetDirection, overrideSublayer); } } return overridden; }
/** * Adds the drawable to all the directions provided for the divider. */ public DividerBuilder with(Drawable drawable, EnumSet<Direction> directions) { for (Direction direction : directions) { sublayers.put(direction, new Sublayer(drawable)); } return this; }
/** * Adds the drawable to all the sides of the divider. */ public DividerBuilder with(Drawable drawable) { for (Direction direction : Direction.values()) { sublayers.put(direction, new Sublayer(drawable)); } return this; }
@Test public void getDrawableReturnsMutatedDrawable() { final Drawable mockDrawable = mock(Drawable.class); new Sublayer(mockDrawable); verify(mockDrawable).mutate(); } }