jrummikub.view.impl
Class TablePanel

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
                      extended by jrummikub.view.impl.TablePanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, IClickable, IStonePanel, ITablePanel

 class TablePanel
extends AbstractStonePanel
implements ITablePanel

The implementation of the table


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 static javax.swing.ImageIcon BACKGROUND
           
private static javax.swing.ImageIcon BRIGHT_BACKGROUND
           
private  int COLLECTION_GAP
           
private  double COLLECTION_RATIO
           
private static double CONNECTOR_WIDTH
           
private static javax.swing.ImageIcon DARK_BACKGROUND
           
private static double HORIZONTAL_MARGIN
           
private  java.util.Collection<StoneSet> invalidStoneSets
           
private  Event1<StoneSet> leftConnectorClickEvent
           
private  StoneSet leftHoveredConnector
           
private static double MIN_VISIBLE_HEIGHT
           
private static double MIN_VISIBLE_WIDTH
           
private  boolean pauseMode
           
private  java.util.List<Pair<StoneSet,Position>> pauseStoneSets
           
private  Event1<StoneSet> rightConnectorClickEvent
           
private  StoneSet rightHoveredConnector
           
private  java.util.Collection<Stone> selectedStones
           
private  StoneCollectionPanel stoneCollection
           
private  java.lang.Iterable<Pair<StoneSet,Position>> stoneSets
           
private static double VERTICAL_MARGIN
           
 
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
TablePanel()
          Creates a new Table instance
 
Method Summary
private  java.awt.geom.Rectangle2D calculateTableExtent()
           
(package private)  void createPauseStoneSets()
           
(package private)  void enablePauseMode(boolean enable)
           
 Event1<StoneSet> getLeftConnectorClickEvent()
          the left connector click event is emitted when the player clicks on a left connector of a stone set on the table .
 Event1<StoneSet> getRightConnectorClickEvent()
          the right connector click event is emitted when the player clicks on a right connector of a stone set on the table .
 IStoneCollectionPanel getStoneCollectionPanel()
          Returns the stone collection (the panel showing the stones currently selected)
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
protected  void paintComponent(java.awt.Graphics g1)
           
private  void paintStoneSet(java.awt.Graphics2D g, StoneSet stoneSet, Position pos, java.awt.geom.Area connectorArea, java.awt.geom.Area hoveredConnectorArea)
           
private  void rescale()
           
(package private)  void setInvalidStoneSets(java.util.Collection<StoneSet> sets)
           
private  void setScale()
           
(package private)  void setSelectedStones(java.util.Collection<Stone> stones)
          Sets the currently selected stones
 void setStoneSets(java.lang.Iterable<Pair<StoneSet,Position>> stoneSets)
          Sets the stone sets lying on the table
 
Methods inherited from class jrummikub.view.impl.AbstractStonePanel
clickAt, getClickEvent, getHoveredStone, getRangeClickEvent, getSetClickEvent, getStoneClickEvent, getStonePainter, getStones, setStones
 
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, 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
 
Methods inherited from interface jrummikub.view.IStonePanel
getRangeClickEvent, getSetClickEvent, getStoneClickEvent
 
Methods inherited from interface jrummikub.view.IClickable
getClickEvent
 

Field Detail

BACKGROUND

private static final javax.swing.ImageIcon BACKGROUND

DARK_BACKGROUND

private static final javax.swing.ImageIcon DARK_BACKGROUND

BRIGHT_BACKGROUND

private static final javax.swing.ImageIcon BRIGHT_BACKGROUND

MIN_VISIBLE_WIDTH

private static final double MIN_VISIBLE_WIDTH
See Also:
Constant Field Values

MIN_VISIBLE_HEIGHT

private static final double MIN_VISIBLE_HEIGHT
See Also:
Constant Field Values

HORIZONTAL_MARGIN

private static final double HORIZONTAL_MARGIN
See Also:
Constant Field Values

VERTICAL_MARGIN

private static final double VERTICAL_MARGIN
See Also:
Constant Field Values

