package com.jotuntech.sketcher.common; import java.awt.Rectangle; import java.lang.ref.WeakReference; import java.util.Deque; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; /** * User context specific data * * @author Thor Harald Johansen */ public class User implements Comparable { /** User's name */ private String name; /** Viewer status */ private boolean viewer; /** Current layer */ private WeakReference layer = new WeakReference(null); /** Phantom layer */ private Layer phantomLayer; /** Current brush */ private Brush brush; /** Current color */ private int color = 0x000000; /** Current cursor */ private Input cursor = new Input(0f, 0f); /** Undo deque */ private Deque undoDeque = new LinkedList(); /** Tag position */ private Rectangle tag = new Rectangle(Short.MAX_VALUE, Short.MAX_VALUE, Short.MAX_VALUE, Short.MAX_VALUE); /** Attributes */ private Map attributes = new HashMap(); public User() { this.phantomLayer = new BitmapLayer("Phantom Layer"); } public User(String name) { this.name = name; this.phantomLayer = new BitmapLayer(name + " Phantom Layer"); } public int compareTo(User o) { return getName().compareTo(((User)o).getName()); } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setLayer(Layer layer) { this.layer = new WeakReference(layer); } public Layer getLayer() { return layer.get(); } public void setBrush(Brush brush) { this.brush = brush; } public Brush getBrush() { return brush; } public void setColor(int color) { this.color = color; } public int getColor() { return color; } public void setCursor(Input cursor) { this.cursor = cursor; } public Input getCursor() { return cursor; } public void setTag(Rectangle tag) { this.tag = tag; } public Rectangle getTag() { return tag; } public void setPhantomLayer(Layer phantomLayer) { this.phantomLayer = phantomLayer; } public Layer getPhantomLayer() { return phantomLayer; } public void setAttribute(String key, Object value) { attributes.put(key, value); } public Object getAttribute(String key) { return attributes.get(key); } public Deque getUndoDeque() { return undoDeque; } public void setViewer(boolean viewer) { this.viewer = viewer; } public boolean isViewer() { return viewer; } }