package com.horstmann.violet.framework.graphics;
import com.horstmann.violet.framework.graphics.content.Layout;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
/**
* This class defines how the separation of elements in the layout
*
* @see Layout#setSeparator(Separator)
* @see Layout#getSeparator()
*
* @author Adrian Bobrowski <adrian071993@gmail.com>
* @date 29.12.2015
*/
public abstract class Separator
{
/**
* draws a separator between the start point and end point
* @param graphics
* @param startPoint
* @param endPoint
*/
public abstract void draw(Graphics2D graphics, Point2D startPoint, Point2D endPoint);
public static class EmptySeparator extends Separator
{
/**
* @see Separator#draw(Graphics2D, Point2D, Point2D)
*/
@Override
public void draw(Graphics2D graphics, Point2D startPoint, Point2D endPoint)
{}
}
public static class LineSeparator extends Separator
{
public LineSeparator()
{
this(Color.BLACK);
}
public LineSeparator(Color color)
{
this.color = color;
}
/**
* @see Separator#draw(Graphics2D, Point2D, Point2D)
*/
@Override
public void draw(Graphics2D graphics, Point2D startPoint, Point2D endPoint)
{
if(null != color)
{
Color oldColor = graphics.getColor();
graphics.setColor(color);
graphics.drawLine((int) startPoint.getX(), (int) startPoint.getY(), (int) endPoint.getX(), (int) endPoint.getY());
graphics.setColor(oldColor);
}
}
/**
* @see Separator#setColor(Color)
*/
public void setColor(Color color) {
this.color = color;
}
private Color color;
}
/**
* sets the color which will be drawn separator
* @param color
*/
public void setColor(Color color) {}
public static final Separator EMPTY = new EmptySeparator();
public static final Separator LINE = new LineSeparator();
}