CONNECTOR_WIDTH

private static final double CONNECTOR_WIDTH
See Also:
Constant Field Values

COLLECTION_RATIO

private final double COLLECTION_RATIO
See Also:
Constant Field Values

COLLECTION_GAP

private final int COLLECTION_GAP
See Also:
Constant Field Values

stoneCollection

private StoneCollectionPanel stoneCollection

stoneSets

private java.lang.Iterable<Pair<StoneSet,Position>> stoneSets

pauseStoneSets

private java.util.List<Pair<StoneSet,Position>> pauseStoneSets

invalidStoneSets

private java.util.Collection<StoneSet> invalidStoneSets

selectedStones

private java.util.Collection<Stone> selectedStones

leftConnectorClickEvent

private Event1<StoneSet> leftConnectorClickEvent

rightConnectorClickEvent

private Event1<StoneSet> rightConnectorClickEvent

leftHoveredConnector

private StoneSet leftHoveredConnector

rightHoveredConnector

private StoneSet rightHoveredConnector

pauseMode

private boolean pauseMode
Constructor Detail

TablePanel

TablePanel()
Creates a new Table instance

Method Detail

getLeftConnectorClickEvent

public Event1<StoneSet> getLeftConnectorClickEvent()
Description copied from interface: ITablePanel
the left connector click event is emitted when the player clicks on a left connector of a stone set on the table .

Specified by:
getLeftConnectorClickEvent in interface ITablePanel
Returns:
the event

getRightConnectorClickEvent

public Event1<StoneSet> getRightConnectorClickEvent()
Description copied from interface: ITablePanel
the right connector click event is emitted when the player clicks on a right connector of a stone set on the table .

Specified by:
getRightConnectorClickEvent in interface ITablePanel
Returns:
the event

setStoneSets

public void setStoneSets(java.lang.Iterable<Pair<StoneSet,Position>> stoneSets)
Description copied from interface: ITablePanel
Sets the stone sets lying on the table

Specified by:
setStoneSets in interface ITablePanel
Parameters:
stoneSets - set stone sets on the table

getStoneCollectionPanel

public IStoneCollectionPanel getStoneCollectionPanel()
Description copied from interface: ITablePanel
Returns the stone collection (the panel showing the stones currently selected)

Specified by:
getStoneCollectionPanel in interface ITablePanel
Returns:
the stone collection

setSelectedStones

void setSelectedStones(java.util.Collection<Stone> stones)
Sets the currently selected stones

Parameters:
stones - the selected stones

setInvalidStoneSets

void setInvalidStoneSets(java.util.Collection<StoneSet> sets)

createPauseStoneSets

void createPauseStoneSets()

calculateTableExtent

private java.awt.geom.Rectangle2D calculateTableExtent()

rescale

private void rescale()

setScale

private void setScale()

handleOtherClickEvent

protected boolean handleOtherClickEvent(Position pos)
Description copied from class: AbstractStonePanel
Overwrite this method to signal if special zone was clicked

Overrides:
handleOtherClickEvent in class AbstractStonePanel
Parameters:
pos - the clicked position
Returns:
special zone clicked

handleOtherMoveEvent

protected void handleOtherMoveEvent(Position pos)
Description copied from class: AbstractStonePanel
Overwrite this method to signal if special zone was hovered

Overrides:
handleOtherMoveEvent in class AbstractStonePanel
Parameters:
pos - the hovered position

getTranslation

protected Pair<java.lang.Integer,java.lang.Integer> getTranslation()
Description copied from class: AbstractStonePanel
Returns the translation in pixels the stones in this panel are painted with

Overrides:
getTranslation in class AbstractStonePanel
Returns:
the translation

paintStoneSet

private void paintStoneSet(java.awt.Graphics2D g,
                           StoneSet stoneSet,
                           Position pos,
                           java.awt.geom.Area connectorArea,
                           java.awt.geom.Area hoveredConnectorArea)

paintComponent

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

enablePauseMode

void enablePauseMode(boolean enable)