public class LabelledPortrayal2D extends SimplePortrayal2D
You provide a string label at construction time. The LabelledPortrayal2D will retrieve the label by calling getLabel(Object obj, DrawInfo2D info) at draw time to get the expected label. By default the getLabel function will return the label you had provided at construction; if your provided label was null, then getLabel will by default return the string name of the object. You are free to override this function to provide more specialized label information.
There are certain guidelines you can specify for when the label is to be drawn. At construction time you can state that the label should only be drawn when the object is selected. Additionally if you call the setLabelShowing(...) function, you can turn off or on label drawing entirely for this LabelledPortrayal2D.
You may specify a color or paint for the label (the default is blue) and an alignment (the default is align left).
The label is drawn at:
x: (int)(info.draw.x + scalex * info.draw.width + offsetx); y: (int)(info.draw.y + scaley * info.draw.height + offsety);
... that is, scalex and scaley are values which scale when you zoom in, and offsetx and offsety are values which add additional fixed pixels. The default is scalex = 0, scaley = 0.5, offsetx = 0, offsety = 10. This draws the label ten pixels below the outer rectangular edge of the bounds rect for the portrayal.
The label can be set to scale when zoomed in or out (by default it does not scale).
Note: One oddity of LabelledPortrayal2D is due to the fact that the label is only drawn if the object is being drawn. While most FieldPortrayals ask objects just off-screen to draw themselves just to be careful, if an object is significantly off-screen, it may not be asked to draw itself, and so the label will not be drawn -- even though part of the label could be on-screen at the time! C'est la vie.
Modifier and Type | Field and Description |
---|---|
int |
align
One of ALIGN_CENTER, ALIGN_LEFT, or ALIGN_RIGHT
|
static int |
ALIGN_CENTER |
static int |
ALIGN_LEFT |
static int |
ALIGN_RIGHT |
static int |
ALWAYS_SCALE |
SimplePortrayal2D |
child |
static double |
DEFAULT_OFFSET_X |
static double |
DEFAULT_OFFSET_Y |
static double |
DEFAULT_SCALE_X |
static double |
DEFAULT_SCALE_Y |
java.awt.Font |
font
The font of the text.
|
java.lang.String |
label |
static int |
NEVER_SCALE |
double |
offsetx
The post-scaling offset from the object's origin.
|
double |
offsety
The post-scaling offset from the object's origin.
|
boolean |
onlyLabelWhenSelected |
java.awt.Paint |
paint
The Paint or Color of the text
|
static int |
SCALE_WHEN_SMALLER |
double |
scalex
The pre-scaling offset from the object's origin.
|
double |
scaley
The pre-scaling offset from the object's origin.
|
TYPE_HIT_OBJECT, TYPE_SELECTED_OBJECT
Constructor and Description |
---|
LabelledPortrayal2D(SimplePortrayal2D child,
double offsetx,
double offsety,
double scalex,
double scaley,
java.awt.Font font,
int align,
java.lang.String label,
java.awt.Paint paint,
boolean onlyLabelWhenSelected)
Draws [x=offsetx, y=offsety] pixels away from the [dx=scalex, dy=scaley] prescaled position of the Portrayal2D,
using the SansSerif 10pt font, blue, and left alignment.
|
LabelledPortrayal2D(SimplePortrayal2D child,
double scaley,
java.lang.String label,
java.awt.Paint paint,
boolean onlyLabelWhenSelected)
Draws 10 pixels down from the [dx=0, dy=scaley] prescaled position of the Portrayal2D,
using the SansSerif 10pt font, blue, and left alignment.
|
LabelledPortrayal2D(SimplePortrayal2D child,
java.lang.String label)
Draws 10 pixels down from the [dx=0, dy=0.5] prescaled position of the Portrayal2D,
using the SansSerif 10pt font, blue, and left alignment.
|
LabelledPortrayal2D(SimplePortrayal2D child,
java.lang.String label,
java.awt.Paint paint,
boolean onlyLabelWhenSelected)
Draws 10 pixels down from the [dx=0, dy=0.5] prescaled position of the Portrayal2D,
using the SansSerif 10pt font, and left alignment.
|
Modifier and Type | Method and Description |
---|---|
void |
draw(java.lang.Object object,
java.awt.Graphics2D graphics,
DrawInfo2D info)
Draw a the given object with an origin at (info.draw.x, info.draw.y),
and with the coordinate system scaled by so that 1 unit is in the x and
y directions are equal to info.draw.width and info.draw.height respectively
in pixels.
|
SimplePortrayal2D |
getChild(java.lang.Object object) |
Inspector |
getInspector(LocationWrapper wrapper,
GUIState state)
Provide an inspector for an object.
|
java.lang.String |
getLabel(java.lang.Object object,
DrawInfo2D info)
Returns a name appropriate for the object.
|
int |
getLabelScaling() |
java.lang.String |
getName(LocationWrapper wrapper)
Returns a static, one-line name for the given object that is useful for a human
to distinguish it from other objects.
|
boolean |
getOnlyLabelWhenSelected() |
boolean |
handleMouseEvent(GUIState guistate,
Manipulating2D manipulating,
LocationWrapper wrapper,
java.awt.event.MouseEvent event,
DrawInfo2D fieldPortrayalDrawInfo,
int type)
Optionally handles a mouse event.
|
boolean |
hitObject(java.lang.Object object,
DrawInfo2D range)
Return true if the given object, when drawn, intersects with a provided rectangle, for
hit testing purposes.
|
boolean |
isLabelShowing() |
void |
setLabelScaling(int val) |
void |
setLabelShowing(boolean val) |
void |
setOnlyLabelWhenSelected(boolean val) |
boolean |
setSelected(LocationWrapper wrapper,
boolean selected)
Change the portrayal state to reflect the fact that you've
been selected or not selected.
|
getStatus
public static final double DEFAULT_SCALE_X
public static final double DEFAULT_SCALE_Y
public static final double DEFAULT_OFFSET_X
public static final double DEFAULT_OFFSET_Y
public static final int ALIGN_CENTER
public static final int ALIGN_LEFT
public static final int ALIGN_RIGHT
public double scalex
public double scaley
public double offsetx
public double offsety
public int align
public java.awt.Font font
public java.awt.Paint paint
public java.lang.String label
public SimplePortrayal2D child
public boolean onlyLabelWhenSelected
public static final int NEVER_SCALE
public static final int SCALE_WHEN_SMALLER
public static final int ALWAYS_SCALE
public LabelledPortrayal2D(SimplePortrayal2D child, double offsetx, double offsety, double scalex, double scaley, java.awt.Font font, int align, java.lang.String label, java.awt.Paint paint, boolean onlyLabelWhenSelected)
public LabelledPortrayal2D(SimplePortrayal2D child, java.lang.String label)
public LabelledPortrayal2D(SimplePortrayal2D child, double scaley, java.lang.String label, java.awt.Paint paint, boolean onlyLabelWhenSelected)
public LabelledPortrayal2D(SimplePortrayal2D child, java.lang.String label, java.awt.Paint paint, boolean onlyLabelWhenSelected)
public void setOnlyLabelWhenSelected(boolean val)
public boolean getOnlyLabelWhenSelected()
public boolean isLabelShowing()
public void setLabelShowing(boolean val)
public int getLabelScaling()
public void setLabelScaling(int val)
public SimplePortrayal2D getChild(java.lang.Object object)
public void draw(java.lang.Object object, java.awt.Graphics2D graphics, DrawInfo2D info)
Portrayal2D
draw
in interface Portrayal2D
draw
in class SimplePortrayal2D
public boolean hitObject(java.lang.Object object, DrawInfo2D range)
SimplePortrayal2D
hitObject
in class SimplePortrayal2D
public boolean setSelected(LocationWrapper wrapper, boolean selected)
Portrayal
setSelected
in interface Portrayal
setSelected
in class SimplePortrayal2D
public Inspector getInspector(LocationWrapper wrapper, GUIState state)
Portrayal
getInspector
in interface Portrayal
getInspector
in class SimplePortrayal2D
public java.lang.String getLabel(java.lang.Object object, DrawInfo2D info)
public java.lang.String getName(LocationWrapper wrapper)
Portrayal
getName
in interface Portrayal
getName
in class SimplePortrayal2D
public boolean handleMouseEvent(GUIState guistate, Manipulating2D manipulating, LocationWrapper wrapper, java.awt.event.MouseEvent event, DrawInfo2D fieldPortrayalDrawInfo, int type)
SimplePortrayal2D
To indicate that the event was handled, return true. The default blank implementation of this method simply returns false. Events are first sent to portrayals selected objects, until one of them handles the event. If none handled the event, then events are sent to portrayals of objects hit by the event, until one of *them* handles the event. If still no one has handled the event, then the Display2D will route the event to built-in mechanisms such selecting the object or inspecting it.
If you're modifying or querying the model as a result of this event, be sure to lock on guistate.state.schedule before you do so.
handleMouseEvent
in class SimplePortrayal2D