com.devenezia
Class Rotationallndicator

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by com.devenezia.Rotationallndicator
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class Rotationallndicator
extends javax.swing.JComponent

Indicate a rotating condition by color cycling circles, c0 to cn drawn on the circumference of circle, C.

The circles are drawn at fixed positions, equispaced on the circumference. The colors cycled are a linear gradient from black to white. The act of color cycling gives the appearance of a body in a circular orbit.

Psychology of perception grants 'headedness' to darker visual elements. The white circles are drawn first to prevent the head from looking eclipsed when circles overlap.

There are four combinations of two binary aspects that convey the idea of motion to the observer.

Aspect 1. Head direction - Direction of the blackest dot. Clockwise or Counterclockwise.
Aspect 2. Fade direction - Direction of gradient to white. Clockwise or Counterclockwise.

HeadFadePerceived visual effect
CW CW black push-CW white pull-CW
CW CCWblack pull-CW white push-CW
CCWCW black pull-CCWwhite push-CCW
CCWCCWblack push-CCWwhite pull-CCW

See Also:
Serialized Form

Nested Class Summary
static class Rotationallndicator.RotationDirection
          Clockwise or Counterclockwise
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
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
Rotationallndicator()
          Creates a new instance of Rotationalndicator
 
Method Summary
protected  void animPause()
          Called from setAnimate(false)
protected  void animPlay()
          Called from setAnimate(true)
 boolean getAlertMode()
          Is alert mode active?
 boolean getAnimate()
          Is the component animate?
 boolean getAutosize()
          Will the visualization use all available space?
 int getBigDiameter()
          Diameter of the circle C, on which the orbit circles are drawn
 double getDrawFirstFraction()
          [0..1] Fraction of full circle at which first circle is drawn
 double getDrawLastFraction()
          [0..1] Fraction of full circle at which last circle is drawn
 boolean getDrawRing()
          Is circle C being drawn?
 Rotationallndicator.RotationDirection getFadeDirection()
          Direction of black to white gradient
 Rotationallndicator.RotationDirection getHeadDirection()
          Direction of color cycling, apparent direction of black circle
 int getLittleDiameter()
          Diameter of the orbiting circles
 int getNumberOfCircles()
          Number of orbiting circles
 int getPaintInterval()
          How often does the component redraw itself when animate
 java.awt.Dimension getPreferredSize()
          200 x 200
 double getSweepTime()
          Time to complete one revolution
protected  void paintComponent(java.awt.Graphics graphics)
           
 void setAlertMode(boolean mode)
          Cause the circles to blink red
 void setAnimate(boolean on)
          Turn animation on or off
 void setAutosize(boolean on)
          Cause the component to use all available space
 void setBigDiameter(int n)
          Diameter of the circle on which the circles are drawn
 void setDrawFirstFraction(double f)
          [0..1] Fraction of full circle at which first circle is drawn
 void setDrawLastFraction(double f)
          [0..1] Fraction of full circle at which last circle is drawn
 void setDrawRing(boolean on)
          Cause circle C to be drawn
 void setFadeDirection(Rotationallndicator.RotationDirection dir)
          Direction of black to white gradient
 void setHeadDirection(Rotationallndicator.RotationDirection dir)
          Direction of color cycling, apparent direction of black circle
 void setLittleDiameter(int n)
          Diameter of the orbiting circles
 void setNumberOfCircles(int n)
          Number of orbiting circles
 void setPaintInterval(int n)
          How often should the component redraw itself when animate (ms)
 void setSweepTime(double t)
          Time (s) to complete one revolution
 
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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, 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
 

Constructor Detail

Rotationallndicator

public Rotationallndicator()
Creates a new instance of Rotationalndicator

Method Detail

setAnimate

public void setAnimate(boolean on)
Turn animation on or off


getAnimate

public boolean getAnimate()
Is the component animate?

Returns:
true if animation is occurring

animPlay

protected void animPlay()
Called from setAnimate(true)


animPause

protected void animPause()
Called from setAnimate(false)


setAlertMode

public void setAlertMode(boolean mode)
Cause the circles to blink red


getAlertMode

public boolean getAlertMode()
Is alert mode active?

Returns:
true if alert mode is active

setPaintInterval

public void setPaintInterval(int n)
How often should the component redraw itself when animate (ms)

When sweepTime is small paintInterval might need to be reduced in order to ensure a smooth animation.

default: 50 ms


getPaintInterval

public int getPaintInterval()
How often does the component redraw itself when animate

Returns:
milliseconds

setSweepTime

public void setSweepTime(double t)
Time (s) to complete one revolution


getSweepTime

public double getSweepTime()
Time to complete one revolution

Returns:
seconds

paintComponent

protected void paintComponent(java.awt.Graphics graphics)
Overrides:
paintComponent in class javax.swing.JComponent

setBigDiameter

public void setBigDiameter(int n)
Diameter of the circle on which the circles are drawn

Ignored if autoSize is on


getBigDiameter

public int getBigDiameter()
Diameter of the circle C, on which the orbit circles are drawn

Returns:
Diameter of circle on which other circles are drawn

setLittleDiameter

public void setLittleDiameter(int n)
Diameter of the orbiting circles


getLittleDiameter

public int getLittleDiameter()
Diameter of the orbiting circles

Returns:
Diameter of the drawn circles

getNumberOfCircles

public int getNumberOfCircles()
Number of orbiting circles

Returns:
Number of orbiting circles

setNumberOfCircles

public void setNumberOfCircles(int n)
Number of orbiting circles

c0 to cn are drawn equispaced with centers on the circumference of C


setHeadDirection

public void setHeadDirection(Rotationallndicator.RotationDirection dir)
Direction of color cycling, apparent direction of black circle

CW (clockwise) or CCW (counterclockwise)


getHeadDirection

public Rotationallndicator.RotationDirection getHeadDirection()
Direction of color cycling, apparent direction of black circle

Returns:
CW (clockwise) or CCW (counterclockwise)

setFadeDirection

public void setFadeDirection(Rotationallndicator.RotationDirection dir)
Direction of black to white gradient

CW (clockwise) or CCW (counterclockwise)


getFadeDirection

public Rotationallndicator.RotationDirection getFadeDirection()
Direction of black to white gradient

Returns:
CW (clockwise) or CCW (counterclockwise)

setDrawFirstFraction

public void setDrawFirstFraction(double f)
[0..1] Fraction of full circle at which first circle is drawn

If numberOfCircles=100 and f=.25 the first circle drawn is circle 25 away from the white circle.

default: 0


getDrawFirstFraction

public double getDrawFirstFraction()
[0..1] Fraction of full circle at which first circle is drawn

Returns:
Value between 0 and 1 inclusive.

setDrawLastFraction

public void setDrawLastFraction(double f)
[0..1] Fraction of full circle at which last circle is drawn

If numberOfCircles=100 and f=.75 the last circle drawn is circle 75 away from the white circle.

default: 1


getDrawLastFraction

public double getDrawLastFraction()
[0..1] Fraction of full circle at which last circle is drawn

Returns:
Value between 0 and 1 inclusive.

setDrawRing

public void setDrawRing(boolean on)
Cause circle C to be drawn


getDrawRing

public boolean getDrawRing()
Is circle C being drawn?

Returns:
true if circle C is being drawn

setAutosize

public void setAutosize(boolean on)
Cause the component to use all available space


getAutosize

public boolean getAutosize()
Will the visualization use all available space?

Returns:
true if visualization uses all available space

getPreferredSize

public java.awt.Dimension getPreferredSize()
200 x 200

Overrides:
getPreferredSize in class javax.swing.JComponent
Returns:
200 x 200