jrummikub.view.impl
Class AbstractStonePanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by jrummikub.view.impl.AbstractStonePanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, IClickable, IStonePanel
Direct Known Subclasses:
HandPanel, StoneCollectionPanel, TablePanel

abstract class AbstractStonePanel
extends javax.swing.JPanel
implements IStonePanel, IClickable

Base class for panels that draw stones


Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
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
private  Event1<Position> clickEvent
           
private  Stone hoveredStone
           
private  Event2<Stone,java.lang.Boolean> rangeClickEvent
           
private  Event2<Stone,java.lang.Boolean> setClickEvent
           
private  Event2<Stone,java.lang.Boolean> stoneClickEvent
           
private  StonePainter stonePainter
           
private  java.lang.Iterable<Pair<Stone,Position>> stones
           
 
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
AbstractStonePanel()
          Create a new StonePanel with default scale factor
AbstractStonePanel(float scale)
          Create a new StonePanel with a given scale factor
 
Method Summary
protected  void clickAt(java.awt.Point p, int clickCount, boolean shift, boolean control, boolean alt)
          clickAt is called when a click has occurred
 Event1<Position> getClickEvent()
          the click event is emitted when the player clicks on the table/hand/etc.
protected  Stone getHoveredStone()
          Returns the stone the mouse pointer is hovering over
 Event2<Stone,java.lang.Boolean> getRangeClickEvent()
          the range click event is emitted when the player clicks on the table/hand/ etc. and wants to select a range instead of a single stone
 Event2<Stone,java.lang.Boolean> getSetClickEvent()
          the set click event is emitted when the player clicks on the table/hand/ etc. and wants to select a whole set instead of a single stone
private  Stone getStoneAt(Position pos)
          Gets the stone at the specified position
 Event2<Stone,java.lang.Boolean> getStoneClickEvent()
          the click event is emitted when the player clicks on the table/hand/etc.
protected  StonePainter getStonePainter()
           
protected  java.lang.Iterable<Pair<Stone,Position>> getStones()
          Returns the list of stones and positions currently set
protected  Pair<java.lang.Integer,java.lang.Integer> getTranslation()
          Returns the translation in pixels the stones in this panel are painted with
protected  boolean handleOtherClickEvent(Position pos)
          Overwrite this method to signal if special zone was clicked
protected  void handleOtherMoveEvent(Position pos)
          Overwrite this method to signal if special zone was hovered
private  void setHoveredStone(Stone stone)
          Sets the stone over which the cursor hovers
protected  void setStones(java.lang.Iterable<Pair<Stone,Position>> stones)
          Sets the list of stones that can be clicked on
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, 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
 
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, 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, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

stonePainter

private StonePainter stonePainter

clickEvent

private Event1<Position> clickEvent

stoneClickEvent

private Event2<Stone,java.lang.Boolean> stoneClickEvent

rangeClickEvent

private Event2<Stone,java.lang.Boolean> rangeClickEvent

setClickEvent

private Event2<Stone,java.lang.Boolean> setClickEvent

stones

private java.lang.Iterable<Pair<Stone,Position>> stones

hoveredStone

private Stone hoveredStone
Constructor Detail

AbstractStonePanel

public AbstractStonePanel()
Create a new StonePanel with default scale factor


AbstractStonePanel

public AbstractStonePanel(float scale)
Create a new StonePanel with a given scale factor

Parameters:
scale - the grid scale
Method Detail

getStonePainter

protected StonePainter getStonePainter()
Returns:
the stone painter

clickAt

protected void clickAt(java.awt.Point p,
                       int clickCount,
                       boolean shift,
                       boolean control,
                       boolean alt)
clickAt is called when a click has occurred

Parameters:
p - the point in component coordinates
clickCount - the click count
shift - is shift down?
control - is control down?
alt - is alt down?

setHoveredStone

private void setHoveredStone(Stone stone)
Sets the stone over which the cursor hovers

Parameters:
stone - stone under cursor

getHoveredStone

protected Stone getHoveredStone()
Returns the stone the mouse pointer is hovering over

Returns:
the hovered stone

handleOtherClickEvent

protected boolean handleOtherClickEvent(Position pos)
Overwrite this method to signal if special zone was clicked

Parameters:
pos - the clicked position
Returns:
special zone clicked

handleOtherMoveEvent

protected void handleOtherMoveEvent(Position pos)
Overwrite this method to signal if special zone was hovered

Parameters:
pos - the hovered position

getStoneAt

private Stone getStoneAt(Position pos)
Gets the stone at the specified position

Parameters:
pos - position
Returns:
the stone

setStones

protected void setStones(java.lang.Iterable<Pair<Stone,Position>> stones)
Sets the list of stones that can be clicked on

Parameters:
stones - the stones and positions

getTranslation

protected Pair<java.lang.Integer,java.lang.Integer> getTranslation()
Returns the translation in pixels the stones in this panel are painted with

Returns:
the translation

getStones

protected java.lang.Iterable<Pair<Stone,Position>> getStones()
Returns the list of stones and positions currently set

Returns:
the stones

getClickEvent

public Event1<Position> getClickEvent()
Description copied from interface: IClickable
the click event is emitted when the player clicks on the table/hand/etc.

Specified by:
getClickEvent in interface IClickable
Returns:
the event; the first parameter is the position of the click in grid coordinates, the second is true when the player wants to add stones to his selection instead of replacing them

getStoneClickEvent

public Event2<Stone,java.lang.Boolean> getStoneClickEvent()
Description copied from interface: IStonePanel
the click event is emitted when the player clicks on the table/hand/etc.

Specified by:
getStoneClickEvent in interface IStonePanel
Returns:
the event; the first parameter is the stone that was clicked on, the second is true when the player wants to add stones to his selection instead of replacing them

getRangeClickEvent

public Event2<Stone,java.lang.Boolean> getRangeClickEvent()
Description copied from interface: IStonePanel
the range click event is emitted when the player clicks on the table/hand/ etc. and wants to select a range instead of a single stone

Specified by:
getRangeClickEvent in interface IStonePanel
Returns:
the event; the first parameter is the stone that was clicked on, the second is true when the player wants to add stones to his selection instead of replacing them

getSetClickEvent

public Event2<Stone,java.lang.Boolean> getSetClickEvent()
Description copied from interface: IStonePanel
the set click event is emitted when the player clicks on the table/hand/ etc. and wants to select a whole set instead of a single stone

Specified by:
getSetClickEvent in interface IStonePanel
Returns:
the event; the first parameter the stone that was clicked on, the second is true when the player wants to add stones to his selection instead of replacing them