edu.uah.math.devices
Class Voters

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by edu.uah.math.devices.Voters
All Implemented Interfaces:
java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener

public class Voters
extends javax.swing.JComponent
implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.io.Serializable

This class models a rectangular array of voters (a metaphor for a site that can be in one of several states. Each voter at each time can be in one of a finite set of states representd as colors. The voters are actually represented as colored squares.

Version:
August, 2003
Author:
Dawn Duehring, Kyle Siegrist
See Also:
Serialized Form

Nested Class Summary
 
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.BaselineResizeBehavior, 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
Voters()
          This default constructor creates a new array of voters with 10 rows, 10 columns and the default uniform probability array, and default preferred voter size.
Voters(int m, int n)
          This special constructor creates a new array of voters with a specified number of rows and columns, and default voter size, colors and probabilities.
Voters(int m, int n, int s)
          This special constructor creates a new array of voters with a specified number of rows and columns, a specified size, and default colors and probabilities..
Voters(int m, int n, int s, java.awt.Color[] c)
          This special constructor creates a new array of voters with a specified number of rows and columns, a specified array of colors (states), a specified size, a specified color array and default probabilities.
Voters(int m, int n, int s, java.awt.Color[] c, double[] p)
          This general constructor creates a new array of voters with a specified number of rows and columns, a specified array of colors (states), a specified probability array, and a preferred voter size.
 
Method Summary
 void doExperiment()
          This method performs the voter experiment.
 java.awt.Color[] getColors()
          This method returns the array of colors (states).
 java.awt.Color getColors(int i)
          This method returns a particular state (color).
 int getColumns()
          This method returns the number of columns.
 int getEditState()
          This method returns the edit state, the state that a voter will be changed to when a user clicks on the voter.
 java.awt.Point getNeighbor()
          This emthod returns the currently selected neighbor.
 int getNewState()
          This method returns the new state.
 double getProbabilites(int i)
          This method returns an individual probability.
 double[] getProbabilities()
          This method gets the array of probabilities.
 int getRows()
          This method returns the number of rows.
 int getStateCount(int i)
          This method returns the number of voters in a specified state.
 int[][] getStates()
          This method returns the array of states.
 int getStates(int x, int y)
          This method returns the state of a specified voter.
 int getStatesAlive()
          This method returns the number of states alive (that is, at least one voter has this state.
 java.awt.Point getVoter()
          This method returns the currently selected voter.
 boolean isConsensus()
          This method checks to see if the voters are all in the same state.
 boolean isNewDeath()
          This method checks to see if a state has died.
 void mouseClicked(java.awt.event.MouseEvent e)
          This method changes the state of the voter clicked on to the current edit state.
 void mouseDragged(java.awt.event.MouseEvent event)
           
 void mouseEntered(java.awt.event.MouseEvent event)
           
 void mouseExited(java.awt.event.MouseEvent event)
           
 void mouseMoved(java.awt.event.MouseEvent e)
          This method tracks the voter under the mouse cursor.
 void mousePressed(java.awt.event.MouseEvent event)
           
 void mouseReleased(java.awt.event.MouseEvent event)
           
 void paintComponent(java.awt.Graphics g)
          This method paints the voter canvas.
 void reset()
          This method resets the voters.
 void setColors(java.awt.Color[] c)
          This method sets the array of color (states).
 void setColumns(int m)
          This method sets the number of columns.
 void setEditState(int s)
          This method sets the edit state, the state that a voter will be changed to when a user clicks on the voter.
 void setParameters(int m, int n)
          This method sets the parameters: the number of rows and columns.
 void setParameters(int m, int n, int s)
          This method sets the parameters: the number of rows and columns, and the array of states (colors).
 void setProbabilities(double[] p)
          This method sets the probabilities for selecting a neighbor.
 void setProbabilities(int i, double p)
          This method sets and individual probability for selecting a neighbor.
 void setRows(int n)
          This method sets the number of rows.
 void setStates(int[][] s)
          This method sets the array of states.
 void setStates(int x, int y, int s)
          This method changes the state of a specified voter to a specified new state.
 
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, getBaseline, getBaselineResizeBehavior, 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, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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

Voters

public Voters(int m,
              int n,
              int s,
              java.awt.Color[] c,
              double[] p)
This general constructor creates a new array of voters with a specified number of rows and columns, a specified array of colors (states), a specified probability array, and a preferred voter size.

Parameters:
m - the number of columns
n - the number of rows
s - the size of a voter
c - the array of colors (states)
p - the array of probabilities

Voters

public Voters(int m,
              int n,
              int s,
              java.awt.Color[] c)
This special constructor creates a new array of voters with a specified number of rows and columns, a specified array of colors (states), a specified size, a specified color array and default probabilities.

Parameters:
m - the number of columns
n - the number of rows
s - the size of a voter
c - the array of colors (states)

Voters

public Voters(int m,
              int n,
              int s)
This special constructor creates a new array of voters with a specified number of rows and columns, a specified size, and default colors and probabilities..

Parameters:
m - the number of columns
n - the number of rows
s - the size of a voter

Voters

public Voters(int m,
              int n)
This special constructor creates a new array of voters with a specified number of rows and columns, and default voter size, colors and probabilities.

Parameters:
m - the number of columns
n - the number of rows

Voters

public Voters()
This default constructor creates a new array of voters with 10 rows, 10 columns and the default uniform probability array, and default preferred voter size.

Method Detail

setParameters

public void setParameters(int m,
                          int n,
                          int s)
This method sets the parameters: the number of rows and columns, and the array of states (colors).

Parameters:
m - the number of columns
n - the number of rows
s - the voter size

setParameters

public void setParameters(int m,
                          int n)
This method sets the parameters: the number of rows and columns.

Parameters:
m - the number of columns
n - the number of rows

setColumns

public void setColumns(int m)
This method sets the number of columns.

Parameters:
m - the number of columns

getColumns

public int getColumns()
This method returns the number of columns.

Returns:
the number of columns

setRows

public void setRows(int n)
This method sets the number of rows.

Parameters:
n - the number of rows

getRows

public int getRows()
This method returns the number of rows.

Returns:
the number of rows

setColors

public void setColors(java.awt.Color[] c)
This method sets the array of color (states).

Parameters:
c - the array of colors

getColors

public java.awt.Color[] getColors()
This method returns the array of colors (states).

Returns:
the array of colors

getColors

public java.awt.Color getColors(int i)
This method returns a particular state (color).

Parameters:
i - the index
Returns:
the color corresponding to the index

setProbabilities

public void setProbabilities(double[] p)
This method sets the probabilities for selecting a neighbor. Index 0 is the left neighbor, index 1 the right neigbor, index 2 the bottom neighbor, and index 3 the top neighbor.

Parameters:
p - the array of probabilities

setProbabilities

public void setProbabilities(int i,
                             double p)
This method sets and individual probability for selecting a neighbor. Index 0 is the left neighbor, index 1 the right neigbor, index 2 the bottom neighbor, and index 3 the top neighbor.


getProbabilities

public double[] getProbabilities()
This method gets the array of probabilities.

Returns:
the array of probabilities for choosing the neighbor.

getProbabilites

public double getProbabilites(int i)
This method returns an individual probability. Index 0 is the left neighbor, index 1 the right neigbor, index 2 the bottom neighbor, and index 3 the top neighbor.

Parameters:
i - the index
Returns:
the probability corresponding to the index.

setEditState

public void setEditState(int s)
This method sets the edit state, the state that a voter will be changed to when a user clicks on the voter.

Parameters:
s - the new state

getEditState

public int getEditState()
This method returns the edit state, the state that a voter will be changed to when a user clicks on the voter.

Returns:
the edit state

setStates

public void setStates(int x,
                      int y,
                      int s)
This method changes the state of a specified voter to a specified new state.

Parameters:
x - the x-coordinate of the voter
y - the y-coordiante of the voter
s - the new state

setStates

public void setStates(int[][] s)
This method sets the array of states.

Parameters:
s - the array of states

getStates

public int getStates(int x,
                     int y)
This method returns the state of a specified voter.

Parameters:
x - the x-coordinate of the voter
y - the y-coordinate of the voter
Returns:
the state of the voter

getStates

public int[][] getStates()
This method returns the array of states.

Returns:
the array of states

paintComponent

public void paintComponent(java.awt.Graphics g)
This method paints the voter canvas. Each square representing a voter is painted with the color representing the state of the voter.

Overrides:
paintComponent in class javax.swing.JComponent

reset

public void reset()
This method resets the voters. Each voter is assigned a random state.


getStateCount

public int getStateCount(int i)
This method returns the number of voters in a specified state.

Parameters:
i - the state
Returns:
the number of voters in that state

doExperiment

public void doExperiment()
This method performs the voter experiment. A voter is chosen at random and then a neighbor of that voter is chosen according to the probability parameters. The state of the first voter is changed to that of the neighbor.


getStatesAlive

public int getStatesAlive()
This method returns the number of states alive (that is, at least one voter has this state.

Returns:
the number of nonempty states

isNewDeath

public boolean isNewDeath()
This method checks to see if a state has died.

Returns:
true if the last run of the experiment caused a new state to die

isConsensus

public boolean isConsensus()
This method checks to see if the voters are all in the same state.

Returns:
true if all voters are in the same state

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
This method changes the state of the voter clicked on to the current edit state.

Specified by:
mouseClicked in interface java.awt.event.MouseListener
Parameters:
e - the mouse event

getVoter

public java.awt.Point getVoter()
This method returns the currently selected voter.

Returns:
the voter

getNewState

public int getNewState()
This method returns the new state.


getNeighbor

public java.awt.Point getNeighbor()
This emthod returns the currently selected neighbor.

Returns:
the neighbor

mouseMoved

public void mouseMoved(java.awt.event.MouseEvent e)
This method tracks the voter under the mouse cursor.

Specified by:
mouseMoved in interface java.awt.event.MouseMotionListener
Parameters:
e - the mouse event

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent event)
Specified by:
mouseEntered in interface java.awt.event.MouseListener

mouseExited

public void mouseExited(java.awt.event.MouseEvent event)
Specified by:
mouseExited in interface java.awt.event.MouseListener

mousePressed

public void mousePressed(java.awt.event.MouseEvent event)
Specified by:
mousePressed in interface java.awt.event.MouseListener

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent event)
Specified by:
mouseReleased in interface java.awt.event.MouseListener

mouseDragged

public void mouseDragged(java.awt.event.MouseEvent event)
Specified by:
mouseDragged in interface java.awt.event.MouseMotionListener