package com.horstmann.violet.framework.graphics.content; import java.awt.*; import java.awt.geom.Rectangle2D; /** * TODO javadoc * This ... * * @author Adrian Bobrowski <adrian071993@gmail.com> * @date 06.03.2016 */ public class PaddingContent extends Content { public PaddingContent(Content content, double padding) { this(content, padding, padding); } public PaddingContent(Content content, double vertical, double horizontal) { this(content,vertical, horizontal, vertical, horizontal); } public PaddingContent(Content content, double top, double left, double bottom, double right) { this.content = content; this.top = new EmptyContent(); this.left = new EmptyContent(); this.bottom = new EmptyContent(); this.right = new EmptyContent(); setTopPadding(top); setLeftPadding(left); setBottomPadding(bottom); setRightPadding(right); HorizontalLayout horizontalLayout = new HorizontalLayout(); horizontalLayout.add(this.left); horizontalLayout.add(this.content); horizontalLayout.add(this.right); layout = new VerticalLayout(); layout.add(this.top); layout.add(horizontalLayout); layout.add(this.bottom); this.content.addParent(this); } /** * Defines how to draw element * * @param graphics */ @Override public final void draw(Graphics2D graphics) { layout.draw(graphics); } /** * @see Content#refreshDown() */ @Override protected void refreshDown() { content.refreshDown(); super.refreshDown(); } /** * @return minimal bounds of this element */ public Rectangle2D getMinimalBounds() { return layout.getMinimalBounds(); } public final void setTopPadding(double top) { if(0>top) { throw new IllegalArgumentException("top padding can't be negative"); } this.top.setMinHeight(top); refreshUp(); } public final void setLeftPadding(double left) { if(0>left) { throw new IllegalArgumentException("left padding can't be negative"); } this.left.setMinWidth(left); refreshUp(); } public final void setBottomPadding(double bottom) { if(0>bottom) { throw new IllegalArgumentException("bottom padding can't be negative"); } this.bottom.setMinHeight(bottom); refreshUp(); } public final void setRightPadding(double right) { if(0>right) { throw new IllegalArgumentException("right padding can't be negative"); } this.right.setMinWidth(right); refreshUp(); } private Content content; private Layout layout; private EmptyContent top; private EmptyContent left; private EmptyContent bottom; private EmptyContent right; }