org.argouml.uml.diagram.collaboration.ui
Class FigClassifierRole

java.lang.Object
  extended byorg.tigris.gef.presentation.Fig
      extended byorg.tigris.gef.presentation.FigGroup
          extended byorg.tigris.gef.presentation.FigNode
              extended byorg.argouml.uml.diagram.ui.FigNodeModelElement
                  extended byorg.argouml.uml.diagram.collaboration.ui.FigClassifierRole
All Implemented Interfaces:
ArgoEventListener, ArgoNotationEventListener, Cloneable, Connecter, DelayedVChangeListener, EventListener, org.tigris.gef.di.GraphicElement, org.tigris.gef.di.GraphNode, Highlightable, KeyListener, MouseListener, NotationContext, PathContainer, PopupGenerator, PropertyChangeListener, Serializable, VetoableChangeListener

public class FigClassifierRole
extends FigNodeModelElement

Class to display graphics for a UML classifier role in a collaboration diagram.

Stereotype (if there is one) and name are displayed in the centre of the box.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.argouml.uml.diagram.ui.FigNodeModelElement
ABSTRACT, ACTIVE, invisibleAllowed, LEAF, notationProviderName, 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.Fig
_allowsSaving, _context, _dashes, _dashPeriod, _dashStyle, _filled, _h, _w, _x, _y, an, annotationOwner, annotationStatus, BORDER, MIN_SIZE, plotter
 
Constructor Summary
FigClassifierRole()
          Constructor for a new classifier role.
FigClassifierRole(GraphModel gm, Layer lay, Object node)
          Variant constructor that associates the classifier role with a particular model element.
 
Method Summary
 Object clone()
          Version of the clone to ensure all sub-figs are copied.
 Color getFillColor()
           
 boolean getFilled()
           
 Color getLineColor()
           
 int getLineWidth()
           
 Dimension getMinimumSize()
          Work out the minimum size that this Fig can be.
protected  void initNotationProviders(Object own)
          Create the NotationProviders.
 Selection makeSelection()
           
protected  void modelChanged(PropertyChangeEvent mee)
          This is called after any part of the UML MModelElement has changed.
 String placeString()
          Return the default name to use for this classifier role.
protected  void setBoundsImpl(int x, int y, int w, int h)
          Override setBounds to keep shapes looking right.
 void setFillColor(Color col)
           
 void setFilled(boolean f)
           
 void setLineColor(Color col)
           
 void setLineWidth(int w)
           
protected  void textEdited(FigText ft)
          Called after text has been edited directly on the screen.
protected  void textEditStarted(FigText ft)
          This method is called when the user doubleclicked on the text field, and starts editing.
protected  void updateListeners(Object oldOwner, Object newOwner)
          Implementations of this method should register/unregister the fig for all (model)events.
protected  void updateNameText()
          Adjust the fig in the light of some change to the model.
protected  void updateStereotypeText()
          Update the stereotype text.
 
Methods inherited from class org.argouml.uml.diagram.ui.FigNodeModelElement
addElementListener, addElementListener, addElementListener, addEnclosedFig, allowRemoveFromDiagram, buildModifierPopUp, buildVisibilityPopUp, calcBounds, classNameAndBounds, createFeatureIn, damage, delayedVetoableChange, deleteFromModel, displace, elementOrdering, enableSizeChecking, finalize, forceRepaintShadow, getBigPort, getContextNotation, getDiElement, getEnclosedFigs, getEncloser, getEnclosingFig, getItalicLabelFont, getItemUID, getLabelFont, getName, getNameBounds, getNameFig, getPopUpActions, getPopupAddOffset, getRemoveDelegate, getShadowSize, getStereotypeFig, getTipString, hit, hitClarifier, isCheckSize, isDragConnectable, isEditable, isPartlyOwner, isPartlyOwner, isPathVisible, isReadyToEdit, keyPressed, keyReleased, keyTyped, mouseClicked, notationAdded, notationChanged, notationProviderAdded, notationProviderRemoved, notationRemoved, paint, paintClarifiers, postLoad, propertyChange, removeAllElementListeners, removeElementListener, removeEnclosedFig, removeFromDiagram, removeFromDiagramImpl, renderingChanged, setBigPort, setContextNotation, setDiElement, setEditable, setEncloser, setEnclosingFig, setItemUID, setLayer, setName, setNameFig, setOwner, setPathVisible, setReadyToEdit, setShadowSize, setShadowSizeFriend, setSuppressCalcBounds, setVisible, showHelp, updateBounds, vetoableChange
 
