|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectsim.portrayal3d.SimplePortrayal3D
sim.portrayal3d.simple.LabelledPortrayal3D
public class LabelledPortrayal3D
A wrapper for other Portrayal3Ds which also draws a textual label. When you create this LabelledPortrayal3D, you will pass in an underlying Portrayal3D which is supposed to represent the actual object; LabelledPortrayal3D will then add on an underlying label. If the object will draw itself (it's its own Portrayal3D), you can signify this by passing in null for the underlying Portrayal3D.
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. Beware that every time you change a label, the object has to generate a new label object and insert it into the system. This is expensive.
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 font for the label. You can also provide a scale for the text relative to the labelled object: a scale of 1.0f (the default) is fairly reasonable for small objects. The label is drawn at the (0.5,0.5,0.5) corner of the object by default: you can change this offset in the constructor if you like.
The label will always be drawn directly facing the viewer regardless of the rotation of the model.
Labelled
Field Summary | |
---|---|
protected SimplePortrayal3D |
child
|
java.awt.Color |
color
|
static javax.media.j3d.Transform3D |
DEFAULT_LABEL_OFFSET
|
java.awt.Font |
font
|
java.lang.String |
label
|
javax.media.j3d.Transform3D |
offset
|
float |
scale
|
Fields inherited from class sim.portrayal3d.SimplePortrayal3D |
---|
DEFAULT_APPEARANCE, parentPortrayal |
Constructor Summary | |
---|---|
LabelledPortrayal3D(SimplePortrayal3D child,
float offsetx,
float offsety,
float offsetz,
java.awt.Font font,
java.lang.String label,
java.awt.Color color,
float scale,
boolean onlyLabelWhenSelected)
|
|
LabelledPortrayal3D(SimplePortrayal3D child,
java.lang.String label)
|
|
LabelledPortrayal3D(SimplePortrayal3D child,
java.lang.String label,
java.awt.Color color,
boolean onlyLabelWhenSelected)
|
|
LabelledPortrayal3D(SimplePortrayal3D child,
javax.media.j3d.Transform3D offset,
java.awt.Font font,
java.lang.String label,
java.awt.Color color,
float scale,
boolean onlyLabelWhenSelected)
|
Method Summary | |
---|---|
SimplePortrayal3D |
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,
javax.media.j3d.TransformGroup j3dModel)
Returns a name appropriate for the object. |
javax.media.j3d.TransformGroup |
getModel(java.lang.Object obj,
javax.media.j3d.TransformGroup j3dModel)
Provides a TransformGroup which defines the node(s) to place in the scenegraph. |
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 |
isLabelShowing()
|
javax.media.j3d.PolygonAttributes |
polygonAttributes()
Provides a PolygonAttributes which can be modified to change the underlying model's attributes (culling, vertex versus point versus fill). |
void |
setLabelShowing(boolean val)
|
void |
setOnlyLabelWhenSelected(boolean val)
|
void |
setParentPortrayal(FieldPortrayal3D p)
Sets the parent portrayal (a FieldPortrayal3D). |
boolean |
setSelected(LocationWrapper wrapper,
boolean selected)
If the object is selected, adds it to a hash table of selected objects for which this SimplePortrayal3D's isSelected() method will return TRUE. |
void |
updateSwitch(javax.media.j3d.Switch jswitch,
java.lang.Object object)
|
Methods inherited from class sim.portrayal3d.SimplePortrayal3D |
---|
appearanceForColor, appearanceForColors, appearanceForImage, clearPickableFlags, getStatus, isSelected, setAppearanceFlags, setPickableFlags, setPickableFlags |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final javax.media.j3d.Transform3D DEFAULT_LABEL_OFFSET
public float scale
public java.awt.Color color
public javax.media.j3d.Transform3D offset
public java.awt.Font font
protected SimplePortrayal3D child
public java.lang.String label
Constructor Detail |
---|
public LabelledPortrayal3D(SimplePortrayal3D child, java.lang.String label)
public LabelledPortrayal3D(SimplePortrayal3D child, java.lang.String label, java.awt.Color color, boolean onlyLabelWhenSelected)
public LabelledPortrayal3D(SimplePortrayal3D child, float offsetx, float offsety, float offsetz, java.awt.Font font, java.lang.String label, java.awt.Color color, float scale, boolean onlyLabelWhenSelected)
public LabelledPortrayal3D(SimplePortrayal3D child, javax.media.j3d.Transform3D offset, java.awt.Font font, java.lang.String label, java.awt.Color color, float scale, boolean onlyLabelWhenSelected)
Method Detail |
---|
public javax.media.j3d.PolygonAttributes polygonAttributes()
Portrayal3D
polygonAttributes
in interface Portrayal3D
polygonAttributes
in class SimplePortrayal3D
public Inspector getInspector(LocationWrapper wrapper, GUIState state)
Portrayal
getInspector
in interface Portrayal
getInspector
in class SimplePortrayal3D
public java.lang.String getName(LocationWrapper wrapper)
Portrayal
getName
in interface Portrayal
getName
in class SimplePortrayal3D
public void setParentPortrayal(FieldPortrayal3D p)
SimplePortrayal3D
setParentPortrayal
in class SimplePortrayal3D
public boolean setSelected(LocationWrapper wrapper, boolean selected)
SimplePortrayal3D
There are two implications to this approach. First, it means that after you've selected an object, there's a hash table attached to its portrayal. If you're using the same portrayal for lots of stuff, that's no big deal. But if you've got per-object portrayals and a lot of objects (or if the objects are themselves SimplePortrayal3D subclasses) then that's a fair number of hash tables. This is a minor memory issue but if you don't care about testing for whether you've been selected or not, you could just override this method to always return TRUE (and don't call super.selected(...) ) and the hash table will never be created. Note that isSelected will always return FALSE for your portrayal in this situation.
Second, though you can test for selection with the isSelected() method, if you want to, say, change the look of your portrayal based on whether or not it's selected, you will need to test isSelected() each time getModel() is called and modify the model accordingly. This could be a bit expensive. We're working on an approach for you to be able to test if the object was RECENTLY selected or deselected so you could only test then, but it's nontrivial to do without using up a lot of memory.
setSelected
in interface Portrayal
setSelected
in class SimplePortrayal3D
public java.lang.String getLabel(java.lang.Object object, javax.media.j3d.TransformGroup j3dModel)
public void setOnlyLabelWhenSelected(boolean val)
public boolean getOnlyLabelWhenSelected()
public boolean isLabelShowing()
public void setLabelShowing(boolean val)
public SimplePortrayal3D getChild(java.lang.Object object)
public void updateSwitch(javax.media.j3d.Switch jswitch, java.lang.Object object)
public javax.media.j3d.TransformGroup getModel(java.lang.Object obj, javax.media.j3d.TransformGroup j3dModel)
Portrayal3D
You should hang your model off of the TransformGroup provided. You should not transform that TransformGroup in any way -- it is used elsewhere. Instead if you wish to transform your model (rotate it etc.) you should add your own additional TransformGroup as necessary.
The provided TransformGroup can be null; in this case you need to create and return the outer TransformGroup for the object. If the provided TransformGroup is non-null, you should modify it and return the same.
SimplePortrayals should assume the following contract: at the point that getModel(...) is called, the parentPortrayal will have already been set if it exists, else it will be null.
getModel
in interface Portrayal3D
getModel
in class SimplePortrayal3D
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |