package evopaint; import java.awt.*; import java.util.Observable; import evopaint.gui.HighlightedSelectionOverlay; import evopaint.gui.util.IOverlay; import evopaint.gui.util.WrappingScalableCanvas; /** * Created by IntelliJ IDEA. User: daniel Date: 07.03.2010 Time: 12:41:14 To * change this template use File | Settings | File Templates. */ public class Selection extends Observable implements IOverlay { private Point startPoint; private Point endPoint; private String selectionName; private boolean highlighted; private final WrappingScalableCanvas canvas; private HighlightedSelectionOverlay overlay; private Rectangle rect; public Selection(Point startPoint, Point endPoint, WrappingScalableCanvas canvas) { this.startPoint = startPoint; this.endPoint = endPoint; this.rect = new Rectangle(startPoint, new Dimension(endPoint.x - startPoint.x, endPoint.y - startPoint.y)); this.canvas = canvas; overlay = new HighlightedSelectionOverlay(this, canvas); } public void setHighlighted(boolean highlighted) { if (highlighted) { canvas.subscribe(overlay); } else { canvas.unsubscribe(overlay); } this.highlighted = highlighted; } public String getSelectionName() { return selectionName; } public void setSelectionName(String selectionName) { this.selectionName = selectionName; setChanged(); notifyObservers(); } public Point getStartPoint() { return startPoint; } public Point getEndPoint() { return endPoint; } public boolean isHighlighted() { return highlighted; } public Rectangle getRectangle() { return rect; } @Override public void paint(Graphics2D g2) { g2.setXORMode(new Color(0x505050)); canvas.draw(new Rectangle(this.getStartPoint(), new Dimension(this .getEndPoint().x - this.getStartPoint().x, this.getEndPoint().y - this.getStartPoint().y))); } }