Methods inherited from class org.tigris.gef.presentation.FigNode
addFigEdge, bindPort, cleanUp, contains, deepHitPort, dispose, endTrans, getFigEdges, getFigEdges, getHighlight, getPortFig, getPortFigs, getPortSector, hidePorts, hitPort, hitPort, isBlinkPorts, mouseEntered, mouseExited, mousePressed, mouseReleased, paint, removeFigEdge, removePort, setBlinkPorts, setHighlight, showPorts, superTranslate, translateImpl, updateEdges
 
Methods inherited from class org.tigris.gef.presentation.FigGroup
addFig, addFigs, deepSelect, elements, getDisplayedFigs, getExtraFrameSpace, getFigAt, getFigCount, getFigPosn, getFigs, getFont, getFontFamily, getFontSize, getPrivateData, getSubFigBounds, getTextColor, getTextFillColor, getTextFilled, hitFig, isReshapable, isRotatable, iterator, parseDynObjects, removeAll, removeFig, setExtraFrameSpace, setFigs, setFigs, setFont, setFontFamily, setFontSize, setPrivateData, setTextColor, setTextFillColor, setTextFilled
 
Methods inherited from class org.tigris.gef.presentation.Fig
addAnnotation, addPoint, addPropertyChangeListener, align, center, connectionPoint, contains, contains, countCornersContained, createDrag, firePropChange, firePropChange, firePropChange, getAnnotationOwner, getAnnotationStrategy, getBounds, getBounds, getCenter, getClosestPoint, getContext, getDashed, getDashed01, getDashedString, getFilled01, getFirstPoint, getGravityPoints, getGroup, getHalfHeight, getHalfWidth, getHandleBox, getHeight, getId, getLastPoint, getLayer, getLocation, getLocked, getNumPoints, getOwner, getPerimeterLength, getPoint, getPoints, getPreferredSize, getResource, getSingle, getSize, getTrapRect, getUseTrapRect, getVisState, getWidth, getX, getXs, getY, getYs, hasFillColor, hasLineColor, initAnnotations, insertPoint, intersects, intersectsPerimeter, isAnnotation, isCopyable, isCutable, isLowerRightResizable, isMovable, isRemoveStarted, isResizable, isSelectable, isSelected, isVisible, pointAlongPerimeter, postSave, preSave, print, redraw, removeAnnotation, removePoint, removePropertyChangeListener, reorder, routingRect, savingAllowed, setAnnotationOwner, setAnnotationStatus, setAnnotationStrategy, setBounds, setBounds, setCenter, setContext, setDashed, setDashedString, setGroup, setHandleBox, setHeight, setLocation, setLocation, setLocked, setMovable, setNumPoints, setPoint, setPoint, setPoint, setPoint, setPoints, setResizable, setResource, setSavingAllowed, setSize, setSize, setWidth, setX, setXs, setY, setYs, stuffBounds, stuffPointAlongPerimeter, translate, translateAnnotations, unsetAnnotationOwner, updateAnnotationPositions, 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, mouseExited, mousePressed, mouseReleased
 
Methods inherited from interface org.argouml.cognitive.Highlightable
getHighlight, setHighlight
 
Methods inherited from interface org.tigris.gef.di.GraphicElement
getId, getOwner, routingRect
 

Constructor Detail

FigClassifierRole

public FigClassifierRole()
Constructor for a new classifier role.

