package org.archstudio.bna;
import static org.archstudio.sysutils.SystemUtils.simpleName;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
public class CoordinateMapperEvent {
public enum EventType {
WORLD_BOUNDS(false, false), //
LOCAL_ORIGIN(true, false), //
LOCAL_SCALE(false, true), //
LOCAL_SCALE_AND_ORIGIN(true, true), //
OTHER(true, true);
private final boolean originModified;
private final boolean scaleModified;
private EventType(boolean originModified, boolean scaleModified) {
this.originModified = originModified;
this.scaleModified = scaleModified;
}
public boolean isOriginModified() {
return originModified;
}
public boolean isScaleModified() {
return scaleModified;
}
}
private final ICoordinateMapper source;
private final EventType eventType;
private final Rectangle newWorldBounds;
private final Point newLocalOrigin;
private final double newLocalScale;
public CoordinateMapperEvent(ICoordinateMapper source, EventType eventType, Rectangle newWorldBounds,
Point newLocalOrigin, double newLocalScale) {
this.source = source;
this.eventType = eventType;
this.newWorldBounds = new Rectangle(newWorldBounds.x, newWorldBounds.y, newWorldBounds.width,
newWorldBounds.height);
this.newLocalOrigin = new Point(newLocalOrigin.x, newLocalOrigin.y);
this.newLocalScale = newLocalScale;
}
public ICoordinateMapper getSource() {
return source;
}
public EventType getEventType() {
return eventType;
}
public Rectangle getNewWorldBounds() {
return newWorldBounds;
}
public Point getNewLocalOrigin() {
return newLocalOrigin;
}
public double getNewLocalScale() {
return newLocalScale;
}
@Override
public String toString() {
return simpleName(this.getClass()) + "["//
+ "eventType=" + eventType + ","//
+ "newLocalOrigin=" + newLocalOrigin + ","//
+ "newLocalScale=" + newLocalScale + ","//
+ "newWorldBounds=" + newWorldBounds + ","//
+ "source=" + source + "]";
}
}