kaapo.project.graphics
Class SolidGraphics

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by kaapo.project.graphics.DCGraphics
                  extended by kaapo.project.graphics.SolidGraphics
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Observer
Direct Known Subclasses:
DataStoreGraphics, ProcessGraphics, TextGraphics, UseCaseGraphics

public abstract class SolidGraphics
extends DCGraphics

A general DCGraphics class for solid, auto-resizing elements. Available shape types are rectangle, round rectange, ellipse, circle and no-boundary. The graphics component contains one text section, possibly multi-line.

See Also:
Serialized Form

Nested Class Summary
static class SolidGraphics.BoundaryType
           
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  String attrname
           
protected  SolidGraphics.BoundaryType boundaryType
           
protected  Shape drawShape
           
protected  ElementWrapper ewrapper
           
protected  double minMargin
           
protected  boolean observerEnabled
          Used to disable or enable DC observing on demand.
protected static double OUTER_SHAPE_MARGIN
           
protected  Shape outerShape
           
protected static double ROUND_RECTANGLE_ARC_SIZE
           
protected  DirectTextArea textArea
           
 
Fields inherited from class kaapo.project.graphics.DCGraphics
dc, dcw, pm
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SolidGraphics(DiagramComponent dc, ElementWrapper ew, ProjectManager pm, String attrname, SolidGraphics.BoundaryType boundaryType)
          Constructs the element with default margin.
SolidGraphics(DiagramComponent dc, ElementWrapper ew, ProjectManager pm, String attrname, SolidGraphics.BoundaryType boundaryType, double minMargin)
          Constructs the element.
 
Method Summary
protected  Shape buildShape(double x, double y, double width, double height)
          Builds the outer boundary shape.
protected  void disableObserver()
           
protected  void enableObserver()
           
 Shape getOuterBoundary()
          Returns the outer boundary (shape) of graphical representation of the element.
protected  Dimension minSize(double innerWidth, double innerHeight)
          Calculate minimum size for the element so that the element fully encloses the rectangle given.
protected  void paintComponent(Graphics g)
           
protected  void setWrapperSelected()
           
 void update(Observable subject, Object message)
          This method is called whenever the observed object is changed.
 void updateDCGraphics()
          Update the graphical appearance after element properties have been changed.
 
Methods inherited from class kaapo.project.graphics.DCGraphics
calcConnectionIntersectPoint, getConnectionBoundary, getDiagramComponent, getDiagramComponentWrapper, getHotSpots, getProjectManager, removeObserver, updateDCGraphicsLater
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getWidth, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ROUND_RECTANGLE_ARC_SIZE

protected static final double ROUND_RECTANGLE_ARC_SIZE
See Also:
Constant Field Values

OUTER_SHAPE_MARGIN

protected static final double OUTER_SHAPE_MARGIN
See Also:
Constant Field Values

attrname

protected String attrname

minMargin

protected double minMargin

boundaryType

protected SolidGraphics.BoundaryType boundaryType

ewrapper

protected ElementWrapper ewrapper

drawShape

protected Shape drawShape

outerShape

protected Shape outerShape

textArea

protected DirectTextArea textArea

observerEnabled

protected boolean observerEnabled
Used to disable or enable DC observing on demand. We must disable observing when we make changes to the element ourselves.

Constructor Detail

SolidGraphics

public SolidGraphics(DiagramComponent dc,
                     ElementWrapper ew,
                     ProjectManager pm,
                     String attrname,
                     SolidGraphics.BoundaryType boundaryType,
                     double minMargin)
Constructs the element.

Parameters:
dc - Associated diagram component
ew - Associated element wrapper
pm - Project Manager that is used to modify the diagram component attributes
attrname - Name of the DC attribute that is shown on the element text area.
boundaryType - Boundary type.
minMargin - Minimum margin area between the text and the boundary, in pixels. In other words, there is always at least minMargin pixels from any point in the text area to the boundary.

SolidGraphics

public SolidGraphics(DiagramComponent dc,
                     ElementWrapper ew,
                     ProjectManager pm,
                     String attrname,
                     SolidGraphics.BoundaryType boundaryType)
Constructs the element with default margin.

Method Detail

getOuterBoundary

public Shape getOuterBoundary()
Description copied from class: DCGraphics
Returns the outer boundary (shape) of graphical representation of the element. The boundary can be used for checking whether a mouse click is inside the element. The shape closely follows the borders of the element: for a circular element, the shape is circular as well. If an enclosing rectangle is needed, it can be obtained from the Shape instance with Shape.getBounds2D(). For connection types, the outer boundary should be larger than the actual connection line, since it is hard to select a 1 pixel wide line with the mouse.

Specified by:
getOuterBoundary in class DCGraphics
Returns:
area around the DiagramComponent.

updateDCGraphics

public void updateDCGraphics()
Description copied from class: DCGraphics
Update the graphical appearance after element properties have been changed. This method is called when other parties have modified the diagram component. Example: the element is present in several diagrams (and thus has several DiagramComponentWrapper's) and a global attribute of the element is modiefied in another diagram. Then, update() must be called for all DCGraphics instances for the element.

Specified by:
updateDCGraphics in class DCGraphics

minSize

protected Dimension minSize(double innerWidth,
                            double innerHeight)
Calculate minimum size for the element so that the element fully encloses the rectangle given. In other words, there is enough space inside the element to draw on a rectangular area of given width and height, and the border of element doesn't cross the drawing area. The output of this method can be given to buildShape and the shape produced has space for an inner rectangle of size innerWidth, innerHeight.

Parameters:
innerWidth - Width of element content (e.g. text), including margin.
innerHeight - Height of element content (e.g. text), including margin.
Returns:
minium area containing the rectangle

buildShape

protected Shape buildShape(double x,
                           double y,
                           double width,
                           double height)
Builds the outer boundary shape. For the no-boundary type, a rectangular shape is returned.


paintComponent

protected void paintComponent(Graphics g)
Overrides:
paintComponent in class JComponent

disableObserver

protected void disableObserver()

enableObserver

protected void enableObserver()

setWrapperSelected

protected void setWrapperSelected()

update

public void update(Observable subject,
                   Object message)
Description copied from interface: Observer
This method is called whenever the observed object is changed. An application calls an Observable object's notifyObservers method to have all the object's observers notified of the change.

It's safe to modify the subject's observer list from update method. It won't affect the current notify round though, but the next.

Specified by:
update in interface Observer
Overrides:
update in class DCGraphics
Parameters:
subject - the subject that fires the update
message - the message delivered to observer