An invisible FigRect as the point of contact for connections (FigNodeModelElement#bigPort), with matching rectangle providing the graphic rendering (#cover). Stereotype and name are rendered centrally in the rectangle.


FigClassifierRole

public FigClassifierRole(GraphModel gm,
                         Layer lay,
                         Object node)
Variant constructor that associates the classifier role with a particular model element.

Classifier role is constructed with FigClassifierRole().

Parameters:
gm - The graph model to use. Ignored in this implementation.
lay - The layer
node - The model element object to associate with this Fig.
Method Detail

initNotationProviders

protected void initNotationProviders(Object own)
Description copied from class: FigNodeModelElement
Create the NotationProviders.

Overrides:
initNotationProviders in class FigNodeModelElement
Parameters:
own - the current owner
See Also:
FigNodeModelElement.initNotationProviders(java.lang.Object)

placeString

public String placeString()
Return the default name to use for this classifier role.

Seems to be immediately overwritten by the empty string, but may be useful in defining the default name size?

Overrides:
placeString in class FigNodeModelElement
Returns:
The string to use ("new Classifier Role" in this case).

clone

public Object clone()
Version of the clone to ensure all sub-figs are copied.

Uses the generic superclass clone which gives a vector of all the figs. Then initialize our instance variables from this vector.

Overrides:
clone in class FigNodeModelElement
Returns:
A new copy of the the current fig.
See Also:
Object.clone()

updateStereotypeText

protected void updateStereotypeText()
Update the stereotype text.

If the stereotype text is non-existant, we must make sure it is marked not displayed, and update the display accordingly.

Similarly if there is text, we must make sure it is marked displayed.

Overrides:
updateStereotypeText in class FigNodeModelElement

setLineColor

public void setLineColor(Color col)
See Also:
Fig.setLineColor(java.awt.Color)

getLineColor

public Color getLineColor()
See Also:
Fig.getLineColor()

setFillColor

public void setFillColor(Color col)
See Also:
Fig.setFillColor(java.awt.Color)

getFillColor

public Color getFillColor()
See Also:
Fig.getFillColor()

setFilled

public void setFilled(boolean f)
See Also:
Fig.setFilled(boolean)

getFilled

public boolean getFilled()
See Also:
Fig.getFilled()

setLineWidth

public void setLineWidth(int w)
See Also:
Fig.setLineWidth(int)

getLineWidth

public int getLineWidth()
See Also:
Fig.getLineWidth()

getMinimumSize

public Dimension getMinimumSize()
Work out the minimum size that this Fig can be.

This should be the size of the stereotype + name + padding. However we allow for the possible case that the cover or big port could be bigger still.

Returns:
The minimum size of this fig.

setBoundsImpl

protected void setBoundsImpl(int x,
                             int y,
                             int w,
                             int h)
Override setBounds to keep shapes looking right.

Set the bounds of all components of the Fig. The stereotype (if any) and name are centred in the fig.

We allow for the requested bounds being too small, and impose our minimum size if necessary.

Parameters:
x - X coordinate of upper left corner
y - Y coordinate of upper left corner
w - width of bounding box
h - height of bounding box

textEdited

protected void textEdited(FigText ft)
                   throws PropertyVetoException
Called after text has been edited directly on the screen.

Overrides:
textEdited in class FigNodeModelElement
Parameters:
ft - The text that was edited.
Throws:
PropertyVetoException - by the parser
See Also:
FigNodeModelElement.textEdited(org.tigris.gef.presentation.FigText)

textEditStarted

protected void textEditStarted(FigText ft)
Description copied from class: FigNodeModelElement
This method is called when the user doubleclicked on the text field, and starts editing. Subclasses should overrule this field to e.g. supply help to the user about the used format.

It is also possible to alter the text to be edited already here, e.g. by adding the stereotype in front of the name, by calling notationProviderName.putValue("fullyHandleStereotypes", true);, but that seems not user-friendly. See issue 3838.

Overrides:
textEditStarted in class FigNodeModelElement
Parameters:
ft - the FigText that will be edited and contains the start-text
See Also:
FigNodeModelElement.textEditStarted(org.tigris.gef.presentation.FigText)

updateNameText

protected void updateNameText()
Adjust the fig in the light of some change to the model.

Overrides:
updateNameText in class FigNodeModelElement
See Also:
FigNodeModelElement.updateNameText()

modelChanged

protected void modelChanged(PropertyChangeEvent mee)
Description copied from class: FigNodeModelElement
This is called after any part of the UML MModelElement has changed. This method automatically updates the name FigText. Subclasses should override and update other parts.

Overrides:
modelChanged in class FigNodeModelElement
Parameters:
mee - the ModelElementEvent that caused the change
See Also:
FigNodeModelElement.modelChanged(java.beans.PropertyChangeEvent)

updateListeners

protected void updateListeners(Object oldOwner,
                               Object newOwner)
Description copied from class: FigNodeModelElement
Implementations of this method should register/unregister the fig for all (model)events. For FigNodeModelElement only the fig itself is registered as listening to events fired by the owner itself. But for, for example, FigClass the fig must also register for events fired by the operations and attributes of the owner.

An explanation of the original purpose of this method is given in issue 1321.

This function is used in UMLDiagram, which removes all listeners to all Figs when a diagram is not displayed, and restore them when it becomes visible again.

In this case, it is imperative that indeed ALL listeners are updated, since they are ALL removed by the call to removeElementListener.

Additionally, this function may be used by the modelChanged() function.

In this case, it is also imperative that all listeners get removed / added.

Overrides:
updateListeners in class FigNodeModelElement
Parameters:
newOwner - null, or the owner of this. The former means that listeners have to be removed, the latter that they have to be set. TODO: Should this not be boolean, to clarify?
See Also:
org.argouml.uml.diagram.ui.FigNodeModelElement#updateListeners(java.lang.Object)

makeSelection

public Selection makeSelection()
Overrides:
makeSelection in class FigNodeModelElement
See Also:
Fig.makeSelection()


ArgoUML © 1996-2006ArgoUML HomepageArgoUML Developers' pageArgoUML Cookbook