|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.hdcookbook.grin.Feature com.hdcookbook.grin.features.Assembly
public class Assembly
An assembly is a feature composed of other features. It's a bit like a switch statement: Only one child of an assembly can be active at a time. This can be used to compose a menu that can be in one of several visual states. Often the parts of an assembly are groups.
Field Summary | |
---|---|
protected boolean |
activated
|
protected Feature |
currentFeature
|
protected java.lang.String[] |
partNames
|
protected Feature[] |
parts
|
Fields inherited from class com.hdcookbook.grin.Feature |
---|
name, show |
Constructor Summary | |
---|---|
Assembly(Show show)
|
Method Summary | |
---|---|
void |
addDisplayAreas(RenderContext context)
Add all of the areas that are displayed for this feature with the current frame. |
void |
addSubgraph(java.util.HashSet set)
This is an implementation method that is not intended to be called direction by applications. |
protected Feature |
createClone(java.util.HashMap clones)
This is an implementation method that should not be called direction by applications; applications should call cloneSubgraph(). |
void |
destroy()
Free any resources held by this feature. |
Feature |
findPart(java.lang.String name)
Find the part of the given name in this assembly, or null if it can't be found. |
Feature |
getCurrentPart()
Get the currently active part within this assembly. |
java.lang.String[] |
getPartNames()
Get the names of our parts. |
Feature[] |
getParts()
Get our parts, that is, our child features. |
int |
getX()
Get the upper-left hand corner of this feature as presently displayed. |
int |
getY()
Get the upper-left hand corner of this feature as presently displayed Return Integer.MAX_VALUE if this feature has no visible representation. |
void |
initialize()
Initialize this feature. |
void |
markDisplayAreasChanged()
Mark the display areas of this feature as modified for the next call to addDisplayAreas. |
boolean |
needsMoreSetup()
This is where the feaure says whether or not it needs more setup. |
void |
nextFrame()
Called from Segment with the Show lock held, to advance us to the state we should be in for the next frame. |
void |
paintFrame(java.awt.Graphics2D gr)
Paint the current state of this feature to gr. |
void |
readInstanceData(GrinDataInputStream in,
int length)
Reads in this node information from the binary file format. |
protected void |
setActivateMode(boolean mode)
Change the activated mode of this feature. |
void |
setCurrentFeature(Feature feature)
This should not be directly called by clients of the GRIN framework, unless it is done from the animation thread (within a command body, or inside an implementation of Director.nextFrame()). |
void |
setParts(java.lang.String[] partNames,
Feature[] parts)
|
protected int |
setSetupMode(boolean mode)
Change the setup mode of this feature. |
Methods inherited from class com.hdcookbook.grin.Feature |
---|
activate, cloneCommands, clonedReference, cloneSubgraph, deactivate, destroyClonedSubgraph, getName, initializeClone, isSetup, makeNewClone, resetFeature, sendFeatureSetup, setName, setup, toString, unsetup |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected java.lang.String[] partNames
protected Feature[] parts
protected Feature currentFeature
protected boolean activated
Constructor Detail |
---|
public Assembly(Show show)
Method Detail |
---|
public void setParts(java.lang.String[] partNames, Feature[] parts)
protected Feature createClone(java.util.HashMap clones)
Create a new clone of this feature. This method creates a new instance of this feature, and creates new instances of any sub-features, but it does not initialize the feature. This method is called from Feature.makeNewClone().
See the documentation of cloneSubgraph() for a list of runtime exceptions this method can throw. Subclasses that wish to support cloning must override this method.
createClone
in class Feature
clones
- A map from original feature to cloned feature. Entries
are added by Feature.makeNewClone().Feature.makeNewClone(java.util.HashMap)
,
Feature.cloneSubgraph(java.util.HashMap)
public void addSubgraph(java.util.HashSet set)
Add this node and all of its descendent nodes to the given set. The superclass definition of this method adds the current node. Any node types that have children should override this method to call the superclass version, then recursively invoke this method on each child.
addSubgraph
in class Feature
public int getX()
getX
in class Feature
public int getY()
getY
in class Feature
public java.lang.String[] getPartNames()
public Feature[] getParts()
public void initialize()
initialize
in class Feature
public void destroy()
It's possible an active segment may be destroyed. For example, the last segment a show is in when the show is destroyed will probably be active (and it will probably be an empty segment too!).
destroy
in class Feature
protected void setActivateMode(boolean mode)
Feature
setActivateMode
in class Feature
public void setCurrentFeature(Feature feature)
show.runCommand(new ActivatePartCommand(assembly, part))
This really should have been called setCurrentPart() for symmetry with getCurrentPart(). Sorry about that!
getCurrentPart()
protected int setSetupMode(boolean mode)
This method must return a guaranteed lower bound for the number of times it will send a feature setup command as a result of this call. That is, it must send at least as many feature setup commands to the segment as the number returned; sending an accurate number makes the setup process more efficient, since the time it takes to process a command scales with the number of features in a segment. When mode is false, 0 should be returned.
setSetupMode
in class Feature
public boolean needsMoreSetup()
needsMoreSetup
in class Feature
SetupClient.needsMoreSetup()
public Feature findPart(java.lang.String name)
public Feature getCurrentPart()
setCurrentFeature(com.hdcookbook.grin.Feature)
public void markDisplayAreasChanged()
See also Issue 121
markDisplayAreasChanged
in class Feature
Feature.addDisplayAreas(com.hdcookbook.grin.animator.RenderContext)
public void addDisplayAreas(RenderContext context)
A feature that displays something needs to maintain a record of it in a DrawRecord. The animation framework uses this to track what needs to be erased and drawn from frame to frame.
Clients of the GRIN framework should not call this method directly. Feature subclasses must implement this method.
addDisplayAreas
in class Feature
context
- The context for tracking rendering stateDrawRecord
public void paintFrame(java.awt.Graphics2D gr)
paintFrame
in class Feature
gr
- The place to paint to.public void nextFrame()
nextFrame
in class Feature
public void readInstanceData(GrinDataInputStream in, int length) throws java.io.IOException
Node
An implementation of this method is recommended to call in.readSuperClassData(this) as the first line of the method to read in information that is defined in the base class of this Node type.
This should only be called while initializing this object.
readInstanceData
in interface Node
in
- InputStream to read data from.length
- the number of bytes that this node's information occupies
in the InputStream. The implementation of this method is expected to
read exactly this number of bytes from the stream. This can be used
for a debugging purpose.
java.io.IOException
- if error occurs.GrinDataInputStream.readSuperClassData(Feature)
,
GrinDataInputStream.readSuperClassData(RCHandler)
,
GrinDataInputStream.readSuperClassData(Segment)
,
GrinDataInputStream.readSuperClassData(Command)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |