|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.tigris.gef.presentation.Fig
org.tigris.gef.presentation.FigGroup
org.tigris.gef.presentation.FigNode
org.argouml.uml.diagram.ui.FigNodeModelElement
org.argouml.uml.diagram.static_structure.ui.FigClass
Class to display graphics for a UML Class in a diagram.
Nested Class Summary |
Nested classes inherited from class org.argouml.uml.diagram.ui.FigNodeModelElement |
|
Field Summary | |
private static int |
ATTRIBUTES_POSN
|
private static int |
BLINDER_POSN
|
private CompartmentFigText |
highlightedFigText
Text highlighted by mouse actions on the diagram. |
private boolean |
newlyCreated
Flag to indicate that we have just been created. |
private static int |
OPERATIONS_POSN
|
private Object |
resident
Manages residency of a class within a component on a deployment diagram. |
Fields inherited from class org.argouml.uml.diagram.ui.FigNodeModelElement |
ABSTRACT, ACTIVE, LEAF, POPUP_ADD_OFFSET, ROOT, ROWHEIGHT, SHADOW_COLOR_ALPHA, SHADOW_COLOR_VALUE, STEREOHEIGHT |
Fields inherited from class org.tigris.gef.presentation.FigNode |
_blinkPorts, _highlight, ang135, ang225, ang315, ang45 |
Fields inherited from class org.tigris.gef.presentation.FigGroup |
_dynObjects, _extraFrameSpace |
Fields inherited from class org.tigris.gef.presentation.Fig |
_allowsSaving, _context, _dashes, _dashPeriod, _dashStyle, _displayed, _fillColor, _filled, _group, _h, _layer, _lineColor, _lineWidth, _locked, _resource, _selected, _shown, _w, _x, _y, an, annotationOwner, annotationStatus, BORDER, MIN_SIZE |
Constructor Summary | |
FigClass()
Main constructor for a FigClass . |
|
FigClass(org.tigris.gef.graph.GraphModel gm,
Object node)
Constructor for use if this figure is created for an existing class node in the metamodel. |
Method Summary | |
String |
classNameAndBounds()
USED BY PGML.tee. |
protected void |
createFeatureIn(org.tigris.gef.presentation.FigGroup fg,
InputEvent ie)
Create a new "feature" in the owner fig. |
Rectangle |
getAttributesBounds()
|
private org.tigris.gef.presentation.FigGroup |
getAttributesFig()
|
Dimension |
getMinimumSize()
Gets the minimum size permitted for a class on the diagram. |
protected org.tigris.gef.presentation.FigText |
getNextVisibleFeature(org.tigris.gef.presentation.FigGroup fgVec,
org.tigris.gef.presentation.FigText ft,
int i)
|
Rectangle |
getOperationsBounds()
|
private org.tigris.gef.presentation.FigGroup |
getOperationsFig()
|
Vector |
getPopUpActions(MouseEvent me)
Build a collection of menu items relevant for a right-click popup menu on a Class. |
protected org.tigris.gef.presentation.FigText |
getPreviousVisibleFeature(org.tigris.gef.presentation.FigGroup fgVec,
org.tigris.gef.presentation.FigText ft,
int i)
|
boolean |
isAttributesVisible()
Returns the status of the attribute field. |
boolean |
isOperationsVisible()
Returns the status of the operation field. |
void |
keyPressed(KeyEvent ke)
|
org.tigris.gef.base.Selection |
makeSelection()
|
protected void |
modelChanged(PropertyChangeEvent mee)
Handles changes of the model. |
void |
mouseClicked(MouseEvent me)
If the user double clicks on any part of this FigNode, pass it down to one of the internal Figs. |
void |
mouseExited(MouseEvent me)
|
String |
placeString()
Default Reply text to be shown while placing node in diagram. |
void |
renderingChanged()
Rerenders the fig if needed. |
void |
setAttributesVisible(boolean isVisible)
Set the visibility of the attributes compartment. |
void |
setBounds(int x,
int y,
int w,
int h)
Sets the bounds, but the size will be at least the one returned by getMinimumSize() , unless checking of size is disabled. |
void |
setEnclosingFig(org.tigris.gef.presentation.Fig encloser)
Updates the modelelement container if the fig is moved in or out another fig. |
void |
setFillColor(Color lColor)
|
void |
setLineColor(Color lColor)
|
void |
setOperationsVisible(boolean isVisible)
Set the visibility of the operations compartment. |
protected void |
textEdited(org.tigris.gef.presentation.FigText ft)
This method is called after the user finishes editing a text field that is in the FigNodeModelElement. |
void |
translate(int dx,
int dy)
|
protected CompartmentFigText |
unhighlight()
|
protected void |
updateAbstract()
Updates the name if modelchanged receives an "isAbstract" event. |
protected void |
updateAttributes()
Updates the attributes in the fig. |
protected void |
updateListeners(Object newOwner)
Implementations of this method should register/unregister the fig for all (model)events. |
protected void |
updateNameText()
Updates the text of the name FigText. |
protected void |
updateOperations()
Updates the operations box. |
protected void |
updateStereotypeText()
Updates the text of the sterotype FigText. |
Methods inherited from class org.tigris.gef.presentation.FigNode |
addFigEdge, bindPort, cleanUp, contains, deepHitPort, delete, dispose, endTrans, getBlinkPorts, getFigEdges, getFigEdges, getHighlight, getPortFig, getPortFigs, getPortSector, hidePorts, hitPort, hitPort, isBlinkPorts, isDragConnectable, mouseEntered, mousePressed, mouseReleased, removeFigEdge, removePort, setBlinkPorts, setHighlight, showPorts, superTranslate, updateEdges |
Methods inherited from class org.tigris.gef.presentation.FigGroup |
addFigs, deepSelect, elements, getDisplayedFigs, getExtraFrameSpace, getFigAt, getFigs, getFigs, getFont, getFontFamily, getFontSize, getPrivateData, getSize, getSubFigBounds, getTextColor, getTextFillColor, getTextFilled, hitFig, isReshapable, isRotatable, iterator, parseDynObjects, removeAll, removeFig, setExtraFrameSpace, setFigs, setFigs, setFilled, setFont, setFontFamily, setFontSize, setLineWidth, setPrivateData, setTextColor, setTextFillColor, setTextFilled |
Methods inherited from class org.tigris.gef.presentation.Fig |
addAnnotation, addPoint, addPropertyChangeListener, align, center, connectionPoint, contains, contains, countCornersContained, createDrag, drawDashedLine, drawDashedPerimeter, firePropChange, firePropChange, firePropChange, getAnnotationOwner, getAnnotationStrategy, getBounds, getBounds, getClosestPoint, getContext, getDashed, getDashed01, getDashedString, getFillColor, getFilled, getFilled01, getFirstPoint, getGravityPoints, getGroup, getHalfHeight, getHalfWidth, getHandleBox, getHeight, getId, getLastPoint, getLayer, getLineColor, getLineWidth, getLocation, getLocked, getNumPoints, getOwner, getPerimeterLength, getPoint, getPoints, getPreferredSize, getResource, getSingle, getTrapRect, getUseTrapRect, getVisState, getWidth, getX, getXs, getY, getYs, hasFillColor, hasLineColor, initAnnotations, insertPoint, intersects, intersectsPerimeter, isAnnotation, isCopieable, isCopyable, isCutable, isDisplayed, isLowerRightResizable, isMovable, isResizable, isSelected, isVisible, OK, pointAlongPerimeter, postSave, preSave, print, redraw, removeAnnotation, removeAnnotation, removePoint, removePropertyChangeListener, reorder, routingRect, savingAllowed, setAnnotationOwner, setAnnotationStatus, setAnnotationStrategy, setBounds, setCenter, setContext, setDashed, setDashedString, setDisplayed, setGroup, setHandleBox, setHeight, setLayer, setLocation, setLocation, setLocked, setMovable, setNumPoints, setPoint, setPoint, setPoint, setPoint, setPoints, setPoints, setPoints, setPoints, setPoints, setResizable, setResource, setSavingAllowed, setSelected, setSingle, setSize, setSize, setVisible, setVisState, setWidth, setX, setXs, setY, setYs, stuffBounds, stuffPointAlongPerimeter, translateAnnotations, unsetAnnotationOwner, updateAnnotationPositions, updateVisState, within |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface java.awt.event.MouseListener |
mouseEntered, mousePressed, mouseReleased |
Methods inherited from interface org.tigris.gef.ui.Highlightable |
addPropertyChangeListener, removePropertyChangeListener |
Field Detail |
private static final int BLINDER_POSN
private static final int OPERATIONS_POSN
private static final int ATTRIBUTES_POSN
private CompartmentFigText highlightedFigText
private boolean newlyCreated
private Object resident
Manages residency of a class within a component on a deployment diagram.
Constructor Detail |
public FigClass()
FigClass
.
Parent FigNodeModelElement
will have created the main
box FigNodeModelElement.getBigPort()
and its name FigNodeModelElement.getNameFig()
and stereotype (@link #getStereotypeFig()}. This constructor
creates a box for the attributes and operations.
The properties of all these graphic elements are adjusted appropriately. The main boxes are all filled and have outlines.
For reasons I don't understand the stereotype is created in a box with lines. So we have to created a blanking rectangle to overlay the bottom line, and avoid four compartments showing.
There is some complex logic to allow for the possibility that stereotypes may not be displayed (unlike operations and attributes this is not a standard thing for UML). Some care is needed to ensure that additional space is not added, each time a stereotyped class is loaded.
There is a particular problem when loading diagrams with stereotyped classes. Because we create a FigClass indicating the stereotype is not displayed, we then add extra space for such classes when they are first rendered. This ought to be fixed by correctly saving the class dimensions, but that needs more work. The solution here is to use a simple flag to indicate the FigClass has just been created.
Warning. Much of the graphics positioning is hard
coded. The overall figure is placed at location (10,10). The
name compartment (in the parent FigNodeModelElement
is
21 pixels high. The stereotype compartment is created 15 pixels
high in the parent, but we change it to 19 pixels, 1 more than
(FigNodeModelElement.STEREOHEIGHT
here. The attribute and operations boxes
are created at 19 pixels, 2 more than FigNodeModelElement.ROWHEIGHT
.
CAUTION: This constructor (with no arguments) is the only one that does enableSizeChecking(false), all others must set it true. This is because this constructor is the only one called when loading a project. In this case, the parsed size must be maintained.
public FigClass(org.tigris.gef.graph.GraphModel gm, Object node)
Set the figure's name according to this node. This is used when the user click's on 'add to diagram' in the navpane. Don't know if this should rather be done in one of the super classes, since similar code is used in FigInterface.java etc. Andreas Rueckert <a_rueckert@gmx.net>
gm
- Not actually used in the current implementationnode
- The UML object being placed.Method Detail |
public String placeString()
FigNodeModelElement
placeString
in class FigNodeModelElement
FigNodeModelElement.placeString()
public org.tigris.gef.base.Selection makeSelection()
makeSelection
in class FigNodeModelElement
Fig.makeSelection()
public Vector getPopUpActions(MouseEvent me)
getPopUpActions
in interface org.tigris.gef.ui.PopupGenerator
getPopUpActions
in class FigNodeModelElement
me
- a mouse event
PopupGenerator.getPopUpActions(java.awt.event.MouseEvent)
public Rectangle getOperationsBounds()
getOperationsBounds
in interface OperationsCompartmentContainer
public Rectangle getAttributesBounds()
getAttributesBounds
in interface AttributesCompartmentContainer
private org.tigris.gef.presentation.FigGroup getOperationsFig()
private org.tigris.gef.presentation.FigGroup getAttributesFig()
public boolean isOperationsVisible()
isOperationsVisible
in interface OperationsCompartmentContainer
public boolean isAttributesVisible()
isAttributesVisible
in interface AttributesCompartmentContainer
public void setAttributesVisible(boolean isVisible)
AttributesCompartmentContainer
setAttributesVisible
in interface AttributesCompartmentContainer
isVisible
- true if the attribute compartment is visiblepublic void setOperationsVisible(boolean isVisible)
OperationsCompartmentContainer
setOperationsVisible
in interface OperationsCompartmentContainer
isVisible
- true if the operation compartment is visiblepublic String classNameAndBounds()
classNameAndBounds
in class FigNodeModelElement
org.tigris.gef.presentation.Fig#getNameAndBounds()
public Dimension getMinimumSize()
Parts of this are hardcoded, notably the fact that the name compartment has a minimum height of 21 pixels.
public void setFillColor(Color lColor)
Fig.setFillColor(java.awt.Color)
public void setLineColor(Color lColor)
Fig.setLineColor(java.awt.Color)
public void translate(int dx, int dy)
Fig.translate(int, int)
public void mouseExited(MouseEvent me)
mouseExited
in interface MouseListener
MouseListener.mouseExited(java.awt.event.MouseEvent)
public void keyPressed(KeyEvent ke)
keyPressed
in interface KeyListener
keyPressed
in class FigNodeModelElement
KeyListener.keyPressed(java.awt.event.KeyEvent)
protected void textEdited(org.tigris.gef.presentation.FigText ft) throws PropertyVetoException
FigNodeModelElement
textEdited
in class FigNodeModelElement
ft
- the FigText that has been edited and contains the new text
PropertyVetoException
- thrown when new text represents
an unacceptable valueFigNodeModelElement.textEdited(org.tigris.gef.presentation.FigText)
protected org.tigris.gef.presentation.FigText getPreviousVisibleFeature(org.tigris.gef.presentation.FigGroup fgVec, org.tigris.gef.presentation.FigText ft, int i)
fgVec
- the FigGroupft
- the Figtexti
- get the fig before fig i
protected org.tigris.gef.presentation.FigText getNextVisibleFeature(org.tigris.gef.presentation.FigGroup fgVec, org.tigris.gef.presentation.FigText ft, int i)
fgVec
- the FigGroupft
- the Figtexti
- get the fig after fig i
protected void createFeatureIn(org.tigris.gef.presentation.FigGroup fg, InputEvent ie)
FigNodeModelElement
createFeatureIn
in class FigNodeModelElement
fg
- The fig group to which this appliesie
- The input event that triggered us. In the current
implementation a mouse double click.FigNodeModelElement.createFeatureIn(
org.tigris.gef.presentation.FigGroup, java.awt.event.InputEvent)
protected CompartmentFigText unhighlight()
protected void modelChanged(PropertyChangeEvent mee)
modelChanged
in class FigNodeModelElement
mee
- the ModelElementEvent that caused the changeFigNodeModelElement.modelChanged(java.beans.PropertyChangeEvent)
protected void updateStereotypeText()
FigNodeModelElement
updateStereotypeText
in class FigNodeModelElement
FigNodeModelElement.updateStereotypeText()
public void setEnclosingFig(org.tigris.gef.presentation.Fig encloser)
FigNodeModelElement
setEnclosingFig
in class FigNodeModelElement
Fig.setEnclosingFig(org.tigris.gef.presentation.Fig)
public void setBounds(int x, int y, int w, int h)
getMinimumSize()
, unless checking of size is disabled.If the required height is bigger, then the additional height is equally distributed among all figs (i.e. compartments), such that the cumulated height of all visible figs equals the demanded height
. Some of this has "magic numbers" hardcoded in. In particular there is a knowledge that the minimum height of a name compartment is 21 pixels.
x
- Desired X coordinate of upper left cornery
- Desired Y coordinate of upper left cornerw
- Desired width of the FigClassh
- Desired height of the FigClasspublic void mouseClicked(MouseEvent me)
FigNodeModelElement
mouseClicked
in interface MouseListener
mouseClicked
in class FigNodeModelElement
MouseListener.mouseClicked(java.awt.event.MouseEvent)
protected void updateAttributes()
protected void updateOperations()
public void renderingChanged()
FigNodeModelElement
renderingChanged
in class FigNodeModelElement
FigNodeModelElement.renderingChanged()
protected void updateNameText()
FigNodeModelElement
updateNameText
in class FigNodeModelElement
FigNodeModelElement.updateNameText()
protected void updateAbstract()
protected void updateListeners(Object newOwner)
FigNodeModelElement
updateListeners
in class FigNodeModelElement
newOwner
- the new owner for the listenersFigNodeModelElement.updateListeners(Object)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ArgoUML © 1996-2004 (20050222) | ArgoUML Homepage | ArgoUML Developers' page | ArgoUML Cookbook |