diff --git a/docs/allclasses-index.html b/docs/allclasses-index.html
new file mode 100644
index 0000000..96d6fb7
--- /dev/null
+++ b/docs/allclasses-index.html
@@ -0,0 +1,218 @@
+
+
+
+
+All Classes and Interfaces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
All Classes and Interfaces Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The type Chess controller.
+
+
+
+
+
+
The type Chess menu bar.
+
+
+
+
The interface Chess menu controller.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The interface Location listener.
+
+
+
+
The type Location panel.
+
+
+
+
The enum Location state.
+
+
+
+
The type Long castling.
+
+
+
+
The type com.amirhn.Main.
+
+
+
+
+
+
+
+
+
+
The type Pawn promotion.
+
+
+
+
+
+
The type Piece image icon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The type Short castling.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/allpackages-index.html b/docs/allpackages-index.html
new file mode 100644
index 0000000..9a8ca3c
--- /dev/null
+++ b/docs/allpackages-index.html
@@ -0,0 +1,78 @@
+
+
+
+
+All Packages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/ChessController.html b/docs/com/amirhn/GUI/ChessController.html
new file mode 100644
index 0000000..069fc7e
--- /dev/null
+++ b/docs/com/amirhn/GUI/ChessController.html
@@ -0,0 +1,335 @@
+
+
+
+
+ChessController
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Chess controller.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
void
+
+
+
boolean
+
+
+
Is location draggable boolean.
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ChessController
+
+Instantiates a new Chess controller.
+
+Parameters:
+chess
- the chess
+boardPanel
- the board panel
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+
+
+
+applyMove
+public boolean applyMove (Move move)
+Apply move boolean.
+
+Parameters:
+move
- the move
+Returns:
+the boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+isLocationDraggable
+public boolean isLocationDraggable (Location location)
+Is location draggable boolean.
+
+Specified by:
+isLocationDraggable
in interface LocationListener
+Parameters:
+location
- the location
+Returns:
+the boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/ChessFrame.html b/docs/com/amirhn/GUI/ChessFrame.html
new file mode 100644
index 0000000..8a00384
--- /dev/null
+++ b/docs/com/amirhn/GUI/ChessFrame.html
@@ -0,0 +1,231 @@
+
+
+
+
+ChessFrame
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+
+
Fields inherited from class java.awt.Frame
+
CROSSHAIR_CURSOR , DEFAULT_CURSOR , E_RESIZE_CURSOR , HAND_CURSOR , ICONIFIED , MAXIMIZED_BOTH , MAXIMIZED_HORIZ , MAXIMIZED_VERT , MOVE_CURSOR , N_RESIZE_CURSOR , NE_RESIZE_CURSOR , NORMAL , NW_RESIZE_CURSOR , S_RESIZE_CURSOR , SE_RESIZE_CURSOR , SW_RESIZE_CURSOR , TEXT_CURSOR , W_RESIZE_CURSOR , WAIT_CURSOR
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Chess frame.
+
+
+
+
+
+
+
+Method Summary
+
+
Methods inherited from class javax.swing.JFrame
+
addImpl , createRootPane , frameInit , getAccessibleContext , getContentPane , getDefaultCloseOperation , getGlassPane , getGraphics , getJMenuBar , getLayeredPane , getRootPane , getTransferHandler , isDefaultLookAndFeelDecorated , isRootPaneCheckingEnabled , paramString , processWindowEvent , remove , repaint , setContentPane , setDefaultCloseOperation , setDefaultLookAndFeelDecorated , setGlassPane , setIconImage , setJMenuBar , setLayeredPane , setLayout , setRootPane , setRootPaneCheckingEnabled , setTransferHandler , update
+
+
Methods inherited from class java.awt.Frame
+
addNotify , getCursorType , getExtendedState , getFrames , getIconImage , getMaximizedBounds , getMenuBar , getState , getTitle , isResizable , isUndecorated , remove , removeNotify , setBackground , setCursor , setExtendedState , setMaximizedBounds , setMenuBar , setOpacity , setResizable , setShape , setState , setTitle , setUndecorated
+
+
Methods inherited from class java.awt.Window
+
addPropertyChangeListener , addPropertyChangeListener , addWindowFocusListener , addWindowListener , addWindowStateListener , applyResourceBundle , applyResourceBundle , createBufferStrategy , createBufferStrategy , dispose , getBackground , getBufferStrategy , getFocusableWindowState , getFocusCycleRootAncestor , getFocusOwner , getFocusTraversalKeys , getIconImages , getInputContext , getListeners , getLocale , getModalExclusionType , getMostRecentFocusOwner , getOpacity , getOwnedWindows , getOwner , getOwnerlessWindows , getShape , getToolkit , getType , getWarningString , getWindowFocusListeners , getWindowListeners , getWindows , getWindowStateListeners , hide , isActive , isAlwaysOnTop , isAlwaysOnTopSupported , isAutoRequestFocus , isFocusableWindow , isFocusCycleRoot , isFocused , isLocationByPlatform , isOpaque , isShowing , isValidateRoot , pack , paint , postEvent , processEvent , processWindowFocusEvent , processWindowStateEvent , removeWindowFocusListener , removeWindowListener , removeWindowStateListener , reshape , setAlwaysOnTop , setAutoRequestFocus , setBounds , setBounds , setCursor , setFocusableWindowState , setFocusCycleRoot , setIconImages , setLocation , setLocation , setLocationByPlatform , setLocationRelativeTo , setMinimumSize , setModalExclusionType , setSize , setSize , setType , setVisible , show , toBack , toFront
+
+
Methods inherited from class java.awt.Container
+
add , add , add , add , add , addContainerListener , applyComponentOrientation , areFocusTraversalKeysSet , countComponents , deliverEvent , doLayout , findComponentAt , findComponentAt , getAlignmentX , getAlignmentY , getComponent , getComponentAt , getComponentAt , getComponentCount , getComponents , getComponentZOrder , getContainerListeners , getFocusTraversalPolicy , getInsets , getLayout , getMaximumSize , getMinimumSize , getMousePosition , getPreferredSize , insets , invalidate , isAncestorOf , isFocusCycleRoot , isFocusTraversalPolicyProvider , isFocusTraversalPolicySet , layout , list , list , locate , minimumSize , paintComponents , preferredSize , print , printComponents , processContainerEvent , remove , removeAll , removeContainerListener , setComponentZOrder , setFocusTraversalKeys , setFocusTraversalPolicy , setFocusTraversalPolicyProvider , setFont , 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 , contains , createImage , createImage , createVolatileImage , createVolatileImage , disable , disableEvents , dispatchEvent , enable , enable , enableEvents , enableInputMethods , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , firePropertyChange , getBaseline , getBaselineResizeBehavior , getBounds , getBounds , getColorModel , getComponentListeners , getComponentOrientation , getCursor , getDropTarget , getFocusListeners , getFocusTraversalKeysEnabled , getFont , getFontMetrics , getForeground , getGraphicsConfiguration , getHeight , getHierarchyBoundsListeners , getHierarchyListeners , getIgnoreRepaint , getInputMethodListeners , getInputMethodRequests , getKeyListeners , getLocation , getLocation , getLocationOnScreen , getMouseListeners , getMouseMotionListeners , getMousePosition , getMouseWheelListeners , getName , getParent , getPropertyChangeListeners , getPropertyChangeListeners , getSize , getSize , getTreeLock , getWidth , getX , getY , gotFocus , handleEvent , hasFocus , imageUpdate , inside , isBackgroundSet , isCursorSet , isDisplayable , isDoubleBuffered , isEnabled , isFocusable , isFocusOwner , isFocusTraversable , isFontSet , isForegroundSet , isLightweight , isMaximumSizeSet , isMinimumSizeSet , isPreferredSizeSet , isValid , isVisible , keyDown , keyUp , list , list , list , location , lostFocus , mouseDown , mouseDrag , mouseEnter , mouseExit , mouseMove , mouseUp , move , nextFocus , paintAll , prepareImage , prepareImage , printAll , processComponentEvent , processFocusEvent , processHierarchyBoundsEvent , processHierarchyEvent , processInputMethodEvent , processKeyEvent , processMouseEvent , processMouseMotionEvent , processMouseWheelEvent , removeComponentListener , removeFocusListener , removeHierarchyBoundsListener , removeHierarchyListener , removeInputMethodListener , removeKeyListener , removeMouseListener , removeMouseMotionListener , removeMouseWheelListener , removePropertyChangeListener , removePropertyChangeListener , repaint , repaint , repaint , requestFocus , requestFocus , requestFocus , requestFocus , requestFocusInWindow , requestFocusInWindow , requestFocusInWindow , resize , resize , revalidate , setComponentOrientation , setDropTarget , setEnabled , setFocusable , setFocusTraversalKeysEnabled , setForeground , setIgnoreRepaint , setLocale , setMaximumSize , setMixingCutoutShape , setName , setPreferredSize , show , size , toString , transferFocus , transferFocusBackward , transferFocusUpCycle
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ChessFrame
+public ChessFrame ()
+Instantiates a new Chess frame.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/ChessMenuBar.html b/docs/com/amirhn/GUI/ChessMenuBar.html
new file mode 100644
index 0000000..9b3430a
--- /dev/null
+++ b/docs/com/amirhn/GUI/ChessMenuBar.html
@@ -0,0 +1,255 @@
+
+
+
+
+ChessMenuBar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Chess menu bar.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
add , addNotify , getAccessibleContext , getComponent , getComponentAtIndex , getComponentIndex , getHelpMenu , getMargin , getMenu , getMenuCount , getSelectionModel , getSubElements , getUI , getUIClassID , isBorderPainted , isSelected , menuSelectionChanged , paintBorder , paramString , processKeyBinding , processKeyEvent , processMouseEvent , removeNotify , setBorderPainted , setHelpMenu , setMargin , setSelected , setSelectionModel , setUI , updateUI
+
+
Methods inherited from class javax.swing.JComponent
+
addAncestorListener , 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 , hide , isDoubleBuffered , isLightweightComponent , isManagingFocus , isOpaque , isOptimizedDrawingEnabled , isPaintingForPrint , isPaintingOrigin , isPaintingTile , isRequestFocusEnabled , isValidateRoot , paint , paintChildren , paintComponent , paintImmediately , paintImmediately , print , printAll , printBorder , printChildren , printComponent , processComponentKeyEvent , processKeyEvent , processMouseEvent , processMouseMotionEvent , putClientProperty , registerKeyboardAction , registerKeyboardAction , removeAncestorListener , 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 , getPropertyChangeListeners , getPropertyChangeListeners , getSize , getToolkit , getTreeLock , gotFocus , handleEvent , hasFocus , 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 , requestFocus , requestFocus , requestFocusInWindow , resize , resize , setBounds , setBounds , setComponentOrientation , setCursor , setDropTarget , setFocusable , setFocusTraversalKeysEnabled , setIgnoreRepaint , setLocale , setLocation , setLocation , setMixingCutoutShape , setName , setSize , setSize , show , show , size , toString , transferFocus , transferFocusBackward , transferFocusUpCycle
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/ChessMenuController.html b/docs/com/amirhn/GUI/ChessMenuController.html
new file mode 100644
index 0000000..f03a89e
--- /dev/null
+++ b/docs/com/amirhn/GUI/ChessMenuController.html
@@ -0,0 +1,182 @@
+
+
+
+
+ChessMenuController
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+All Known Implementing Classes:
+ChessController
+
+
+public interface ChessMenuController
+The interface Chess menu controller.
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Abstract Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+newGame
+void newGame ()
+New game.
+
+
+
+
+loadFEN
+void loadFEN ()
+Load fen.
+
+
+
+
+undoMove
+void undoMove ()
+Undo move.
+
+
+
+
+applyRandomMove
+void applyRandomMove ()
+Apply random move.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/BoardPanel.html b/docs/com/amirhn/GUI/Components/BoardPanel.html
new file mode 100644
index 0000000..19d57c3
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/BoardPanel.html
@@ -0,0 +1,447 @@
+
+
+
+
+BoardPanel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Board panel.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
void
+
+
+
Reset location states.
+
+
void
+
+
+
Sets location listener.
+
+
void
+
+
+
+
+
+
+
Methods inherited from class javax.swing.JLayeredPane
+
addImpl , getAccessibleContext , getComponentCountInLayer , getComponentsInLayer , getComponentToLayer , getIndexOf , getLayer , getLayer , getLayeredPaneAbove , getObjectForLayer , getPosition , highestLayer , insertIndexForLayer , isOptimizedDrawingEnabled , lowestLayer , moveToBack , moveToFront , paint , paramString , putLayer , remove , removeAll , setLayer , setLayer , setPosition
+
+
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 , getUI , getUIClassID , getVerifyInputWhenFocusTarget , getVetoableChangeListeners , getVisibleRect , getWidth , getX , getY , grabFocus , hide , isDoubleBuffered , isLightweightComponent , isManagingFocus , isOpaque , isPaintingForPrint , isPaintingOrigin , isPaintingTile , isRequestFocusEnabled , isValidateRoot , 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 , updateUI
+
+
Methods inherited from class java.awt.Container
+
add , add , add , add , add , addContainerListener , 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 , 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 , getPropertyChangeListeners , getPropertyChangeListeners , getSize , getToolkit , getTreeLock , gotFocus , handleEvent , hasFocus , 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 , requestFocus , requestFocus , requestFocusInWindow , resize , resize , setBounds , setBounds , setComponentOrientation , setCursor , setDropTarget , setFocusable , setFocusTraversalKeysEnabled , setIgnoreRepaint , setLocale , setLocation , setLocation , setMixingCutoutShape , setName , setSize , setSize , show , show , size , toString , transferFocus , transferFocusBackward , transferFocusUpCycle
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+BoardPanel
+public BoardPanel (int rows,
+ int columns)
+Instantiates a new Board panel.
+
+Parameters:
+rows
- the rows
+columns
- the columns
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+setLocationListener
+
+Sets location listener.
+
+Parameters:
+locationListener
- the location listener
+
+
+
+
+
+addPiecePanel
+
+Add piece panel.
+
+Parameters:
+piecePanel
- the piece panel
+location
- the location
+
+
+
+
+
+removePiecePanels
+public void removePiecePanels ()
+Remove piece panels.
+
+
+
+
+resetLocationStates
+public void resetLocationStates ()
+Reset location states.
+
+
+
+
+setLocationState
+
+Sets location state.
+
+Parameters:
+location
- the location
+state
- the state
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/LocationPanel.html b/docs/com/amirhn/GUI/Components/LocationPanel.html
new file mode 100644
index 0000000..5d3df37
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/LocationPanel.html
@@ -0,0 +1,281 @@
+
+
+
+
+LocationPanel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Location panel.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
Methods inherited from class javax.swing.JLayeredPane
+
addImpl , getAccessibleContext , getComponentCountInLayer , getComponentsInLayer , getComponentToLayer , getIndexOf , getLayer , getLayer , getLayeredPaneAbove , getObjectForLayer , getPosition , highestLayer , insertIndexForLayer , isOptimizedDrawingEnabled , lowestLayer , moveToBack , moveToFront , paint , paramString , putLayer , remove , removeAll , setLayer , setLayer , setPosition
+
+
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 , getUI , getUIClassID , getVerifyInputWhenFocusTarget , getVetoableChangeListeners , getVisibleRect , getWidth , getX , getY , grabFocus , hide , isDoubleBuffered , isLightweightComponent , isManagingFocus , isOpaque , isPaintingForPrint , isPaintingOrigin , isPaintingTile , isRequestFocusEnabled , isValidateRoot , 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 , updateUI
+
+
Methods inherited from class java.awt.Container
+
add , add , add , add , add , addContainerListener , 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 , 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 , getPropertyChangeListeners , getPropertyChangeListeners , getSize , getToolkit , getTreeLock , gotFocus , handleEvent , hasFocus , 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 , requestFocus , requestFocus , requestFocusInWindow , resize , resize , setBounds , setBounds , setComponentOrientation , setCursor , setDropTarget , setFocusable , setFocusTraversalKeysEnabled , setIgnoreRepaint , setLocale , setLocation , setLocation , setMixingCutoutShape , setName , setSize , setSize , show , show , size , toString , transferFocus , transferFocusBackward , transferFocusUpCycle
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+Size
+
+The constant Size.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+LocationPanel
+public LocationPanel (boolean isLight)
+Instantiates a new Location panel.
+
+Parameters:
+isLight
- the is light
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+setState
+
+Sets state.
+
+Parameters:
+state
- the state
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/LocationState.html b/docs/com/amirhn/GUI/Components/LocationState.html
new file mode 100644
index 0000000..bb39061
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/LocationState.html
@@ -0,0 +1,292 @@
+
+
+
+
+LocationState
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
Lastmove location state.
+
+
+
+
Normal location state.
+
+
+
+
Selected location state.
+
+
+
+
Suggested location state.
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+LASTMOVE
+
+Lastmove location state.
+
+
+
+
+SELECTED
+
+Selected location state.
+
+
+
+
+SUGGESTED
+
+Suggested location state.
+
+
+
+
+NORMAL
+
+Normal location state.
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum class has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/PieceImageIcon.html b/docs/com/amirhn/GUI/Components/PieceImageIcon.html
new file mode 100644
index 0000000..8a00bd5
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/PieceImageIcon.html
@@ -0,0 +1,191 @@
+
+
+
+
+PieceImageIcon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Piece image icon.
+
+
+
+
+
+
+
+Method Summary
+
+
Methods inherited from class javax.swing.ImageIcon
+
getAccessibleContext , getDescription , getIconHeight , getIconWidth , getImage , getImageLoadStatus , getImageObserver , loadImage , paintIcon , setDescription , setImage , setImageObserver , toString
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PieceImageIcon
+public PieceImageIcon (String color,
+ char typeLetter)
+Instantiates a new Piece image icon.
+
+Parameters:
+color
- the color
+typeLetter
- the type letter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/PiecePanel.html b/docs/com/amirhn/GUI/Components/PiecePanel.html
new file mode 100644
index 0000000..b373275
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/PiecePanel.html
@@ -0,0 +1,256 @@
+
+
+
+
+PiecePanel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Piece panel.
+
+
+
+
+
+
+
+Method Summary
+
+
+
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 , hide , isDoubleBuffered , isLightweightComponent , isManagingFocus , isOpaque , isOptimizedDrawingEnabled , isPaintingForPrint , isPaintingOrigin , 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 , getPropertyChangeListeners , getPropertyChangeListeners , getSize , getToolkit , getTreeLock , gotFocus , handleEvent , hasFocus , 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 , requestFocus , requestFocus , requestFocusInWindow , resize , resize , setBounds , setBounds , setComponentOrientation , setCursor , setDropTarget , setFocusable , setFocusTraversalKeysEnabled , setIgnoreRepaint , setLocale , setLocation , setLocation , setMixingCutoutShape , setName , setSize , setSize , show , show , size , toString , transferFocus , transferFocusBackward , transferFocusUpCycle
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+Size
+
+The constant Size.
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PiecePanel
+
+Instantiates a new Piece panel.
+
+Parameters:
+icon
- the icon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/TablePanel.html b/docs/com/amirhn/GUI/Components/TablePanel.html
new file mode 100644
index 0000000..1ed1e98
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/TablePanel.html
@@ -0,0 +1,326 @@
+
+
+
+
+TablePanel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Table panel.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
void
+
+
+
Reset location states.
+
+
+
+
+
+
+
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 , hide , isDoubleBuffered , isLightweightComponent , isManagingFocus , isOpaque , isOptimizedDrawingEnabled , isPaintingForPrint , isPaintingOrigin , 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 , getPropertyChangeListeners , getPropertyChangeListeners , getSize , getToolkit , getTreeLock , gotFocus , handleEvent , hasFocus , 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 , requestFocus , requestFocus , requestFocusInWindow , resize , resize , setBounds , setBounds , setComponentOrientation , setCursor , setDropTarget , setFocusable , setFocusTraversalKeysEnabled , setIgnoreRepaint , setLocale , setLocation , setLocation , setMixingCutoutShape , setName , setSize , setSize , show , show , size , toString , transferFocus , transferFocusBackward , transferFocusUpCycle
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+TablePanel
+public TablePanel (int rows,
+ int columns)
+Instantiates a new Table panel.
+
+Parameters:
+rows
- the rows
+columns
- the columns
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getLocationPanel
+
+Gets location panel.
+
+Parameters:
+location
- the location
+Returns:
+the location panel
+
+
+
+
+
+getLocationPanel
+
+Gets location panel.
+
+Parameters:
+i
- the
+j
- the j
+Returns:
+the location panel
+
+
+
+
+
+resetLocationStates
+public void resetLocationStates ()
+Reset location states.
+
+
+
+
+pointOf
+
+Point of point.
+
+Parameters:
+location
- the location
+Returns:
+the point
+
+
+
+
+
+locationOf
+
+Location of location.
+
+Parameters:
+point
- the point
+Returns:
+the location
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/package-summary.html b/docs/com/amirhn/GUI/Components/package-summary.html
new file mode 100644
index 0000000..81682bc
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/package-summary.html
@@ -0,0 +1,128 @@
+
+
+
+
+com.amirhn.GUI.Components
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn.GUI.Components
+
+
+
+
+
+
+
+
All Classes and Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
The type Location panel.
+
+
+
+
The enum Location state.
+
+
+
+
The type Piece image icon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Components/package-tree.html b/docs/com/amirhn/GUI/Components/package-tree.html
new file mode 100644
index 0000000..f15ab22
--- /dev/null
+++ b/docs/com/amirhn/GUI/Components/package-tree.html
@@ -0,0 +1,113 @@
+
+
+
+
+com.amirhn.GUI.Components Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Constants.html b/docs/com/amirhn/GUI/Constants.html
new file mode 100644
index 0000000..e147b31
--- /dev/null
+++ b/docs/com/amirhn/GUI/Constants.html
@@ -0,0 +1,350 @@
+
+
+
+
+Constants
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Constants
+
extends Object
+The type Constants.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
The constant CaptureSoundPath.
+
+
+
+
+
The constant DarkTileColor.
+
+
+
+
+
The constant GameTitle.
+
+
+
+
+
The constant GreenColor.
+
+
+
+
+
The constant LightTileColor.
+
+
+
+
+
The constant MoveSoundPath.
+
+
+
+
+
The constant PieceImageDirectory.
+
+
+
+
+
The constant PieceSize.
+
+
+
+
+
The constant SoundDirectory.
+
+
+
+
+
The constant TileSize.
+
+
+
+
+
The constant TransparentColor.
+
+
+
+
+
The constant YellowGreenColor.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+PieceSize
+
+The constant PieceSize.
+
+
+
+
+TileSize
+
+The constant TileSize.
+
+
+
+
+LightTileColor
+public static final Color LightTileColor
+The constant LightTileColor.
+
+
+
+
+DarkTileColor
+public static final Color DarkTileColor
+The constant DarkTileColor.
+
+
+
+
+YellowGreenColor
+public static final Color YellowGreenColor
+The constant YellowGreenColor.
+
+
+
+
+GreenColor
+public static final Color GreenColor
+The constant GreenColor.
+
+
+
+
+TransparentColor
+public static final Color TransparentColor
+The constant TransparentColor.
+
+
+
+
+GameTitle
+public static final String GameTitle
+The constant GameTitle.
+
+See Also:
+
+
+
+
+
+
+
+
+PieceImageDirectory
+public static final String PieceImageDirectory
+The constant PieceImageDirectory.
+
+See Also:
+
+
+
+
+
+
+
+
+SoundDirectory
+public static final String SoundDirectory
+The constant SoundDirectory.
+
+See Also:
+
+
+
+
+
+
+
+
+MoveSoundPath
+public static final String MoveSoundPath
+The constant MoveSoundPath.
+
+See Also:
+
+
+
+
+
+
+
+
+CaptureSoundPath
+public static final String CaptureSoundPath
+The constant CaptureSoundPath.
+
+See Also:
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Constants
+public Constants ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Listeners/LocationListener.html b/docs/com/amirhn/GUI/Listeners/LocationListener.html
new file mode 100644
index 0000000..e8a6c0b
--- /dev/null
+++ b/docs/com/amirhn/GUI/Listeners/LocationListener.html
@@ -0,0 +1,200 @@
+
+
+
+
+LocationListener
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+All Known Implementing Classes:
+ChessController
+
+
+public interface LocationListener
+The interface Location listener.
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Abstract Methods
+
+
+
+
+
+
boolean
+
+
+
Is location draggable boolean.
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+locationSelected
+void locationSelected (Location location)
+Location selected.
+
+Parameters:
+location
- the location
+
+
+
+
+
+locationGrabbed
+
+Location grabbed.
+
+Parameters:
+location
- the location
+
+
+
+
+
+locationDropped
+
+Location dropped.
+
+Parameters:
+location
- the location
+
+
+
+
+
+isLocationDraggable
+boolean isLocationDraggable (Location location)
+Is location draggable boolean.
+
+Parameters:
+location
- the location
+Returns:
+the boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Listeners/package-summary.html b/docs/com/amirhn/GUI/Listeners/package-summary.html
new file mode 100644
index 0000000..6376bff
--- /dev/null
+++ b/docs/com/amirhn/GUI/Listeners/package-summary.html
@@ -0,0 +1,106 @@
+
+
+
+
+com.amirhn.GUI.Listeners
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn.GUI.Listeners
+
+
+
+
+
+
+
+
Interfaces
+
+
+
+
+
+
The interface Location listener.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/Listeners/package-tree.html b/docs/com/amirhn/GUI/Listeners/package-tree.html
new file mode 100644
index 0000000..f48cc78
--- /dev/null
+++ b/docs/com/amirhn/GUI/Listeners/package-tree.html
@@ -0,0 +1,67 @@
+
+
+
+
+com.amirhn.GUI.Listeners Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/package-summary.html b/docs/com/amirhn/GUI/package-summary.html
new file mode 100644
index 0000000..a20cec0
--- /dev/null
+++ b/docs/com/amirhn/GUI/package-summary.html
@@ -0,0 +1,134 @@
+
+
+
+
+com.amirhn.GUI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn.GUI
+
+
+
+
+
+
+
+
All Classes and Interfaces Interfaces Classes
+
+
+
+
+
+
+
The type Chess controller.
+
+
+
+
+
+
The type Chess menu bar.
+
+
+
+
The interface Chess menu controller.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/GUI/package-tree.html b/docs/com/amirhn/GUI/package-tree.html
new file mode 100644
index 0000000..980985c
--- /dev/null
+++ b/docs/com/amirhn/GUI/package-tree.html
@@ -0,0 +1,108 @@
+
+
+
+
+com.amirhn.GUI Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/Board.html b/docs/com/amirhn/Game/Board.html
new file mode 100644
index 0000000..a64e73a
--- /dev/null
+++ b/docs/com/amirhn/Game/Board.html
@@ -0,0 +1,438 @@
+
+
+
+
+Board
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Board
+
extends Object
+The type Board.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
final int
+
+
+
+
+
+
The Piece by location.
+
+
final int
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
Board (int rows,
+ int columns)
+
+
Instantiates a new Board.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
boolean
+
+
+
+
+
+
+
+
+
+
+
+
boolean
+
+
+
boolean
+
+
+
Is valid location boolean.
+
+
boolean
+
+
+
Is valid piece boolean.
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+rows
+public final int rows
+The Rows.
+
+
+
+
+columns
+public final int columns
+The Rows.
+
+
+
+
+pieceByLocation
+
+The Piece by location.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Board
+public Board (int rows,
+ int columns)
+Instantiates a new Board.
+
+Parameters:
+rows
- the rows
+columns
- the columns
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+fromFEN
+
+From fen board.
+
+Parameters:
+fen
- the fen
+Returns:
+the board
+
+
+
+
+
+setupFEN
+public void setupFEN (String fen)
+Sets fen.
+
+Parameters:
+fen
- the fen
+
+
+
+
+
+isValidLocation
+public boolean isValidLocation (Location location)
+Is valid location boolean.
+
+Parameters:
+location
- the location
+Returns:
+the boolean
+
+
+
+
+
+isOccupied
+public boolean isOccupied (Location location)
+Is occupied boolean.
+
+Parameters:
+location
- the location
+Returns:
+the boolean
+
+
+
+
+
+getPiece
+
+Gets piece.
+
+Parameters:
+location
- the location
+Returns:
+the piece
+
+
+
+
+
+setPiece
+public void setPiece (Piece piece)
+Sets piece.
+
+Parameters:
+piece
- the piece
+
+
+
+
+
+removePiece
+public void removePiece (Piece piece)
+Remove piece.
+
+Parameters:
+piece
- the piece
+
+
+
+
+
+getAllPieces
+
+Gets all pieces.
+
+Returns:
+the all pieces
+
+
+
+
+
+isValidPiece
+public boolean isValidPiece (Piece piece)
+Is valid piece boolean.
+
+Parameters:
+piece
- the piece
+Returns:
+the boolean
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+copy
+
+Copy board.
+
+Returns:
+the board
+
+
+
+
+
+equals
+public boolean equals (Object o)
+Equals boolean.
+
+Overrides:
+equals
in class Object
+Parameters:
+o
- the o
+Returns:
+the boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/Chess.html b/docs/com/amirhn/Game/Chess.html
new file mode 100644
index 0000000..2abb563
--- /dev/null
+++ b/docs/com/amirhn/Game/Chess.html
@@ -0,0 +1,590 @@
+
+
+
+
+Chess
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Chess
+
extends Object
+The type Chess.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The constant OriginalFen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Chess.
+
+
+
+
Instantiates a new Chess.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
boolean
+
+
+
Is 50 move rule boolean.
+
+
boolean
+
+
+
boolean
+
+
+
boolean
+
+
+
boolean
+
+
+
boolean
+
+
+
Is threefold repetition boolean.
+
+
+
+
+
Move from string move.
+
+
void
+
+
+
void
+
+
+
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+OriginalFen
+public static final String OriginalFen
+The constant OriginalFen.
+
+See Also:
+
+
+
+
+
+
+
+
+whitePlayer
+
+The White player.
+
+
+
+
+blackPlayer
+
+The Black player.
+
+
+
+
+
+
+
+
+
+
+history
+
+The History.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Chess
+public Chess ()
+Instantiates a new Chess.
+
+
+
+
+Chess
+
+Instantiates a new Chess.
+
+Parameters:
+fen
- the fen
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+setupFEN
+public void setupFEN (String fen)
+Sets fen.
+
+Parameters:
+fen
- the fen
+
+
+
+
+
+setPiece
+public void setPiece (Piece piece)
+Sets piece.
+
+Parameters:
+piece
- the piece
+
+
+
+
+
+getBoard
+
+Gets board.
+
+Returns:
+the board
+
+
+
+
+
+getTurnPlayer
+
+Gets turn player.
+
+Returns:
+the turn player
+
+
+
+
+
+getOpponentPlayer
+public Player getOpponentPlayer ()
+Gets opponent player.
+
+Returns:
+the opponent player
+
+
+
+
+
+getPlayer
+
+Gets player.
+
+Parameters:
+color
- the color
+Returns:
+the player
+
+
+
+
+
+getAllowedMoves
+
+Gets allowed moves.
+
+Returns:
+the allowed moves
+
+
+
+
+
+getRandomMove
+public Move getRandomMove ()
+Gets random move.
+
+Returns:
+the random move
+
+
+
+
+
+applyMove
+public boolean applyMove (Move move)
+Apply move boolean.
+
+Parameters:
+move
- the move
+Returns:
+the boolean
+
+
+
+
+
+isInCheck
+public boolean isInCheck ()
+Is in check boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+isCheckmate
+public boolean isCheckmate ()
+Is checkmate boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+isStalemate
+public boolean isStalemate ()
+Is stalemate boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+isThreefoldRepetition
+public boolean isThreefoldRepetition ()
+Is threefold repetition boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+is50MoveRule
+public boolean is50MoveRule ()
+Is 50 move rule boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+isDraw
+public boolean isDraw ()
+Is draw boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+getStatus
+
+Gets status.
+
+Returns:
+the status
+
+
+
+
+
+undoMove
+public void undoMove ()
+Undo move.
+
+
+
+
+moveFromString
+
+Move from string move.
+
+Parameters:
+moveString
- the move string
+Returns:
+the move
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/Color.html b/docs/com/amirhn/Game/Color.html
new file mode 100644
index 0000000..4314e3f
--- /dev/null
+++ b/docs/com/amirhn/Game/Color.html
@@ -0,0 +1,340 @@
+
+
+
+
+Color
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Value of piece char color.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+BLACK
+public static final Color BLACK
+Black color.
+
+
+
+
+WHITE
+public static final Color WHITE
+White color.
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+direction
+public final int direction
+The Direction.
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+public static Color [] values ()
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum class has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+valueOfPieceChar
+public static Color valueOfPieceChar (char c)
+Value of piece char color.
+
+Parameters:
+c
- the c
+Returns:
+the color
+
+
+
+
+
+valueOf
+public static Color valueOf (char c)
+Value of color.
+
+Parameters:
+c
- the c
+Returns:
+the color
+
+
+
+
+
+fromString
+
+From string color.
+
+Parameters:
+c
- the c
+Returns:
+the color
+
+
+
+
+
+opposite
+
+Opposite color.
+
+Returns:
+the color
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/Location.html b/docs/com/amirhn/Game/Location.html
new file mode 100644
index 0000000..243ca61
--- /dev/null
+++ b/docs/com/amirhn/Game/Location.html
@@ -0,0 +1,350 @@
+
+
+
+
+Location
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Location
+
extends Object
+The type Location.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
final int
+
+
+
final int
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Location.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
boolean
+
+
+
int
+
+
+
boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+row
+public final int row
+The Row.
+
+
+
+
+column
+public final int column
+The Row.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Location
+public Location (int row,
+ int column)
+Instantiates a new Location.
+
+Parameters:
+row
- the row
+column
- the column
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+valueOf
+
+Value of location.
+
+Parameters:
+loc
- the loc
+Returns:
+the location
+
+
+
+
+
+valueOf
+public static Location valueOf (int row,
+ int column)
+Value of location.
+
+Parameters:
+row
- the row
+column
- the column
+Returns:
+the location
+
+
+
+
+
+byOffset
+public Location byOffset (int dx,
+ int dy)
+By offset location.
+
+Parameters:
+dx
- the dx
+dy
- the dy
+Returns:
+the location
+
+
+
+
+
+isLight
+public boolean isLight ()
+Is light boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+equals
+public boolean equals (Object o)
+Equals boolean.
+
+Overrides:
+equals
in class Object
+Parameters:
+o
- the o
+Returns:
+the boolean
+
+
+
+
+
+hashCode
+public int hashCode ()
+Hash code int.
+
+Overrides:
+hashCode
in class Object
+Returns:
+the int
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/Scene.html b/docs/com/amirhn/Game/Scene.html
new file mode 100644
index 0000000..ab3394f
--- /dev/null
+++ b/docs/com/amirhn/Game/Scene.html
@@ -0,0 +1,226 @@
+
+
+
+
+Scene
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Scene
+
extends Object
+The type Scene.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Scene.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Scene
+
+Instantiates a new Scene.
+
+Parameters:
+board
- the board
+turn
- the turn
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getBoard
+
+Gets board.
+
+Returns:
+the board
+
+
+
+
+
+getTurn
+
+Gets turn.
+
+Returns:
+the turn
+
+
+
+
+
+equals
+public boolean equals (Object o)
+Equals boolean.
+
+Overrides:
+equals
in class Object
+Parameters:
+o
- the o
+Returns:
+the boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/Status.html b/docs/com/amirhn/Game/Status.html
new file mode 100644
index 0000000..e5af71d
--- /dev/null
+++ b/docs/com/amirhn/Game/Status.html
@@ -0,0 +1,260 @@
+
+
+
+
+Status
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+ONGOING
+public static final Status ONGOING
+Ongoing status.
+
+
+
+
+CHECKMATE
+public static final Status CHECKMATE
+Checkmate status.
+
+
+
+
+STALEMATE
+public static final Status STALEMATE
+Stalemate status.
+
+
+
+
+DRAW
+public static final Status DRAW
+Draw status.
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+public static Status [] values ()
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum class has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/package-summary.html b/docs/com/amirhn/Game/package-summary.html
new file mode 100644
index 0000000..72ed323
--- /dev/null
+++ b/docs/com/amirhn/Game/package-summary.html
@@ -0,0 +1,134 @@
+
+
+
+
+com.amirhn.Game
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn.Game
+
+
+
+
+
+
+
+
All Classes and Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Game/package-tree.html b/docs/com/amirhn/Game/package-tree.html
new file mode 100644
index 0000000..e33fef2
--- /dev/null
+++ b/docs/com/amirhn/Game/package-tree.html
@@ -0,0 +1,89 @@
+
+
+
+
+com.amirhn.Game Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Main.html b/docs/com/amirhn/Main.html
new file mode 100644
index 0000000..0721ea8
--- /dev/null
+++ b/docs/com/amirhn/Main.html
@@ -0,0 +1,180 @@
+
+
+
+
+Main
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Main
+
extends Object
+The type com.amirhn.Main.
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
+
+
static void
+
+
+
The entry point of application.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+main
+public static void main (String [] args)
+The entry point of application.
+
+Parameters:
+args
- the input arguments
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/Capture.html b/docs/com/amirhn/Moves/Capture.html
new file mode 100644
index 0000000..670db9d
--- /dev/null
+++ b/docs/com/amirhn/Moves/Capture.html
@@ -0,0 +1,354 @@
+
+
+
+
+Capture
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Direct Known Subclasses:
+EnPassant
+
+
+public class Capture
+
extends Move
+The type Capture.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Capture.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
Apply on board boolean.
+
+
+
+
+
Gets endpoint location.
+
+
+
+
+
Gets startpoint location.
+
+
boolean
+
+
+
Is valid apply on board boolean.
+
+
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+
+
+
+destination
+
+The Destination.
+
+
+
+
+capturePiece
+public Piece capturePiece
+The Capture piece.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Capture
+
+Instantiates a new Capture.
+
+Parameters:
+piece
- the piece
+capturePiece
- the capture piece
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+applyOnBoard
+public boolean applyOnBoard (Board board)
+Apply on board boolean.
+
+Specified by:
+applyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+undoOnBoard
+public void undoOnBoard (Board board)
+Undo on board.
+
+Specified by:
+undoOnBoard
in class Move
+Parameters:
+board
- the board
+
+
+
+
+
+isValidApplyOnBoard
+public boolean isValidApplyOnBoard (Board board)
+Is valid apply on board boolean.
+
+Overrides:
+isValidApplyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+getEndpointLocation
+
+Gets endpoint location.
+
+Specified by:
+getEndpointLocation
in class Move
+Returns:
+the endpoint location
+
+
+
+
+
+getStartpointLocation
+
+Gets startpoint location.
+
+Specified by:
+getStartpointLocation
in class Move
+Returns:
+the startpoint location
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/Castling.html b/docs/com/amirhn/Moves/Castling.html
new file mode 100644
index 0000000..53fd5e7
--- /dev/null
+++ b/docs/com/amirhn/Moves/Castling.html
@@ -0,0 +1,386 @@
+
+
+
+
+Castling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Castling.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
Apply on board boolean.
+
+
+
+
+
+
+
+
Gets endpoint location.
+
+
+
+
+
Gets startpoint location.
+
+
boolean
+
+
+
boolean
+
+
+
Is valid apply on board boolean.
+
+
void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+kingMove
+
+The King move.
+
+
+
+
+rookMove
+
+The King move.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Castling
+public Castling (Walk kingMove,
+ Walk rookMove)
+Instantiates a new Castling.
+
+Parameters:
+kingMove
- the king move
+rookMove
- the rook move
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+generate
+
+Generate castling.
+
+Parameters:
+king
- the king
+rook
- the rook
+Returns:
+the castling
+
+
+
+
+
+isAllowed
+public boolean isAllowed (Chess chess)
+Is allowed boolean.
+
+Overrides:
+isAllowed
in class Move
+Parameters:
+chess
- the chess
+Returns:
+the boolean
+
+
+
+
+
+applyOnBoard
+public boolean applyOnBoard (Board board)
+Apply on board boolean.
+
+Specified by:
+applyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+undoOnBoard
+public void undoOnBoard (Board board)
+Undo on board.
+
+Specified by:
+undoOnBoard
in class Move
+Parameters:
+board
- the board
+
+
+
+
+
+isValidApplyOnBoard
+public boolean isValidApplyOnBoard (Board board)
+Is valid apply on board boolean.
+
+Overrides:
+isValidApplyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+getEndpointLocation
+
+Gets endpoint location.
+
+Specified by:
+getEndpointLocation
in class Move
+Returns:
+the endpoint location
+
+
+
+
+
+getStartpointLocation
+
+Gets startpoint location.
+
+Specified by:
+getStartpointLocation
in class Move
+Returns:
+the startpoint location
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/EnPassant.html b/docs/com/amirhn/Moves/EnPassant.html
new file mode 100644
index 0000000..acffb6c
--- /dev/null
+++ b/docs/com/amirhn/Moves/EnPassant.html
@@ -0,0 +1,357 @@
+
+
+
+
+EnPassant
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class EnPassant
+
extends Capture
+The type En passant.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+
The Second destination.
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new En passant.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
Apply on board boolean.
+
+
+
+
+
Gets endpoint location.
+
+
boolean
+
+
+
boolean
+
+
+
Is valid apply on board boolean.
+
+
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+secondSource
+
+The Second source.
+
+
+
+
+secondDestination
+
+The Second destination.
+
+
+
+
+pushPawnMove
+
+The Push pawn move.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+EnPassant
+public EnPassant (Pawn pawn,
+ Pawn capturePawn)
+Instantiates a new En passant.
+
+Parameters:
+pawn
- the pawn
+capturePawn
- the capture pawn
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+applyOnBoard
+public boolean applyOnBoard (Board board)
+Apply on board boolean.
+
+Overrides:
+applyOnBoard
in class Capture
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+undoOnBoard
+public void undoOnBoard (Board board)
+Undo on board.
+
+Overrides:
+undoOnBoard
in class Capture
+Parameters:
+board
- the board
+
+
+
+
+
+isValidApplyOnBoard
+public boolean isValidApplyOnBoard (Board board)
+Is valid apply on board boolean.
+
+Overrides:
+isValidApplyOnBoard
in class Capture
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+isAllowed
+public boolean isAllowed (Chess chess)
+Is allowed boolean.
+
+Overrides:
+isAllowed
in class Move
+Parameters:
+chess
- the chess
+Returns:
+the boolean
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Capture
+Returns:
+the string
+
+
+
+
+
+getEndpointLocation
+
+Gets endpoint location.
+
+Overrides:
+getEndpointLocation
in class Capture
+Returns:
+the endpoint location
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/LongCastling.html b/docs/com/amirhn/Moves/LongCastling.html
new file mode 100644
index 0000000..d7b8f73
--- /dev/null
+++ b/docs/com/amirhn/Moves/LongCastling.html
@@ -0,0 +1,211 @@
+
+
+
+
+LongCastling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class LongCastling
+
extends Castling
+The type Long castling.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Long castling.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+LongCastling
+public LongCastling (King king,
+ Rook rook)
+Instantiates a new Long castling.
+
+Parameters:
+king
- the king
+rook
- the rook
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/Move.html b/docs/com/amirhn/Moves/Move.html
new file mode 100644
index 0000000..f1fe07c
--- /dev/null
+++ b/docs/com/amirhn/Moves/Move.html
@@ -0,0 +1,324 @@
+
+
+
+
+Move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Move.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Abstract Methods Concrete Methods
+
+
+
+
+
+
abstract boolean
+
+
+
Apply on board boolean.
+
+
+
+
+
Gets endpoint location.
+
+
+
+
+
Gets startpoint location.
+
+
boolean
+
+
+
boolean
+
+
+
Is valid apply on board boolean.
+
+
protected abstract void
+
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Move
+
+Instantiates a new Move.
+
+Parameters:
+type
- the type
+piece
- the piece
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+isAllowed
+public boolean isAllowed (Chess chess)
+Is allowed boolean.
+
+Parameters:
+chess
- the chess
+Returns:
+the boolean
+
+
+
+
+
+applyOnBoard
+public abstract boolean applyOnBoard (Board board)
+Apply on board boolean.
+
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+undoOnBoard
+protected abstract void undoOnBoard (Board board)
+Undo on board.
+
+Parameters:
+board
- the board
+
+
+
+
+
+isValidApplyOnBoard
+public boolean isValidApplyOnBoard (Board board)
+Is valid apply on board boolean.
+
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+getStartpointLocation
+public abstract Location getStartpointLocation ()
+Gets startpoint location.
+
+Returns:
+the startpoint location
+
+
+
+
+
+getEndpointLocation
+public abstract Location getEndpointLocation ()
+Gets endpoint location.
+
+Returns:
+the endpoint location
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/MoveType.html b/docs/com/amirhn/Moves/MoveType.html
new file mode 100644
index 0000000..16e8122
--- /dev/null
+++ b/docs/com/amirhn/Moves/MoveType.html
@@ -0,0 +1,260 @@
+
+
+
+
+MoveType
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+WALK
+
+Walk move type.
+
+
+
+
+CAPTURE
+
+Capture move type.
+
+
+
+
+CASTLING
+
+Castling move type.
+
+
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum class has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/PawnPromotion.html b/docs/com/amirhn/Moves/PawnPromotion.html
new file mode 100644
index 0000000..4b266be
--- /dev/null
+++ b/docs/com/amirhn/Moves/PawnPromotion.html
@@ -0,0 +1,233 @@
+
+
+
+
+PawnPromotion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class PawnPromotion
+
extends Promotion
+The type Pawn promotion.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Pawn promotion.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
boolean
+
+
+
Is valid apply on board boolean.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+PawnPromotion
+
+Instantiates a new Pawn promotion.
+
+Parameters:
+move
- the move
+promotedPieceType
- the promoted piece type
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+isValidApplyOnBoard
+public boolean isValidApplyOnBoard (Board board)
+Is valid apply on board boolean.
+
+Overrides:
+isValidApplyOnBoard
in class Promotion
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+isAllowed
+public boolean isAllowed (Chess chess)
+Is allowed boolean.
+
+Overrides:
+isAllowed
in class Move
+Parameters:
+chess
- the chess
+Returns:
+the boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/Promotion.html b/docs/com/amirhn/Moves/Promotion.html
new file mode 100644
index 0000000..850d70c
--- /dev/null
+++ b/docs/com/amirhn/Moves/Promotion.html
@@ -0,0 +1,342 @@
+
+
+
+
+Promotion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+Direct Known Subclasses:
+PawnPromotion
+
+
+public abstract class Promotion
+
extends Move
+The type Promotion.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Promotion.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
Apply on board boolean.
+
+
+
+
+
Gets endpoint location.
+
+
+
+
+
Gets startpoint location.
+
+
boolean
+
+
+
Is valid apply on board boolean.
+
+
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Promotion
+
+Instantiates a new Promotion.
+
+Parameters:
+move
- the move
+promotedPieceType
- the promoted piece type
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+applyOnBoard
+public boolean applyOnBoard (Board board)
+Apply on board boolean.
+
+Specified by:
+applyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+undoOnBoard
+public void undoOnBoard (Board board)
+Undo on board.
+
+Specified by:
+undoOnBoard
in class Move
+Parameters:
+board
- the board
+
+
+
+
+
+isValidApplyOnBoard
+public boolean isValidApplyOnBoard (Board board)
+Is valid apply on board boolean.
+
+Overrides:
+isValidApplyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+getEndpointLocation
+
+Gets endpoint location.
+
+Specified by:
+getEndpointLocation
in class Move
+Returns:
+the endpoint location
+
+
+
+
+
+getStartpointLocation
+
+Gets startpoint location.
+
+Specified by:
+getStartpointLocation
in class Move
+Returns:
+the startpoint location
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/ShortCastling.html b/docs/com/amirhn/Moves/ShortCastling.html
new file mode 100644
index 0000000..1816353
--- /dev/null
+++ b/docs/com/amirhn/Moves/ShortCastling.html
@@ -0,0 +1,211 @@
+
+
+
+
+ShortCastling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class ShortCastling
+
extends Castling
+The type Short castling.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Short castling.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+ShortCastling
+public ShortCastling (King king,
+ Rook rook)
+Instantiates a new Short castling.
+
+Parameters:
+king
- the king
+rook
- the rook
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/Walk.html b/docs/com/amirhn/Moves/Walk.html
new file mode 100644
index 0000000..da9f2e8
--- /dev/null
+++ b/docs/com/amirhn/Moves/Walk.html
@@ -0,0 +1,338 @@
+
+
+
+
+Walk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Walk
+
extends Move
+The type Walk.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Walk.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
Apply on board boolean.
+
+
+
+
+
Gets endpoint location.
+
+
+
+
+
Gets startpoint location.
+
+
boolean
+
+
+
Is valid apply on board boolean.
+
+
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+
+
+
+destination
+
+The Destination.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Walk
+
+Instantiates a new Walk.
+
+Parameters:
+sourcePiece
- the source piece
+destination
- the destination
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+applyOnBoard
+public boolean applyOnBoard (Board board)
+Apply on board boolean.
+
+Specified by:
+applyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+undoOnBoard
+public void undoOnBoard (Board board)
+Undo on board.
+
+Specified by:
+undoOnBoard
in class Move
+Parameters:
+board
- the board
+
+
+
+
+
+isValidApplyOnBoard
+public boolean isValidApplyOnBoard (Board board)
+Is valid apply on board boolean.
+
+Overrides:
+isValidApplyOnBoard
in class Move
+Parameters:
+board
- the board
+Returns:
+the boolean
+
+
+
+
+
+getStartpointLocation
+
+Gets startpoint location.
+
+Specified by:
+getStartpointLocation
in class Move
+Returns:
+the startpoint location
+
+
+
+
+
+getEndpointLocation
+
+Gets endpoint location.
+
+Specified by:
+getEndpointLocation
in class Move
+Returns:
+the endpoint location
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/package-summary.html b/docs/com/amirhn/Moves/package-summary.html
new file mode 100644
index 0000000..e8490dc
--- /dev/null
+++ b/docs/com/amirhn/Moves/package-summary.html
@@ -0,0 +1,150 @@
+
+
+
+
+com.amirhn.Moves
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn.Moves
+
+
+
+
+
+
+
+
All Classes and Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
The type Long castling.
+
+
+
+
+
+
+
+
The type Pawn promotion.
+
+
+
+
+
+
The type Short castling.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Moves/package-tree.html b/docs/com/amirhn/Moves/package-tree.html
new file mode 100644
index 0000000..567443e
--- /dev/null
+++ b/docs/com/amirhn/Moves/package-tree.html
@@ -0,0 +1,105 @@
+
+
+
+
+com.amirhn.Moves Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+Class Hierarchy
+
+java.lang.Object
+
+com.amirhn.Moves.Move
+
+
+
+
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/Bishop.html b/docs/com/amirhn/Pieces/Bishop.html
new file mode 100644
index 0000000..e726692
--- /dev/null
+++ b/docs/com/amirhn/Pieces/Bishop.html
@@ -0,0 +1,208 @@
+
+
+
+
+Bishop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Bishop
+
extends Piece
+The type Bishop.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Bishop.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Gets threatened locations.
+
+
+
+
+
+
Methods inherited from class com.amirhn.Pieces.Piece
+
canBeCapturedBy , copy , equals , generate , generate , getAllowedMoves , getLocation , getNaturalMoves , getSymbol , hashCode , hasMoved , isAllowedToMove , removeLocation , setLocation , setLocationBack , toString
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Bishop
+
+Instantiates a new Bishop.
+
+Parameters:
+color
- the color
+location
- the location
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Specified by:
+getThreatenedLocations
in class Piece
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/King.html b/docs/com/amirhn/Pieces/King.html
new file mode 100644
index 0000000..0abd73f
--- /dev/null
+++ b/docs/com/amirhn/Pieces/King.html
@@ -0,0 +1,248 @@
+
+
+
+
+King
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class King
+
extends Piece
+The type King.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new King.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
Can be captured by boolean.
+
+
+
+
+
+
+
+
Gets threatened locations.
+
+
+
+
+
+
Methods inherited from class com.amirhn.Pieces.Piece
+
copy , equals , generate , generate , getAllowedMoves , getLocation , getSymbol , hashCode , hasMoved , isAllowedToMove , removeLocation , setLocation , setLocationBack , toString
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+King
+
+Instantiates a new King.
+
+Parameters:
+color
- the color
+location
- the location
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+canBeCapturedBy
+public boolean canBeCapturedBy (Piece piece)
+Can be captured by boolean.
+
+Overrides:
+canBeCapturedBy
in class Piece
+Parameters:
+piece
- the piece
+Returns:
+the boolean
+
+
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Specified by:
+getThreatenedLocations
in class Piece
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+getNaturalMoves
+
+Gets natural moves.
+
+Overrides:
+getNaturalMoves
in class Piece
+Parameters:
+board
- the board
+Returns:
+the natural moves
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/Knight.html b/docs/com/amirhn/Pieces/Knight.html
new file mode 100644
index 0000000..94155d6
--- /dev/null
+++ b/docs/com/amirhn/Pieces/Knight.html
@@ -0,0 +1,208 @@
+
+
+
+
+Knight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Knight
+
extends Piece
+The type Knight.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Knight.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Gets threatened locations.
+
+
+
+
+
+
Methods inherited from class com.amirhn.Pieces.Piece
+
canBeCapturedBy , copy , equals , generate , generate , getAllowedMoves , getLocation , getNaturalMoves , getSymbol , hashCode , hasMoved , isAllowedToMove , removeLocation , setLocation , setLocationBack , toString
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Knight
+
+Instantiates a new Knight.
+
+Parameters:
+color
- the color
+location
- the location
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Specified by:
+getThreatenedLocations
in class Piece
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/Pawn.html b/docs/com/amirhn/Pieces/Pawn.html
new file mode 100644
index 0000000..f132a7d
--- /dev/null
+++ b/docs/com/amirhn/Pieces/Pawn.html
@@ -0,0 +1,254 @@
+
+
+
+
+Pawn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Pawn
+
extends Piece
+The type Pawn.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Pawn.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
Gets threatened locations.
+
+
+
+
+
+
Methods inherited from class com.amirhn.Pieces.Piece
+
canBeCapturedBy , copy , equals , generate , generate , getAllowedMoves , getLocation , getSymbol , hashCode , hasMoved , isAllowedToMove , removeLocation , setLocation , setLocationBack , toString
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+direction
+public final int direction
+The Direction.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Pawn
+
+Instantiates a new Pawn.
+
+Parameters:
+color
- the color
+location
- the location
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getNaturalMoves
+
+Gets natural moves.
+
+Overrides:
+getNaturalMoves
in class Piece
+Parameters:
+board
- the board
+Returns:
+the natural moves
+
+
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Specified by:
+getThreatenedLocations
in class Piece
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/Piece.html b/docs/com/amirhn/Pieces/Piece.html
new file mode 100644
index 0000000..9fa24e0
--- /dev/null
+++ b/docs/com/amirhn/Pieces/Piece.html
@@ -0,0 +1,548 @@
+
+
+
+
+Piece
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
+
+
+
protected int
+
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Piece.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
+
+
+
+
+
+
boolean
+
+
+
Can be captured by boolean.
+
+
+
+
+
boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
char
+
+
+
+
+
+
Gets threatened locations.
+
+
int
+
+
+
boolean
+
+
+
boolean
+
+
+
Is allowed to move boolean.
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+
+
+
+
+
+
+location
+
+The Location.
+
+
+
+
+moves
+protected int moves
+The Moves.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Piece
+
+Instantiates a new Piece.
+
+Parameters:
+type
- the type
+color
- the color
+location
- the location
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+generate
+
+Generate piece.
+
+Parameters:
+pieceType
- the piece type
+color
- the color
+location
- the location
+Returns:
+the piece
+
+
+
+
+
+generate
+
+Generate piece.
+
+Parameters:
+fen
- the fen
+location
- the location
+Returns:
+the piece
+
+
+
+
+
+getLocation
+
+Gets location.
+
+Returns:
+the location
+
+
+
+
+
+setLocation
+public void setLocation (Location location)
+Sets location.
+
+Parameters:
+location
- the location
+
+
+
+
+
+setLocationBack
+public void setLocationBack (Location location)
+Sets location back.
+
+Parameters:
+location
- the location
+
+
+
+
+
+removeLocation
+public void removeLocation ()
+Remove location.
+
+
+
+
+hasMoved
+public boolean hasMoved ()
+Has moved boolean.
+
+Returns:
+the boolean
+
+
+
+
+
+equals
+public boolean equals (Object o)
+Equals boolean.
+
+Overrides:
+equals
in class Object
+Parameters:
+o
- the o
+Returns:
+the boolean
+
+
+
+
+
+hashCode
+public int hashCode ()
+Hash code int.
+
+Overrides:
+hashCode
in class Object
+Returns:
+the int
+
+
+
+
+
+toString
+
+To string string.
+
+Overrides:
+toString
in class Object
+Returns:
+the string
+
+
+
+
+
+isAllowedToMove
+public boolean isAllowedToMove (Chess chess)
+Is allowed to move boolean.
+
+Parameters:
+chess
- the chess
+Returns:
+the boolean
+
+
+
+
+
+getAllowedMoves
+
+Gets allowed moves.
+
+Parameters:
+chess
- the chess
+Returns:
+the allowed moves
+
+
+
+
+
+canBeCapturedBy
+public boolean canBeCapturedBy (Piece piece)
+Can be captured by boolean.
+
+Parameters:
+piece
- the piece
+Returns:
+the boolean
+
+
+
+
+
+getSymbol
+public char getSymbol ()
+Gets symbol.
+
+Returns:
+the symbol
+
+
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+getNaturalMoves
+
+Gets natural moves.
+
+Parameters:
+board
- the board
+Returns:
+the natural moves
+
+
+
+
+
+copy
+
+Copy piece.
+
+Returns:
+the piece
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/PieceType.html b/docs/com/amirhn/Pieces/PieceType.html
new file mode 100644
index 0000000..a780dfd
--- /dev/null
+++ b/docs/com/amirhn/Pieces/PieceType.html
@@ -0,0 +1,362 @@
+
+
+
+
+PieceType
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+
+
+
+
+
+Enum Constant Summary
+Enum Constants
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
final char
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Static Methods Instance Methods Concrete Methods
+
+
+
+
+
+
char
+
+
+
+
+
+
+
+
+
Returns the enum constant of this class with the specified name.
+
+
+
+
+
Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+
+
+
+
+
Methods inherited from class java.lang.Enum
+
clone , compareTo , describeConstable , equals , finalize , getDeclaringClass , hashCode , name , ordinal , toString , valueOf
+
+
+
+
+
+
+
+
+
+
+Enum Constant Details
+
+
+
+KING
+
+King piece type.
+
+
+
+
+QUEEN
+
+Queen piece type.
+
+
+
+
+KNIGHT
+
+Knight piece type.
+
+
+
+
+ROOK
+
+Rook piece type.
+
+
+
+
+BISHOP
+
+Bishop piece type.
+
+
+
+
+PAWN
+
+Pawn piece type.
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+letter
+public final char letter
+The Letter.
+
+
+
+
+symbols
+
+The Symbols.
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+values
+
+Returns an array containing the constants of this enum class, in
+the order they are declared.
+
+Returns:
+an array containing the constants of this enum class, in the order they are declared
+
+
+
+
+
+valueOf
+
+Returns the enum constant of this class with the specified name.
+The string must match exactly an identifier used to declare an
+enum constant in this class. (Extraneous whitespace characters are
+not permitted.)
+
+Parameters:
+name
- the name of the enum constant to be returned.
+Returns:
+the enum constant with the specified name
+Throws:
+IllegalArgumentException
- if this enum class has no constant with the specified name
+NullPointerException
- if the argument is null
+
+
+
+
+
+valueOf
+
+Value of piece type.
+
+Parameters:
+letter
- the letter
+Returns:
+the piece type
+
+
+
+
+
+getSymbol
+public char getSymbol (Color color)
+Gets symbol.
+
+Parameters:
+color
- the color
+Returns:
+the symbol
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/Queen.html b/docs/com/amirhn/Pieces/Queen.html
new file mode 100644
index 0000000..b589405
--- /dev/null
+++ b/docs/com/amirhn/Pieces/Queen.html
@@ -0,0 +1,260 @@
+
+
+
+
+Queen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Queen
+
extends Piece
+The type Queen.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Queen.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Gets threatened locations.
+
+
void
+
+
+
void
+
+
+
void
+
+
+
+
+
+
+
Methods inherited from class com.amirhn.Pieces.Piece
+
canBeCapturedBy , copy , equals , generate , generate , getAllowedMoves , getLocation , getNaturalMoves , getSymbol , hashCode , hasMoved , isAllowedToMove , toString
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Queen
+
+Instantiates a new Queen.
+
+Parameters:
+color
- the color
+location
- the location
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+setLocation
+public void setLocation (Location location)
+Sets location.
+
+Overrides:
+setLocation
in class Piece
+Parameters:
+location
- the location
+
+
+
+
+
+setLocationBack
+public void setLocationBack (Location location)
+Sets location back.
+
+Overrides:
+setLocationBack
in class Piece
+Parameters:
+location
- the location
+
+
+
+
+
+removeLocation
+public void removeLocation ()
+Remove location.
+
+Overrides:
+removeLocation
in class Piece
+
+
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Specified by:
+getThreatenedLocations
in class Piece
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/Rook.html b/docs/com/amirhn/Pieces/Rook.html
new file mode 100644
index 0000000..9aec2b3
--- /dev/null
+++ b/docs/com/amirhn/Pieces/Rook.html
@@ -0,0 +1,208 @@
+
+
+
+
+Rook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Rook
+
extends Piece
+The type Rook.
+
+
+
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Rook.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
Gets threatened locations.
+
+
+
+
+
+
Methods inherited from class com.amirhn.Pieces.Piece
+
canBeCapturedBy , copy , equals , generate , generate , getAllowedMoves , getLocation , getNaturalMoves , getSymbol , hashCode , hasMoved , isAllowedToMove , removeLocation , setLocation , setLocationBack , toString
+
+
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Rook
+
+Instantiates a new Rook.
+
+Parameters:
+color
- the color
+location
- the location
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Specified by:
+getThreatenedLocations
in class Piece
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/package-summary.html b/docs/com/amirhn/Pieces/package-summary.html
new file mode 100644
index 0000000..ca8d5a9
--- /dev/null
+++ b/docs/com/amirhn/Pieces/package-summary.html
@@ -0,0 +1,142 @@
+
+
+
+
+com.amirhn.Pieces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn.Pieces
+
+
+
+
+
+
+
+
All Classes and Interfaces Classes Enum Classes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Pieces/package-tree.html b/docs/com/amirhn/Pieces/package-tree.html
new file mode 100644
index 0000000..b184997
--- /dev/null
+++ b/docs/com/amirhn/Pieces/package-tree.html
@@ -0,0 +1,94 @@
+
+
+
+
+com.amirhn.Pieces Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+Class Hierarchy
+
+java.lang.Object
+
+com.amirhn.Pieces.Piece
+
+com.amirhn.Pieces.Bishop
+com.amirhn.Pieces.King
+com.amirhn.Pieces.Knight
+com.amirhn.Pieces.Pawn
+com.amirhn.Pieces.Queen
+com.amirhn.Pieces.Rook
+
+
+
+
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Players/Player.html b/docs/com/amirhn/Players/Player.html
new file mode 100644
index 0000000..166c96b
--- /dev/null
+++ b/docs/com/amirhn/Players/Player.html
@@ -0,0 +1,429 @@
+
+
+
+
+Player
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+public class Player
+
extends Object
+The type Player.
+
+
+
+
+
+
+Field Summary
+Fields
+
+
+
+
+
+
+
+
boolean
+
+
+
The Had long castling.
+
+
boolean
+
+
+
The Had short castling.
+
+
+
+
+
+
+
+Constructor Summary
+Constructors
+
+
+
+
+
+
Instantiates a new Player.
+
+
+
+
+
+
+
+Method Summary
+
+
All Methods Instance Methods Concrete Methods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Gets threatened locations.
+
+
boolean
+
+
+
Is threatening boolean.
+
+
+
+
+
+
Methods inherited from class java.lang.Object
+
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
+
+
+
+
+
+
+
+
+Field Details
+
+
+
+capturedPieces
+
+The Captured pieces.
+
+
+
+
+hadLongCastling
+public boolean hadLongCastling
+The Had long castling.
+
+
+
+
+hadShortCastling
+public boolean hadShortCastling
+The Had short castling.
+
+
+
+
+
+
+
+
+Constructor Details
+
+
+
+Player
+public Player (Color color)
+Instantiates a new Player.
+
+Parameters:
+color
- the color
+
+
+
+
+
+
+
+
+
+Method Details
+
+
+
+getColor
+
+Gets color.
+
+Returns:
+the color
+
+
+
+
+
+getActivePieces
+
+Gets active pieces.
+
+Parameters:
+board
- the board
+Returns:
+the active pieces
+
+
+
+
+
+getNaturalMoves
+
+Gets natural moves.
+
+Parameters:
+board
- the board
+Returns:
+the natural moves
+
+
+
+
+
+getAllowedMoves
+
+Gets allowed moves.
+
+Parameters:
+chess
- the chess
+Returns:
+the allowed moves
+
+
+
+
+
+getThreatenedLocations
+
+Gets threatened locations.
+
+Parameters:
+board
- the board
+Returns:
+the threatened locations
+
+
+
+
+
+getPieces
+
+Gets pieces.
+
+Parameters:
+board
- the board
+pieceType
- the piece type
+Returns:
+the pieces
+
+
+
+
+
+getKing
+
+Gets king.
+
+Parameters:
+board
- the board
+Returns:
+the king
+
+
+
+
+
+getRooks
+
+Gets rooks.
+
+Parameters:
+board
- the board
+Returns:
+the rooks
+
+
+
+
+
+getKingSideRook
+
+Gets king side rook.
+
+Parameters:
+board
- the board
+Returns:
+the king side rook
+
+
+
+
+
+getQueenSideRook
+
+Gets queen side rook.
+
+Parameters:
+board
- the board
+Returns:
+the queen side rook
+
+
+
+
+
+isThreatening
+
+Is threatening boolean.
+
+Parameters:
+board
- the board
+location
- the location
+Returns:
+the boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Players/package-summary.html b/docs/com/amirhn/Players/package-summary.html
new file mode 100644
index 0000000..3d1249e
--- /dev/null
+++ b/docs/com/amirhn/Players/package-summary.html
@@ -0,0 +1,112 @@
+
+
+
+
+com.amirhn.Players
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn.Players
+
+
+
+
+
+
diff --git a/docs/com/amirhn/Players/package-tree.html b/docs/com/amirhn/Players/package-tree.html
new file mode 100644
index 0000000..2ba10b3
--- /dev/null
+++ b/docs/com/amirhn/Players/package-tree.html
@@ -0,0 +1,71 @@
+
+
+
+
+com.amirhn.Players Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/package-summary.html b/docs/com/amirhn/package-summary.html
new file mode 100644
index 0000000..c6b87a9
--- /dev/null
+++ b/docs/com/amirhn/package-summary.html
@@ -0,0 +1,112 @@
+
+
+
+
+com.amirhn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+package com.amirhn
+
+
+
+
+
+
+
+
Classes
+
+
+
+
+
+
The type com.amirhn.Main.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/com/amirhn/package-tree.html b/docs/com/amirhn/package-tree.html
new file mode 100644
index 0000000..b314e2a
--- /dev/null
+++ b/docs/com/amirhn/package-tree.html
@@ -0,0 +1,71 @@
+
+
+
+
+com.amirhn Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+
+
+
diff --git a/docs/constant-values.html b/docs/constant-values.html
new file mode 100644
index 0000000..63fd896
--- /dev/null
+++ b/docs/constant-values.html
@@ -0,0 +1,104 @@
+
+
+
+
+Constant Field Values
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+com.amirhn.*
+
+
+
+
+
+
+
+
+
+
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -"
+
+
+
+
+
+
+
+
+
+
+
+
+
"sound/capture.wav"
+
+
+
"Chess"
+
+
+
"sound/move.wav"
+
+
+
"png"
+
+
+
"sound"
+
+
+
+
+
+
+
+
+
diff --git a/docs/copy.svg b/docs/copy.svg
new file mode 100644
index 0000000..7c46ab1
--- /dev/null
+++ b/docs/copy.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
diff --git a/docs/element-list b/docs/element-list
new file mode 100644
index 0000000..d45d7c2
--- /dev/null
+++ b/docs/element-list
@@ -0,0 +1,8 @@
+com.amirhn
+com.amirhn.Game
+com.amirhn.GUI
+com.amirhn.GUI.Components
+com.amirhn.GUI.Listeners
+com.amirhn.Moves
+com.amirhn.Pieces
+com.amirhn.Players
diff --git a/docs/help-doc.html b/docs/help-doc.html
new file mode 100644
index 0000000..37c035b
--- /dev/null
+++ b/docs/help-doc.html
@@ -0,0 +1,193 @@
+
+
+
+
+API Help
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+JavaDoc Help
+
+
+
+
Navigation
+Starting from the
Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The
Index and Search box allow you to navigate to specific declarations and summary pages, including:
All Packages ,
All Classes and Interfaces
+
+Search
+You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:
+
+"j.l.obj"
matches "java.lang.Object"
+"InpStr"
matches "java.io.InputStream"
+"math exact long"
matches "java.lang.Math.absExact(long)"
+
+Refer to the Javadoc Search Specification for a full description of search features.
+
+
+
+
+
Kinds of Pages
+The following sections describe the different kinds of pages in this collection.
+
+Overview
+The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+
+
+Package
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:
+
+Interfaces
+Classes
+Enum Classes
+Exception Classes
+Annotation Interfaces
+
+
+
+Class or Interface
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.
+
+Class Inheritance Diagram
+Direct Subclasses
+All Known Subinterfaces
+All Known Implementing Classes
+Class or Interface Declaration
+Class or Interface Description
+
+
+
+Nested Class Summary
+Enum Constant Summary
+Field Summary
+Property Summary
+Constructor Summary
+Method Summary
+Required Element Summary
+Optional Element Summary
+
+
+
+Enum Constant Details
+Field Details
+Property Details
+Constructor Details
+Method Details
+Element Details
+
+Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.
+The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+
+
+Other Files
+Packages and modules may contain pages with additional information related to the declarations nearby.
+
+
+Tree (Class Hierarchy)
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object
. Interfaces do not inherit from java.lang.Object
.
+
+When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
+When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
+
+
+
+
+
+All Packages
+The All Packages page contains an alphabetic index of all packages contained in the documentation.
+
+
+All Classes and Interfaces
+The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.
+
+
+
+
+
+
+
+
+
diff --git a/docs/index-files/index-1.html b/docs/index-files/index-1.html
new file mode 100644
index 0000000..0fd377b
--- /dev/null
+++ b/docs/index-files/index-1.html
@@ -0,0 +1,109 @@
+
+
+
+
+A-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-10.html b/docs/index-files/index-10.html
new file mode 100644
index 0000000..bccee3f
--- /dev/null
+++ b/docs/index-files/index-10.html
@@ -0,0 +1,93 @@
+
+
+
+
+K-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-11.html b/docs/index-files/index-11.html
new file mode 100644
index 0000000..5f62984
--- /dev/null
+++ b/docs/index-files/index-11.html
@@ -0,0 +1,149 @@
+
+
+
+
+L-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-12.html b/docs/index-files/index-12.html
new file mode 100644
index 0000000..ecbf7a2
--- /dev/null
+++ b/docs/index-files/index-12.html
@@ -0,0 +1,131 @@
+
+
+
+
+M-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-13.html b/docs/index-files/index-13.html
new file mode 100644
index 0000000..250d550
--- /dev/null
+++ b/docs/index-files/index-13.html
@@ -0,0 +1,73 @@
+
+
+
+
+N-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-14.html b/docs/index-files/index-14.html
new file mode 100644
index 0000000..1165d54
--- /dev/null
+++ b/docs/index-files/index-14.html
@@ -0,0 +1,73 @@
+
+
+
+
+O-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-15.html b/docs/index-files/index-15.html
new file mode 100644
index 0000000..b234b49
--- /dev/null
+++ b/docs/index-files/index-15.html
@@ -0,0 +1,157 @@
+
+
+
+
+P-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-16.html b/docs/index-files/index-16.html
new file mode 100644
index 0000000..d20e1ce
--- /dev/null
+++ b/docs/index-files/index-16.html
@@ -0,0 +1,73 @@
+
+
+
+
+Q-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-17.html b/docs/index-files/index-17.html
new file mode 100644
index 0000000..462d1ec
--- /dev/null
+++ b/docs/index-files/index-17.html
@@ -0,0 +1,113 @@
+
+
+
+
+R-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-18.html b/docs/index-files/index-18.html
new file mode 100644
index 0000000..e5e251d
--- /dev/null
+++ b/docs/index-files/index-18.html
@@ -0,0 +1,169 @@
+
+
+
+
+S-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-19.html b/docs/index-files/index-19.html
new file mode 100644
index 0000000..7e8df67
--- /dev/null
+++ b/docs/index-files/index-19.html
@@ -0,0 +1,129 @@
+
+
+
+
+T-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-2.html b/docs/index-files/index-2.html
new file mode 100644
index 0000000..54f68aa
--- /dev/null
+++ b/docs/index-files/index-2.html
@@ -0,0 +1,101 @@
+
+
+
+
+B-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-20.html b/docs/index-files/index-20.html
new file mode 100644
index 0000000..f09e285
--- /dev/null
+++ b/docs/index-files/index-20.html
@@ -0,0 +1,97 @@
+
+
+
+
+U-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-21.html b/docs/index-files/index-21.html
new file mode 100644
index 0000000..454e904
--- /dev/null
+++ b/docs/index-files/index-21.html
@@ -0,0 +1,126 @@
+
+
+
+
+V-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-22.html b/docs/index-files/index-22.html
new file mode 100644
index 0000000..25c1e50
--- /dev/null
+++ b/docs/index-files/index-22.html
@@ -0,0 +1,81 @@
+
+
+
+
+W-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-23.html b/docs/index-files/index-23.html
new file mode 100644
index 0000000..ea082bc
--- /dev/null
+++ b/docs/index-files/index-23.html
@@ -0,0 +1,65 @@
+
+
+
+
+Y-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-3.html b/docs/index-files/index-3.html
new file mode 100644
index 0000000..aab154b
--- /dev/null
+++ b/docs/index-files/index-3.html
@@ -0,0 +1,199 @@
+
+
+
+
+C-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-4.html b/docs/index-files/index-4.html
new file mode 100644
index 0000000..1e38f36
--- /dev/null
+++ b/docs/index-files/index-4.html
@@ -0,0 +1,85 @@
+
+
+
+
+D-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-5.html b/docs/index-files/index-5.html
new file mode 100644
index 0000000..359cbd9
--- /dev/null
+++ b/docs/index-files/index-5.html
@@ -0,0 +1,85 @@
+
+
+
+
+E-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-6.html b/docs/index-files/index-6.html
new file mode 100644
index 0000000..3417c78
--- /dev/null
+++ b/docs/index-files/index-6.html
@@ -0,0 +1,69 @@
+
+
+
+
+F-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-7.html b/docs/index-files/index-7.html
new file mode 100644
index 0000000..dd72b23
--- /dev/null
+++ b/docs/index-files/index-7.html
@@ -0,0 +1,273 @@
+
+
+
+
+G-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-8.html b/docs/index-files/index-8.html
new file mode 100644
index 0000000..a69ce8a
--- /dev/null
+++ b/docs/index-files/index-8.html
@@ -0,0 +1,85 @@
+
+
+
+
+H-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index-files/index-9.html b/docs/index-files/index-9.html
new file mode 100644
index 0000000..e0b5b23
--- /dev/null
+++ b/docs/index-files/index-9.html
@@ -0,0 +1,161 @@
+
+
+
+
+I-Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..cb03f50
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,77 @@
+
+
+
+
+Overview
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
Packages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/legal/ADDITIONAL_LICENSE_INFO b/docs/legal/ADDITIONAL_LICENSE_INFO
new file mode 100644
index 0000000..ff700cd
--- /dev/null
+++ b/docs/legal/ADDITIONAL_LICENSE_INFO
@@ -0,0 +1,37 @@
+ ADDITIONAL INFORMATION ABOUT LICENSING
+
+Certain files distributed by Oracle America, Inc. and/or its affiliates are
+subject to the following clarification and special exception to the GPLv2,
+based on the GNU Project exception for its Classpath libraries, known as the
+GNU Classpath Exception.
+
+Note that Oracle includes multiple, independent programs in this software
+package. Some of those programs are provided under licenses deemed
+incompatible with the GPLv2 by the Free Software Foundation and others.
+For example, the package includes programs licensed under the Apache
+License, Version 2.0 and may include FreeType. Such programs are licensed
+to you under their original licenses.
+
+Oracle facilitates your further distribution of this package by adding the
+Classpath Exception to the necessary parts of its GPLv2 code, which permits
+you to use that code in combination with other independent modules not
+licensed under the GPLv2. However, note that this would not permit you to
+commingle code under an incompatible license with Oracle's GPLv2 licensed
+code by, for example, cutting and pasting such code into a file also
+containing Oracle's GPLv2 licensed code and then distributing the result.
+
+Additionally, if you were to remove the Classpath Exception from any of the
+files to which it applies and distribute the result, you would likely be
+required to license some or all of the other code in that distribution under
+the GPLv2 as well, and since the GPLv2 is incompatible with the license terms
+of some items included in the distribution by Oracle, removing the Classpath
+Exception could therefore effectively compromise your ability to further
+distribute the package.
+
+Failing to distribute notices associated with some files may also create
+unexpected legal consequences.
+
+Proceed with caution and we recommend that you obtain the advice of a lawyer
+skilled in open source matters before removing the Classpath Exception or
+making modifications to this package which may subsequently be redistributed
+and/or involve the use of third party software.
diff --git a/docs/legal/ASSEMBLY_EXCEPTION b/docs/legal/ASSEMBLY_EXCEPTION
new file mode 100644
index 0000000..4296666
--- /dev/null
+++ b/docs/legal/ASSEMBLY_EXCEPTION
@@ -0,0 +1,27 @@
+
+OPENJDK ASSEMBLY EXCEPTION
+
+The OpenJDK source code made available by Oracle America, Inc. (Oracle) at
+openjdk.org ("OpenJDK Code") is distributed under the terms of the GNU
+General Public License version 2
+only ("GPL2"), with the following clarification and special exception.
+
+ Linking this OpenJDK Code statically or dynamically with other code
+ is making a combined work based on this library. Thus, the terms
+ and conditions of GPL2 cover the whole combination.
+
+ As a special exception, Oracle gives you permission to link this
+ OpenJDK Code with certain code licensed by Oracle as indicated at
+ https://openjdk.org/legal/exception-modules-2007-05-08.html
+ ("Designated Exception Modules") to produce an executable,
+ regardless of the license terms of the Designated Exception Modules,
+ and to copy and distribute the resulting executable under GPL2,
+ provided that the Designated Exception Modules continue to be
+ governed by the licenses under which they were offered by Oracle.
+
+As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code
+to build an executable that includes those portions of necessary code that
+Oracle could not provide under GPL2 (or that Oracle has provided under GPL2
+with the Classpath exception). If you modify or add to the OpenJDK code,
+that new GPL2 code may still be combined with Designated Exception Modules
+if the new code is made subject to this exception by its copyright holder.
diff --git a/docs/legal/LICENSE b/docs/legal/LICENSE
new file mode 100644
index 0000000..8b400c7
--- /dev/null
+++ b/docs/legal/LICENSE
@@ -0,0 +1,347 @@
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users. This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it. (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have. You must
+make sure that they, too, receive or can get the source code. And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License. The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language. (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope. The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+ a) You must cause the modified files to carry prominent notices stating
+ that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in whole or
+ in part contains or is derived from the Program or any part thereof, to be
+ licensed as a whole at no charge to all third parties under the terms of
+ this License.
+
+ c) If the modified program normally reads commands interactively when run,
+ you must cause it, when started running for such interactive use in the
+ most ordinary way, to print or display an announcement including an
+ appropriate copyright notice and a notice that there is no warranty (or
+ else, saying that you provide a warranty) and that users may redistribute
+ the program under these conditions, and telling the user how to view a copy
+ of this License. (Exception: if the Program itself is interactive but does
+ not normally print such an announcement, your work based on the Program is
+ not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works. But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable source
+ code, which must be distributed under the terms of Sections 1 and 2 above
+ on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three years, to
+ give any third party, for a charge no more than your cost of physically
+ performing source distribution, a complete machine-readable copy of the
+ corresponding source code, to be distributed under the terms of Sections 1
+ and 2 above on a medium customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer to
+ distribute corresponding source code. (This alternative is allowed only
+ for noncommercial distribution and only if you received the program in
+ object code or executable form with such an offer, in accord with
+ Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable. However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License. Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License. However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works. These actions are prohibited by law if you do not
+accept this License. Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein. You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices. Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded. In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time. Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+ One line to give the program's name and a brief idea of what it does.
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+ with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free
+ software, and you are welcome to redistribute it under certain conditions;
+ type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary. Here
+is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ 'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ signature of Ty Coon, 1 April 1989
+
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Oracle America and/or its affiliates are
+subject to the following clarification and special exception to the GPL, but
+only where Oracle has expressly included in the particular source file's header
+the words "Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the LICENSE file that accompanied this code."
+
+ Linking this library statically or dynamically with other modules is making
+ a combined work based on this library. Thus, the terms and conditions of
+ the GNU General Public License cover the whole combination.
+
+ As a special exception, the copyright holders of this library give you
+ permission to link this library with independent modules to produce an
+ executable, regardless of the license terms of these independent modules,
+ and to copy and distribute the resulting executable under terms of your
+ choice, provided that you also meet, for each linked independent module,
+ the terms and conditions of the license of that module. An independent
+ module is a module which is not derived from or based on this library. If
+ you modify this library, you may extend this exception to your version of
+ the library, but you are not obligated to do so. If you do not wish to do
+ so, delete this exception statement from your version.
diff --git a/docs/legal/jquery.md b/docs/legal/jquery.md
new file mode 100644
index 0000000..d468b31
--- /dev/null
+++ b/docs/legal/jquery.md
@@ -0,0 +1,72 @@
+## jQuery v3.6.1
+
+### jQuery License
+```
+jQuery v 3.6.1
+Copyright OpenJS Foundation and other contributors, https://openjsf.org/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+******************************************
+
+The jQuery JavaScript Library v3.6.1 also includes Sizzle.js
+
+Sizzle.js includes the following license:
+
+Copyright JS Foundation and other contributors, https://js.foundation/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/sizzle
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+*********************
+
+```
diff --git a/docs/legal/jqueryUI.md b/docs/legal/jqueryUI.md
new file mode 100644
index 0000000..8bda9d7
--- /dev/null
+++ b/docs/legal/jqueryUI.md
@@ -0,0 +1,49 @@
+## jQuery UI v1.13.2
+
+### jQuery UI License
+```
+Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/jquery/jquery-ui
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code contained within the demos directory.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+All files located in the node_modules and external directories are
+externally maintained libraries used by this software which have their
+own licenses; we recommend you read them, as their terms may differ from
+the terms above.
+
+```
diff --git a/docs/link.svg b/docs/link.svg
new file mode 100644
index 0000000..7ccc5ed
--- /dev/null
+++ b/docs/link.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
diff --git a/docs/member-search-index.js b/docs/member-search-index.js
new file mode 100644
index 0000000..0ecd95a
--- /dev/null
+++ b/docs/member-search-index.js
@@ -0,0 +1 @@
+memberSearchIndex = [{"p":"com.amirhn.GUI","c":"ChessMenuBar","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"addPiecePanel(PiecePanel, Location)","u":"addPiecePanel(com.amirhn.GUI.Components.PiecePanel,com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Chess","l":"applyMove(Move)","u":"applyMove(com.amirhn.Moves.Move)"},{"p":"com.amirhn.GUI","c":"ChessController","l":"applyMove(Move)","u":"applyMove(com.amirhn.Moves.Move)"},{"p":"com.amirhn.Moves","c":"Capture","l":"applyOnBoard(Board)","u":"applyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Castling","l":"applyOnBoard(Board)","u":"applyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"applyOnBoard(Board)","u":"applyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Move","l":"applyOnBoard(Board)","u":"applyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Promotion","l":"applyOnBoard(Board)","u":"applyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Walk","l":"applyOnBoard(Board)","u":"applyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.GUI","c":"ChessController","l":"applyRandomMove()"},{"p":"com.amirhn.GUI","c":"ChessMenuController","l":"applyRandomMove()"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"BISHOP"},{"p":"com.amirhn.Pieces","c":"Bishop","l":"Bishop(Color, Location)","u":"%3Cinit%3E(com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Color","l":"BLACK"},{"p":"com.amirhn.Game","c":"Chess","l":"blackPlayer"},{"p":"com.amirhn.Game","c":"Board","l":"Board(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"BoardPanel(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"com.amirhn.Game","c":"Location","l":"byOffset(int, int)","u":"byOffset(int,int)"},{"p":"com.amirhn.Pieces","c":"King","l":"canBeCapturedBy(Piece)","u":"canBeCapturedBy(com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"canBeCapturedBy(Piece)","u":"canBeCapturedBy(com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.Moves","c":"MoveType","l":"CAPTURE"},{"p":"com.amirhn.Moves","c":"Capture","l":"Capture(Piece, Piece)","u":"%3Cinit%3E(com.amirhn.Pieces.Piece,com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.Players","c":"Player","l":"capturedPieces"},{"p":"com.amirhn.Moves","c":"Capture","l":"capturePiece"},{"p":"com.amirhn.GUI","c":"Constants","l":"CaptureSoundPath"},{"p":"com.amirhn.Moves","c":"MoveType","l":"CASTLING"},{"p":"com.amirhn.Moves","c":"Castling","l":"Castling(Walk, Walk)","u":"%3Cinit%3E(com.amirhn.Moves.Walk,com.amirhn.Moves.Walk)"},{"p":"com.amirhn.Game","c":"Status","l":"CHECKMATE"},{"p":"com.amirhn.Game","c":"Chess","l":"Chess()","u":"%3Cinit%3E()"},{"p":"com.amirhn.Game","c":"Chess","l":"Chess(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"com.amirhn.GUI","c":"ChessController","l":"ChessController(Chess, BoardPanel)","u":"%3Cinit%3E(com.amirhn.Game.Chess,com.amirhn.GUI.Components.BoardPanel)"},{"p":"com.amirhn.GUI","c":"ChessFrame","l":"ChessFrame()","u":"%3Cinit%3E()"},{"p":"com.amirhn.GUI","c":"ChessMenuBar","l":"ChessMenuBar(ChessMenuController)","u":"%3Cinit%3E(com.amirhn.GUI.ChessMenuController)"},{"p":"com.amirhn.GUI.Components","c":"LocationState","l":"color"},{"p":"com.amirhn.Pieces","c":"Piece","l":"color"},{"p":"com.amirhn.Game","c":"Location","l":"column"},{"p":"com.amirhn.Game","c":"Board","l":"columns"},{"p":"com.amirhn.GUI","c":"Constants","l":"Constants()","u":"%3Cinit%3E()"},{"p":"com.amirhn.Game","c":"Board","l":"copy()"},{"p":"com.amirhn.Pieces","c":"Piece","l":"copy()"},{"p":"com.amirhn.GUI","c":"Constants","l":"DarkTileColor"},{"p":"com.amirhn.Moves","c":"Capture","l":"destination"},{"p":"com.amirhn.Moves","c":"Walk","l":"destination"},{"p":"com.amirhn.Game","c":"Color","l":"direction"},{"p":"com.amirhn.Pieces","c":"Pawn","l":"direction"},{"p":"com.amirhn.Game","c":"Status","l":"DRAW"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"EnPassant(Pawn, Pawn)","u":"%3Cinit%3E(com.amirhn.Pieces.Pawn,com.amirhn.Pieces.Pawn)"},{"p":"com.amirhn.Game","c":"Board","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.amirhn.Game","c":"Location","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.amirhn.Game","c":"Scene","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"com.amirhn.Game","c":"Board","l":"fromFEN(String)","u":"fromFEN(java.lang.String)"},{"p":"com.amirhn.Game","c":"Color","l":"fromString(String)","u":"fromString(java.lang.String)"},{"p":"com.amirhn.GUI","c":"Constants","l":"GameTitle"},{"p":"com.amirhn.Pieces","c":"Piece","l":"generate(char, Location)","u":"generate(char,com.amirhn.Game.Location)"},{"p":"com.amirhn.Moves","c":"Castling","l":"generate(King, Rook)","u":"generate(com.amirhn.Pieces.King,com.amirhn.Pieces.Rook)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"generate(PieceType, Color, Location)","u":"generate(com.amirhn.Pieces.PieceType,com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.Players","c":"Player","l":"getActivePieces(Board)","u":"getActivePieces(com.amirhn.Game.Board)"},{"p":"com.amirhn.Game","c":"Chess","l":"getAllowedMoves()"},{"p":"com.amirhn.Pieces","c":"Piece","l":"getAllowedMoves(Chess)","u":"getAllowedMoves(com.amirhn.Game.Chess)"},{"p":"com.amirhn.Players","c":"Player","l":"getAllowedMoves(Chess)","u":"getAllowedMoves(com.amirhn.Game.Chess)"},{"p":"com.amirhn.Game","c":"Board","l":"getAllPieces()"},{"p":"com.amirhn.Game","c":"Chess","l":"getBoard()"},{"p":"com.amirhn.Game","c":"Scene","l":"getBoard()"},{"p":"com.amirhn.Players","c":"Player","l":"getColor()"},{"p":"com.amirhn.Moves","c":"Capture","l":"getEndpointLocation()"},{"p":"com.amirhn.Moves","c":"Castling","l":"getEndpointLocation()"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"getEndpointLocation()"},{"p":"com.amirhn.Moves","c":"Move","l":"getEndpointLocation()"},{"p":"com.amirhn.Moves","c":"Promotion","l":"getEndpointLocation()"},{"p":"com.amirhn.Moves","c":"Walk","l":"getEndpointLocation()"},{"p":"com.amirhn.Players","c":"Player","l":"getKing(Board)","u":"getKing(com.amirhn.Game.Board)"},{"p":"com.amirhn.Players","c":"Player","l":"getKingSideRook(Board)","u":"getKingSideRook(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"getLocation()"},{"p":"com.amirhn.GUI.Components","c":"TablePanel","l":"getLocationPanel(int, int)","u":"getLocationPanel(int,int)"},{"p":"com.amirhn.GUI.Components","c":"TablePanel","l":"getLocationPanel(Location)","u":"getLocationPanel(com.amirhn.Game.Location)"},{"p":"com.amirhn.Pieces","c":"King","l":"getNaturalMoves(Board)","u":"getNaturalMoves(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Pawn","l":"getNaturalMoves(Board)","u":"getNaturalMoves(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"getNaturalMoves(Board)","u":"getNaturalMoves(com.amirhn.Game.Board)"},{"p":"com.amirhn.Players","c":"Player","l":"getNaturalMoves(Board)","u":"getNaturalMoves(com.amirhn.Game.Board)"},{"p":"com.amirhn.Game","c":"Chess","l":"getOpponentPlayer()"},{"p":"com.amirhn.Game","c":"Board","l":"getPiece(Location)","u":"getPiece(com.amirhn.Game.Location)"},{"p":"com.amirhn.Players","c":"Player","l":"getPieces(Board, PieceType)","u":"getPieces(com.amirhn.Game.Board,com.amirhn.Pieces.PieceType)"},{"p":"com.amirhn.Game","c":"Chess","l":"getPlayer(Color)","u":"getPlayer(com.amirhn.Game.Color)"},{"p":"com.amirhn.Players","c":"Player","l":"getQueenSideRook(Board)","u":"getQueenSideRook(com.amirhn.Game.Board)"},{"p":"com.amirhn.Game","c":"Chess","l":"getRandomMove()"},{"p":"com.amirhn.Players","c":"Player","l":"getRooks(Board)","u":"getRooks(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Capture","l":"getStartpointLocation()"},{"p":"com.amirhn.Moves","c":"Castling","l":"getStartpointLocation()"},{"p":"com.amirhn.Moves","c":"Move","l":"getStartpointLocation()"},{"p":"com.amirhn.Moves","c":"Promotion","l":"getStartpointLocation()"},{"p":"com.amirhn.Moves","c":"Walk","l":"getStartpointLocation()"},{"p":"com.amirhn.Game","c":"Chess","l":"getStatus()"},{"p":"com.amirhn.Pieces","c":"Piece","l":"getSymbol()"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"getSymbol(Color)","u":"getSymbol(com.amirhn.Game.Color)"},{"p":"com.amirhn.Pieces","c":"Bishop","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"King","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Knight","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Pawn","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Queen","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Pieces","c":"Rook","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Players","c":"Player","l":"getThreatenedLocations(Board)","u":"getThreatenedLocations(com.amirhn.Game.Board)"},{"p":"com.amirhn.Game","c":"Scene","l":"getTurn()"},{"p":"com.amirhn.Game","c":"Chess","l":"getTurnPlayer()"},{"p":"com.amirhn.GUI","c":"Constants","l":"GreenColor"},{"p":"com.amirhn.Players","c":"Player","l":"hadLongCastling"},{"p":"com.amirhn.Players","c":"Player","l":"hadShortCastling"},{"p":"com.amirhn.Game","c":"Location","l":"hashCode()"},{"p":"com.amirhn.Pieces","c":"Piece","l":"hashCode()"},{"p":"com.amirhn.Pieces","c":"Piece","l":"hasMoved()"},{"p":"com.amirhn.Game","c":"Chess","l":"history"},{"p":"com.amirhn.Game","c":"Chess","l":"is50MoveRule()"},{"p":"com.amirhn.Moves","c":"Castling","l":"isAllowed(Chess)","u":"isAllowed(com.amirhn.Game.Chess)"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"isAllowed(Chess)","u":"isAllowed(com.amirhn.Game.Chess)"},{"p":"com.amirhn.Moves","c":"Move","l":"isAllowed(Chess)","u":"isAllowed(com.amirhn.Game.Chess)"},{"p":"com.amirhn.Moves","c":"PawnPromotion","l":"isAllowed(Chess)","u":"isAllowed(com.amirhn.Game.Chess)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"isAllowedToMove(Chess)","u":"isAllowedToMove(com.amirhn.Game.Chess)"},{"p":"com.amirhn.Game","c":"Chess","l":"isCheckmate()"},{"p":"com.amirhn.Game","c":"Chess","l":"isDraw()"},{"p":"com.amirhn.Game","c":"Chess","l":"isInCheck()"},{"p":"com.amirhn.Game","c":"Location","l":"isLight()"},{"p":"com.amirhn.GUI","c":"ChessController","l":"isLocationDraggable(Location)","u":"isLocationDraggable(com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI.Listeners","c":"LocationListener","l":"isLocationDraggable(Location)","u":"isLocationDraggable(com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Board","l":"isOccupied(Location)","u":"isOccupied(com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Chess","l":"isStalemate()"},{"p":"com.amirhn.Players","c":"Player","l":"isThreatening(Board, Location)","u":"isThreatening(com.amirhn.Game.Board,com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Chess","l":"isThreefoldRepetition()"},{"p":"com.amirhn.Moves","c":"Capture","l":"isValidApplyOnBoard(Board)","u":"isValidApplyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Castling","l":"isValidApplyOnBoard(Board)","u":"isValidApplyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"isValidApplyOnBoard(Board)","u":"isValidApplyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Move","l":"isValidApplyOnBoard(Board)","u":"isValidApplyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"PawnPromotion","l":"isValidApplyOnBoard(Board)","u":"isValidApplyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Promotion","l":"isValidApplyOnBoard(Board)","u":"isValidApplyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Walk","l":"isValidApplyOnBoard(Board)","u":"isValidApplyOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Game","c":"Board","l":"isValidLocation(Location)","u":"isValidLocation(com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Board","l":"isValidPiece(Piece)","u":"isValidPiece(com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.Moves","c":"Castling","l":"king"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"KING"},{"p":"com.amirhn.Pieces","c":"King","l":"King(Color, Location)","u":"%3Cinit%3E(com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.Moves","c":"Castling","l":"kingMove"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"KNIGHT"},{"p":"com.amirhn.Pieces","c":"Knight","l":"Knight(Color, Location)","u":"%3Cinit%3E(com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI.Components","c":"PiecePanel","l":"label"},{"p":"com.amirhn.GUI.Components","c":"LocationState","l":"LASTMOVE"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"letter"},{"p":"com.amirhn.GUI","c":"Constants","l":"LightTileColor"},{"p":"com.amirhn.GUI","c":"ChessController","l":"loadFEN()"},{"p":"com.amirhn.GUI","c":"ChessMenuController","l":"loadFEN()"},{"p":"com.amirhn.Pieces","c":"Piece","l":"location"},{"p":"com.amirhn.Game","c":"Location","l":"Location(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"com.amirhn.GUI","c":"ChessController","l":"locationDropped(Location)","u":"locationDropped(com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI.Listeners","c":"LocationListener","l":"locationDropped(Location)","u":"locationDropped(com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI","c":"ChessController","l":"locationGrabbed(Location)","u":"locationGrabbed(com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI.Listeners","c":"LocationListener","l":"locationGrabbed(Location)","u":"locationGrabbed(com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI.Components","c":"TablePanel","l":"locationOf(Point)","u":"locationOf(java.awt.Point)"},{"p":"com.amirhn.GUI.Components","c":"LocationPanel","l":"LocationPanel(boolean)","u":"%3Cinit%3E(boolean)"},{"p":"com.amirhn.GUI","c":"ChessController","l":"locationSelected(Location)","u":"locationSelected(com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI.Listeners","c":"LocationListener","l":"locationSelected(Location)","u":"locationSelected(com.amirhn.Game.Location)"},{"p":"com.amirhn.Moves","c":"LongCastling","l":"LongCastling(King, Rook)","u":"%3Cinit%3E(com.amirhn.Pieces.King,com.amirhn.Pieces.Rook)"},{"p":"com.amirhn","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"com.amirhn","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"mouseClicked(MouseEvent)","u":"mouseClicked(java.awt.event.MouseEvent)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"mouseDragged(MouseEvent)","u":"mouseDragged(java.awt.event.MouseEvent)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"mouseEntered(MouseEvent)","u":"mouseEntered(java.awt.event.MouseEvent)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"mouseExited(MouseEvent)","u":"mouseExited(java.awt.event.MouseEvent)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"mouseMoved(MouseEvent)","u":"mouseMoved(java.awt.event.MouseEvent)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"mousePressed(MouseEvent)","u":"mousePressed(java.awt.event.MouseEvent)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"mouseReleased(MouseEvent)","u":"mouseReleased(java.awt.event.MouseEvent)"},{"p":"com.amirhn.Moves","c":"Promotion","l":"move"},{"p":"com.amirhn.Moves","c":"Move","l":"Move(MoveType, Piece)","u":"%3Cinit%3E(com.amirhn.Moves.MoveType,com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.Game","c":"Chess","l":"moveFromString(String)","u":"moveFromString(java.lang.String)"},{"p":"com.amirhn.Game","c":"Chess","l":"moves"},{"p":"com.amirhn.Pieces","c":"Piece","l":"moves"},{"p":"com.amirhn.GUI","c":"Constants","l":"MoveSoundPath"},{"p":"com.amirhn.GUI","c":"ChessController","l":"newGame()"},{"p":"com.amirhn.GUI","c":"ChessMenuController","l":"newGame()"},{"p":"com.amirhn.GUI.Components","c":"LocationState","l":"NORMAL"},{"p":"com.amirhn.Game","c":"Status","l":"ONGOING"},{"p":"com.amirhn.Game","c":"Color","l":"opposite()"},{"p":"com.amirhn.Game","c":"Chess","l":"OriginalFen"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"PAWN"},{"p":"com.amirhn.Pieces","c":"Pawn","l":"Pawn(Color, Location)","u":"%3Cinit%3E(com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.Moves","c":"PawnPromotion","l":"PawnPromotion(Move, PieceType)","u":"%3Cinit%3E(com.amirhn.Moves.Move,com.amirhn.Pieces.PieceType)"},{"p":"com.amirhn.Moves","c":"Move","l":"piece"},{"p":"com.amirhn.Pieces","c":"Piece","l":"Piece(PieceType, Color, Location)","u":"%3Cinit%3E(com.amirhn.Pieces.PieceType,com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Board","l":"pieceByLocation"},{"p":"com.amirhn.GUI","c":"Constants","l":"PieceImageDirectory"},{"p":"com.amirhn.GUI.Components","c":"PieceImageIcon","l":"PieceImageIcon(String, char)","u":"%3Cinit%3E(java.lang.String,char)"},{"p":"com.amirhn.GUI.Components","c":"PiecePanel","l":"PiecePanel(PieceImageIcon)","u":"%3Cinit%3E(com.amirhn.GUI.Components.PieceImageIcon)"},{"p":"com.amirhn.GUI","c":"Constants","l":"PieceSize"},{"p":"com.amirhn.Players","c":"Player","l":"Player(Color)","u":"%3Cinit%3E(com.amirhn.Game.Color)"},{"p":"com.amirhn.GUI.Components","c":"TablePanel","l":"pointOf(Location)","u":"pointOf(com.amirhn.Game.Location)"},{"p":"com.amirhn.Moves","c":"Promotion","l":"promotedPiece"},{"p":"com.amirhn.Moves","c":"MoveType","l":"PROMOTION"},{"p":"com.amirhn.Moves","c":"Promotion","l":"Promotion(Move, PieceType)","u":"%3Cinit%3E(com.amirhn.Moves.Move,com.amirhn.Pieces.PieceType)"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"pushPawnMove"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"QUEEN"},{"p":"com.amirhn.Pieces","c":"Queen","l":"Queen(Color, Location)","u":"%3Cinit%3E(com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"removeLocation()"},{"p":"com.amirhn.Pieces","c":"Queen","l":"removeLocation()"},{"p":"com.amirhn.Game","c":"Board","l":"removePiece(Piece)","u":"removePiece(com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"removePiecePanels()"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"resetLocationStates()"},{"p":"com.amirhn.GUI.Components","c":"TablePanel","l":"resetLocationStates()"},{"p":"com.amirhn.Moves","c":"Castling","l":"rook"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"ROOK"},{"p":"com.amirhn.Pieces","c":"Rook","l":"Rook(Color, Location)","u":"%3Cinit%3E(com.amirhn.Game.Color,com.amirhn.Game.Location)"},{"p":"com.amirhn.Moves","c":"Castling","l":"rookMove"},{"p":"com.amirhn.Game","c":"Location","l":"row"},{"p":"com.amirhn.Game","c":"Board","l":"rows"},{"p":"com.amirhn.Game","c":"Scene","l":"Scene(Board, Color)","u":"%3Cinit%3E(com.amirhn.Game.Board,com.amirhn.Game.Color)"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"secondDestination"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"secondSource"},{"p":"com.amirhn.GUI.Components","c":"LocationState","l":"SELECTED"},{"p":"com.amirhn.Pieces","c":"Piece","l":"setLocation(Location)","u":"setLocation(com.amirhn.Game.Location)"},{"p":"com.amirhn.Pieces","c":"Queen","l":"setLocation(Location)","u":"setLocation(com.amirhn.Game.Location)"},{"p":"com.amirhn.Pieces","c":"Piece","l":"setLocationBack(Location)","u":"setLocationBack(com.amirhn.Game.Location)"},{"p":"com.amirhn.Pieces","c":"Queen","l":"setLocationBack(Location)","u":"setLocationBack(com.amirhn.Game.Location)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"setLocationListener(LocationListener)","u":"setLocationListener(com.amirhn.GUI.Listeners.LocationListener)"},{"p":"com.amirhn.GUI.Components","c":"BoardPanel","l":"setLocationState(Location, LocationState)","u":"setLocationState(com.amirhn.Game.Location,com.amirhn.GUI.Components.LocationState)"},{"p":"com.amirhn.Game","c":"Board","l":"setPiece(Piece)","u":"setPiece(com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.Game","c":"Chess","l":"setPiece(Piece)","u":"setPiece(com.amirhn.Pieces.Piece)"},{"p":"com.amirhn.GUI.Components","c":"LocationPanel","l":"setState(LocationState)","u":"setState(com.amirhn.GUI.Components.LocationState)"},{"p":"com.amirhn.Game","c":"Board","l":"setupFEN(String)","u":"setupFEN(java.lang.String)"},{"p":"com.amirhn.Game","c":"Chess","l":"setupFEN(String)","u":"setupFEN(java.lang.String)"},{"p":"com.amirhn.Moves","c":"ShortCastling","l":"ShortCastling(King, Rook)","u":"%3Cinit%3E(com.amirhn.Pieces.King,com.amirhn.Pieces.Rook)"},{"p":"com.amirhn.GUI.Components","c":"LocationPanel","l":"Size"},{"p":"com.amirhn.GUI.Components","c":"PiecePanel","l":"Size"},{"p":"com.amirhn.GUI","c":"Constants","l":"SoundDirectory"},{"p":"com.amirhn.Moves","c":"Capture","l":"source"},{"p":"com.amirhn.Moves","c":"Walk","l":"source"},{"p":"com.amirhn.Game","c":"Status","l":"STALEMATE"},{"p":"com.amirhn.GUI.Components","c":"LocationState","l":"SUGGESTED"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"symbols"},{"p":"com.amirhn.GUI.Components","c":"TablePanel","l":"TablePanel(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"com.amirhn.GUI","c":"Constants","l":"TileSize"},{"p":"com.amirhn.Game","c":"Board","l":"toString()"},{"p":"com.amirhn.Game","c":"Chess","l":"toString()"},{"p":"com.amirhn.Game","c":"Location","l":"toString()"},{"p":"com.amirhn.Moves","c":"Capture","l":"toString()"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"toString()"},{"p":"com.amirhn.Moves","c":"LongCastling","l":"toString()"},{"p":"com.amirhn.Moves","c":"Promotion","l":"toString()"},{"p":"com.amirhn.Moves","c":"ShortCastling","l":"toString()"},{"p":"com.amirhn.Moves","c":"Walk","l":"toString()"},{"p":"com.amirhn.Pieces","c":"Piece","l":"toString()"},{"p":"com.amirhn.GUI","c":"Constants","l":"TransparentColor"},{"p":"com.amirhn.Game","c":"Chess","l":"turn"},{"p":"com.amirhn.Moves","c":"Move","l":"type"},{"p":"com.amirhn.Pieces","c":"Piece","l":"type"},{"p":"com.amirhn.Game","c":"Chess","l":"undoMove()"},{"p":"com.amirhn.GUI","c":"ChessController","l":"undoMove()"},{"p":"com.amirhn.GUI","c":"ChessMenuController","l":"undoMove()"},{"p":"com.amirhn.Moves","c":"Capture","l":"undoOnBoard(Board)","u":"undoOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Castling","l":"undoOnBoard(Board)","u":"undoOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"EnPassant","l":"undoOnBoard(Board)","u":"undoOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Move","l":"undoOnBoard(Board)","u":"undoOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Promotion","l":"undoOnBoard(Board)","u":"undoOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Moves","c":"Walk","l":"undoOnBoard(Board)","u":"undoOnBoard(com.amirhn.Game.Board)"},{"p":"com.amirhn.Game","c":"Color","l":"valueOf(char)"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"valueOf(char)"},{"p":"com.amirhn.Game","c":"Location","l":"valueOf(int, int)","u":"valueOf(int,int)"},{"p":"com.amirhn.Game","c":"Color","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.amirhn.Game","c":"Location","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.amirhn.Game","c":"Status","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.amirhn.GUI.Components","c":"LocationState","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.amirhn.Moves","c":"MoveType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"com.amirhn.Game","c":"Color","l":"valueOfPieceChar(char)"},{"p":"com.amirhn.Game","c":"Color","l":"values()"},{"p":"com.amirhn.Game","c":"Status","l":"values()"},{"p":"com.amirhn.GUI.Components","c":"LocationState","l":"values()"},{"p":"com.amirhn.Moves","c":"MoveType","l":"values()"},{"p":"com.amirhn.Pieces","c":"PieceType","l":"values()"},{"p":"com.amirhn.Moves","c":"MoveType","l":"WALK"},{"p":"com.amirhn.Moves","c":"Walk","l":"Walk(Piece, Location)","u":"%3Cinit%3E(com.amirhn.Pieces.Piece,com.amirhn.Game.Location)"},{"p":"com.amirhn.Game","c":"Color","l":"WHITE"},{"p":"com.amirhn.Game","c":"Chess","l":"whitePlayer"},{"p":"com.amirhn.GUI","c":"Constants","l":"YellowGreenColor"}];updateSearchResults();
\ No newline at end of file
diff --git a/docs/module-search-index.js b/docs/module-search-index.js
new file mode 100644
index 0000000..0d59754
--- /dev/null
+++ b/docs/module-search-index.js
@@ -0,0 +1 @@
+moduleSearchIndex = [];updateSearchResults();
\ No newline at end of file
diff --git a/docs/overview-summary.html b/docs/overview-summary.html
new file mode 100644
index 0000000..7b43fa6
--- /dev/null
+++ b/docs/overview-summary.html
@@ -0,0 +1,26 @@
+
+
+
+
+Generated Documentation (Untitled)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+index.html
+
+
+
diff --git a/docs/overview-tree.html b/docs/overview-tree.html
new file mode 100644
index 0000000..46154ca
--- /dev/null
+++ b/docs/overview-tree.html
@@ -0,0 +1,188 @@
+
+
+
+
+Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+Package Hierarchies:
+
+
+
+
+Enum Class Hierarchy
+
+
+
+
+
+
+
diff --git a/docs/package-search-index.js b/docs/package-search-index.js
new file mode 100644
index 0000000..ed5b06f
--- /dev/null
+++ b/docs/package-search-index.js
@@ -0,0 +1 @@
+packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"com.amirhn"},{"l":"com.amirhn.Game"},{"l":"com.amirhn.GUI"},{"l":"com.amirhn.GUI.Components"},{"l":"com.amirhn.GUI.Listeners"},{"l":"com.amirhn.Moves"},{"l":"com.amirhn.Pieces"},{"l":"com.amirhn.Players"}];updateSearchResults();
\ No newline at end of file
diff --git a/docs/resources/glass.png b/docs/resources/glass.png
new file mode 100644
index 0000000..a7f591f
Binary files /dev/null and b/docs/resources/glass.png differ
diff --git a/docs/resources/x.png b/docs/resources/x.png
new file mode 100644
index 0000000..30548a7
Binary files /dev/null and b/docs/resources/x.png differ
diff --git a/docs/script-dir/jquery-3.6.1.min.js b/docs/script-dir/jquery-3.6.1.min.js
new file mode 100644
index 0000000..2c69bc9
--- /dev/null
+++ b/docs/script-dir/jquery-3.6.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=" ",v.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length
").append(x("").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1
").text(e))},100))}});x.ui.autocomplete});
\ No newline at end of file
diff --git a/docs/script.js b/docs/script.js
new file mode 100644
index 0000000..bb9c8a2
--- /dev/null
+++ b/docs/script.js
@@ -0,0 +1,253 @@
+/*
+ * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+var moduleSearchIndex;
+var packageSearchIndex;
+var typeSearchIndex;
+var memberSearchIndex;
+var tagSearchIndex;
+
+var oddRowColor = "odd-row-color";
+var evenRowColor = "even-row-color";
+var sortAsc = "sort-asc";
+var sortDesc = "sort-desc";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+
+function loadScripts(doc, tag) {
+ createElem(doc, tag, 'search.js');
+
+ createElem(doc, tag, 'module-search-index.js');
+ createElem(doc, tag, 'package-search-index.js');
+ createElem(doc, tag, 'type-search-index.js');
+ createElem(doc, tag, 'member-search-index.js');
+ createElem(doc, tag, 'tag-search-index.js');
+}
+
+function createElem(doc, tag, path) {
+ var script = doc.createElement(tag);
+ var scriptElement = doc.getElementsByTagName(tag)[0];
+ script.src = pathtoroot + path;
+ scriptElement.parentNode.insertBefore(script, scriptElement);
+}
+
+// Helper for making content containing release names comparable lexicographically
+function makeComparable(s) {
+ return s.toLowerCase().replace(/(\d+)/g,
+ function(n, m) {
+ return ("000" + m).slice(-4);
+ });
+}
+
+// Switches between two styles depending on a condition
+function toggleStyle(classList, condition, trueStyle, falseStyle) {
+ if (condition) {
+ classList.remove(falseStyle);
+ classList.add(trueStyle);
+ } else {
+ classList.remove(trueStyle);
+ classList.add(falseStyle);
+ }
+}
+
+// Sorts the rows in a table lexicographically by the content of a specific column
+function sortTable(header, columnIndex, columns) {
+ var container = header.parentElement;
+ var descending = header.classList.contains(sortAsc);
+ container.querySelectorAll("div.table-header").forEach(
+ function(header) {
+ header.classList.remove(sortAsc);
+ header.classList.remove(sortDesc);
+ }
+ )
+ var cells = container.children;
+ var rows = [];
+ for (var i = columns; i < cells.length; i += columns) {
+ rows.push(Array.prototype.slice.call(cells, i, i + columns));
+ }
+ var comparator = function(a, b) {
+ var ka = makeComparable(a[columnIndex].textContent);
+ var kb = makeComparable(b[columnIndex].textContent);
+ if (ka < kb)
+ return descending ? 1 : -1;
+ if (ka > kb)
+ return descending ? -1 : 1;
+ return 0;
+ };
+ var sorted = rows.sort(comparator);
+ var visible = 0;
+ sorted.forEach(function(row) {
+ if (row[0].style.display !== 'none') {
+ var isEvenRow = visible++ % 2 === 0;
+ }
+ row.forEach(function(cell) {
+ toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor);
+ container.appendChild(cell);
+ })
+ });
+ toggleStyle(header.classList, descending, sortDesc, sortAsc);
+}
+
+// Toggles the visibility of a table category in all tables in a page
+function toggleGlobal(checkbox, selected, columns) {
+ var display = checkbox.checked ? '' : 'none';
+ document.querySelectorAll("div.table-tabs").forEach(function(t) {
+ var id = t.parentElement.getAttribute("id");
+ var selectedClass = id + "-tab" + selected;
+ // if selected is empty string it selects all uncategorized entries
+ var selectUncategorized = !Boolean(selected);
+ var visible = 0;
+ document.querySelectorAll('div.' + id)
+ .forEach(function(elem) {
+ if (selectUncategorized) {
+ if (elem.className.indexOf(selectedClass) === -1) {
+ elem.style.display = display;
+ }
+ } else if (elem.classList.contains(selectedClass)) {
+ elem.style.display = display;
+ }
+ if (elem.style.display === '') {
+ var isEvenRow = visible++ % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ }
+ });
+ var displaySection = visible === 0 ? 'none' : '';
+ t.parentElement.style.display = displaySection;
+ document.querySelector("li#contents-" + id).style.display = displaySection;
+ })
+}
+
+// Shows the elements of a table belonging to a specific category
+function show(tableId, selected, columns) {
+ if (tableId !== selected) {
+ document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
+ .forEach(function(elem) {
+ elem.style.display = 'none';
+ });
+ }
+ document.querySelectorAll('div.' + selected)
+ .forEach(function(elem, index) {
+ elem.style.display = '';
+ var isEvenRow = index % (columns * 2) < columns;
+ toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
+ });
+ updateTabs(tableId, selected);
+}
+
+function updateTabs(tableId, selected) {
+ document.getElementById(tableId + '.tabpanel')
+ .setAttribute('aria-labelledby', selected);
+ document.querySelectorAll('button[id^="' + tableId + '"]')
+ .forEach(function(tab, index) {
+ if (selected === tab.id || (tableId === selected && index === 0)) {
+ tab.className = activeTableTab;
+ tab.setAttribute('aria-selected', true);
+ tab.setAttribute('tabindex',0);
+ } else {
+ tab.className = tableTab;
+ tab.setAttribute('aria-selected', false);
+ tab.setAttribute('tabindex',-1);
+ }
+ });
+}
+
+function switchTab(e) {
+ var selected = document.querySelector('[aria-selected=true]');
+ if (selected) {
+ if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
+ // left or up arrow key pressed: move focus to previous tab
+ selected.previousSibling.click();
+ selected.previousSibling.focus();
+ e.preventDefault();
+ } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
+ // right or down arrow key pressed: move focus to next tab
+ selected.nextSibling.click();
+ selected.nextSibling.focus();
+ e.preventDefault();
+ }
+ }
+}
+
+var updateSearchResults = function() {};
+
+function indexFilesLoaded() {
+ return moduleSearchIndex
+ && packageSearchIndex
+ && typeSearchIndex
+ && memberSearchIndex
+ && tagSearchIndex;
+}
+// Copy the contents of the local snippet to the clipboard
+function copySnippet(button) {
+ copyToClipboard(button.nextElementSibling.innerText);
+ switchCopyLabel(button, button.firstElementChild);
+}
+function copyToClipboard(content) {
+ var textarea = document.createElement("textarea");
+ textarea.style.height = 0;
+ document.body.appendChild(textarea);
+ textarea.value = content;
+ textarea.select();
+ document.execCommand("copy");
+ document.body.removeChild(textarea);
+}
+function switchCopyLabel(button, span) {
+ var copied = span.getAttribute("data-copied");
+ button.classList.add("visible");
+ var initialLabel = span.innerHTML;
+ span.innerHTML = copied;
+ setTimeout(function() {
+ button.classList.remove("visible");
+ setTimeout(function() {
+ if (initialLabel !== copied) {
+ span.innerHTML = initialLabel;
+ }
+ }, 100);
+ }, 1900);
+}
+// Workaround for scroll position not being included in browser history (8249133)
+document.addEventListener("DOMContentLoaded", function(e) {
+ var contentDiv = document.querySelector("div.flex-content");
+ window.addEventListener("popstate", function(e) {
+ if (e.state !== null) {
+ contentDiv.scrollTop = e.state;
+ }
+ });
+ window.addEventListener("hashchange", function(e) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ });
+ var timeoutId;
+ contentDiv.addEventListener("scroll", function(e) {
+ if (timeoutId) {
+ clearTimeout(timeoutId);
+ }
+ timeoutId = setTimeout(function() {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }, 100);
+ });
+ if (!location.hash) {
+ history.replaceState(contentDiv.scrollTop, document.title);
+ }
+});
diff --git a/docs/search-page.js b/docs/search-page.js
new file mode 100644
index 0000000..540c90f
--- /dev/null
+++ b/docs/search-page.js
@@ -0,0 +1,284 @@
+/*
+ * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+"use strict";
+$(function() {
+ var copy = $("#page-search-copy");
+ var expand = $("#page-search-expand");
+ var searchLink = $("span#page-search-link");
+ var redirect = $("input#search-redirect");
+ function setSearchUrlTemplate() {
+ var href = document.location.href.split(/[#?]/)[0];
+ href += "?q=" + "%s";
+ if (redirect.is(":checked")) {
+ href += "&r=1";
+ }
+ searchLink.html(href);
+ copy[0].onmouseenter();
+ }
+ function copyLink(e) {
+ copyToClipboard(this.previousSibling.innerText);
+ switchCopyLabel(this, this.lastElementChild);
+ }
+ copy.click(copyLink);
+ copy[0].onmouseenter = function() {};
+ redirect.click(setSearchUrlTemplate);
+ setSearchUrlTemplate();
+ copy.prop("disabled", false);
+ redirect.prop("disabled", false);
+ expand.click(function (e) {
+ var searchInfo = $("div.page-search-info");
+ if(this.parentElement.hasAttribute("open")) {
+ searchInfo.attr("style", "border-width: 0;");
+ } else {
+ searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight"));
+ }
+ });
+});
+$(window).on("load", function() {
+ var input = $("#page-search-input");
+ var reset = $("#page-search-reset");
+ var notify = $("#page-search-notify");
+ var resultSection = $("div#result-section");
+ var resultContainer = $("div#result-container");
+ var searchTerm = "";
+ var activeTab = "";
+ var fixedTab = false;
+ var visibleTabs = [];
+ var feelingLucky = false;
+ function renderResults(result) {
+ if (!result.length) {
+ notify.html(messages.noResult);
+ } else if (result.length === 1) {
+ notify.html(messages.oneResult);
+ } else {
+ notify.html(messages.manyResults.replace("{0}", result.length));
+ }
+ resultContainer.empty();
+ var r = {
+ "types": [],
+ "members": [],
+ "packages": [],
+ "modules": [],
+ "searchTags": []
+ };
+ for (var i in result) {
+ var item = result[i];
+ var arr = r[item.category];
+ arr.push(item);
+ }
+ if (!activeTab || r[activeTab].length === 0 || !fixedTab) {
+ Object.keys(r).reduce(function(prev, curr) {
+ if (r[curr].length > 0 && r[curr][0].score > prev) {
+ activeTab = curr;
+ return r[curr][0].score;
+ }
+ return prev;
+ }, 0);
+ }
+ if (feelingLucky && activeTab) {
+ notify.html(messages.redirecting)
+ var firstItem = r[activeTab][0];
+ window.location = getURL(firstItem.indexItem, firstItem.category);
+ return;
+ }
+ if (result.length > 20) {
+ if (searchTerm[searchTerm.length - 1] === ".") {
+ if (activeTab === "types" && r["members"].length > r["types"].length) {
+ activeTab = "members";
+ } else if (activeTab === "packages" && r["types"].length > r["packages"].length) {
+ activeTab = "types";
+ }
+ }
+ }
+ var categoryCount = Object.keys(r).reduce(function(prev, curr) {
+ return prev + (r[curr].length > 0 ? 1 : 0);
+ }, 0);
+ visibleTabs = [];
+ var tabContainer = $("
").appendTo(resultContainer);
+ for (var key in r) {
+ var id = "#result-tab-" + key.replace("searchTags", "search_tags");
+ if (r[key].length) {
+ var count = r[key].length >= 1000 ? "999+" : r[key].length;
+ if (result.length > 20 && categoryCount > 1) {
+ var button = $("").appendTo(tabContainer);
+ button.click(key, function(e) {
+ fixedTab = true;
+ renderResult(e.data, $(this));
+ });
+ visibleTabs.push(key);
+ } else {
+ $("").appendTo(tabContainer);
+ renderTable(key, r[key]).appendTo(resultContainer);
+ tabContainer = $("
").appendTo(resultContainer);
+
+ }
+ }
+ }
+ if (activeTab && result.length > 20 && categoryCount > 1) {
+ $("button#result-tab-" + activeTab).addClass("active-table-tab");
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ }
+ resultSection.show();
+ function renderResult(category, button) {
+ activeTab = category;
+ setSearchUrl();
+ resultContainer.find("div.summary-table").remove();
+ renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
+ button.siblings().removeClass("active-table-tab");
+ button.addClass("active-table-tab");
+ }
+ }
+ function selectTab(category) {
+ $("button#result-tab-" + category).click();
+ }
+ function renderTable(category, items) {
+ var table = $("")
+ .addClass(category === "modules"
+ ? "one-column-search-results"
+ : "two-column-search-results");
+ var col1, col2;
+ if (category === "modules") {
+ col1 = "Module";
+ } else if (category === "packages") {
+ col1 = "Module";
+ col2 = "Package";
+ } else if (category === "types") {
+ col1 = "Package";
+ col2 = "Class"
+ } else if (category === "members") {
+ col1 = "Class";
+ col2 = "Member";
+ } else if (category === "searchTags") {
+ col1 = "Location";
+ col2 = "Name";
+ }
+ $("").appendTo(table);
+ if (category !== "modules") {
+ $("").appendTo(table);
+ }
+ $.each(items, function(index, item) {
+ var rowColor = index % 2 ? "odd-row-color" : "even-row-color";
+ renderItem(item, table, rowColor);
+ });
+ return table;
+ }
+ function renderItem(item, table, rowColor) {
+ var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length);
+ var link = $("
")
+ .attr("href", getURL(item.indexItem, item.category))
+ .attr("tabindex", "0")
+ .addClass("search-result-link")
+ .html(label);
+ var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1);
+ if (item.category === "searchTags") {
+ container = item.indexItem.h || "";
+ }
+ if (item.category !== "modules") {
+ $("
").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
+ }
+ $("
").html(link).addClass("col-last").addClass(rowColor).appendTo(table);
+ }
+ var timeout;
+ function schedulePageSearch() {
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ timeout = setTimeout(function () {
+ doPageSearch()
+ }, 100);
+ }
+ function doPageSearch() {
+ setSearchUrl();
+ var term = searchTerm = input.val().trim();
+ if (term === "") {
+ notify.html(messages.enterTerm);
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ resultSection.hide();
+ } else {
+ notify.html(messages.searching);
+ doSearch({ term: term, maxResults: 1200 }, renderResults);
+ }
+ }
+ function setSearchUrl() {
+ var query = input.val().trim();
+ var url = document.location.pathname;
+ if (query) {
+ url += "?q=" + encodeURI(query);
+ if (activeTab && fixedTab) {
+ url += "&c=" + activeTab;
+ }
+ }
+ history.replaceState({query: query}, "", url);
+ }
+ input.on("input", function(e) {
+ feelingLucky = false;
+ schedulePageSearch();
+ });
+ $(document).keydown(function(e) {
+ if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) {
+ if (activeTab && visibleTabs.length > 1) {
+ var idx = visibleTabs.indexOf(activeTab);
+ idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1;
+ selectTab(visibleTabs[idx % visibleTabs.length]);
+ return false;
+ }
+ }
+ });
+ reset.click(function() {
+ notify.html(messages.enterTerm);
+ resultSection.hide();
+ activeTab = "";
+ fixedTab = false;
+ resultContainer.empty();
+ input.val('').focus();
+ setSearchUrl();
+ });
+ input.prop("disabled", false);
+ reset.prop("disabled", false);
+
+ var urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.has("q")) {
+ input.val(urlParams.get("q"))
+ }
+ if (urlParams.has("c")) {
+ activeTab = urlParams.get("c");
+ fixedTab = true;
+ }
+ if (urlParams.get("r")) {
+ feelingLucky = true;
+ }
+ if (input.val()) {
+ doPageSearch();
+ } else {
+ notify.html(messages.enterTerm);
+ }
+ input.select().focus();
+});
diff --git a/docs/search.html b/docs/search.html
new file mode 100644
index 0000000..feba543
--- /dev/null
+++ b/docs/search.html
@@ -0,0 +1,72 @@
+
+
+
+
+
Search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Search
+
+
+
+
+Additional resources
+
+
+
+
The help page provides an introduction to the scope and syntax of JavaDoc search.
+
You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.
+
The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.
+
link Copy
+
+
+Redirect to first result
+
+Loading search index...
+
+
+
+
+
+
diff --git a/docs/search.js b/docs/search.js
new file mode 100644
index 0000000..d398670
--- /dev/null
+++ b/docs/search.js
@@ -0,0 +1,458 @@
+/*
+ * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+"use strict";
+const messages = {
+ enterTerm: "Enter a search term",
+ noResult: "No results found",
+ oneResult: "Found one result",
+ manyResults: "Found {0} results",
+ loading: "Loading search index...",
+ searching: "Searching...",
+ redirecting: "Redirecting to first result...",
+ linkIcon: "Link icon",
+ linkToSection: "Link to this section"
+}
+const categories = {
+ modules: "Modules",
+ packages: "Packages",
+ types: "Classes and Interfaces",
+ members: "Members",
+ searchTags: "Search Tags"
+};
+const highlight = "
$& ";
+const NO_MATCH = {};
+const MAX_RESULTS = 300;
+function checkUnnamed(name, separator) {
+ return name === "
" || !name ? "" : name + separator;
+}
+function escapeHtml(str) {
+ return str.replace(//g, ">");
+}
+function getHighlightedText(str, boundaries, from, to) {
+ var start = from;
+ var text = "";
+ for (var i = 0; i < boundaries.length; i += 2) {
+ var b0 = boundaries[i];
+ var b1 = boundaries[i + 1];
+ if (b0 >= to || b1 <= from) {
+ continue;
+ }
+ text += escapeHtml(str.slice(start, Math.max(start, b0)));
+ text += "";
+ text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
+ text += " ";
+ start = Math.min(to, b1);
+ }
+ text += escapeHtml(str.slice(start, to));
+ return text;
+}
+function getURLPrefix(item, category) {
+ var urlPrefix = "";
+ var slash = "/";
+ if (category === "modules") {
+ return item.l + slash;
+ } else if (category === "packages" && item.m) {
+ return item.m + slash;
+ } else if (category === "types" || category === "members") {
+ if (item.m) {
+ urlPrefix = item.m + slash;
+ } else {
+ $.each(packageSearchIndex, function(index, it) {
+ if (it.m && item.p === it.l) {
+ urlPrefix = it.m + slash;
+ }
+ });
+ }
+ }
+ return urlPrefix;
+}
+function getURL(item, category) {
+ if (item.url) {
+ return item.url;
+ }
+ var url = getURLPrefix(item, category);
+ if (category === "modules") {
+ url += "module-summary.html";
+ } else if (category === "packages") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += item.l.replace(/\./g, '/') + "/package-summary.html";
+ }
+ } else if (category === "types") {
+ if (item.u) {
+ url = item.u;
+ } else {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
+ }
+ } else if (category === "members") {
+ url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
+ if (item.u) {
+ url += item.u;
+ } else {
+ url += item.l;
+ }
+ } else if (category === "searchTags") {
+ url += item.u;
+ }
+ item.url = url;
+ return url;
+}
+function createMatcher(term, camelCase) {
+ if (camelCase && !isUpperCase(term)) {
+ return null; // no need for camel-case matcher for lower case query
+ }
+ var pattern = "";
+ var upperCase = [];
+ term.trim().split(/\s+/).forEach(function(w, index, array) {
+ var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
+ for (var i = 0; i < tokens.length; i++) {
+ var s = tokens[i];
+ // ',' and '?' are the only delimiters commonly followed by space in java signatures
+ pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
+ upperCase.push(false);
+ var isWordToken = /\w$/.test(s);
+ if (isWordToken) {
+ if (i === tokens.length - 1 && index < array.length - 1) {
+ // space in query string matches all delimiters
+ pattern += "(.*?)";
+ upperCase.push(isUpperCase(s[0]));
+ } else {
+ if (!camelCase && isUpperCase(s) && s.length === 1) {
+ pattern += "()";
+ } else {
+ pattern += "([a-z0-9$<>?[\\]]*?)";
+ }
+ upperCase.push(isUpperCase(s[0]));
+ }
+ } else {
+ pattern += "()";
+ upperCase.push(false);
+ }
+ }
+ });
+ var re = new RegExp(pattern, "gi");
+ re.upperCase = upperCase;
+ return re;
+}
+function findMatch(matcher, input, startOfName, endOfName) {
+ var from = startOfName;
+ matcher.lastIndex = from;
+ var match = matcher.exec(input);
+ // Expand search area until we get a valid result or reach the beginning of the string
+ while (!match || match.index + match[0].length < startOfName || endOfName < match.index) {
+ if (from === 0) {
+ return NO_MATCH;
+ }
+ from = input.lastIndexOf(".", from - 2) + 1;
+ matcher.lastIndex = from;
+ match = matcher.exec(input);
+ }
+ var boundaries = [];
+ var matchEnd = match.index + match[0].length;
+ var score = 5;
+ var start = match.index;
+ var prevEnd = -1;
+ for (var i = 1; i < match.length; i += 2) {
+ var isUpper = isUpperCase(input[start]);
+ var isMatcherUpper = matcher.upperCase[i];
+ // capturing groups come in pairs, match and non-match
+ boundaries.push(start, start + match[i].length);
+ // make sure groups are anchored on a left word boundary
+ var prevChar = input[start - 1] || "";
+ var nextChar = input[start + 1] || "";
+ if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
+ if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
+ score -= 0.1;
+ } else if (isMatcherUpper && start === prevEnd) {
+ score -= isUpper ? 0.1 : 1.0;
+ } else {
+ return NO_MATCH;
+ }
+ }
+ prevEnd = start + match[i].length;
+ start += match[i].length + match[i + 1].length;
+
+ // lower score for parts of the name that are missing
+ if (match[i + 1] && prevEnd < endOfName) {
+ score -= rateNoise(match[i + 1]);
+ }
+ }
+ // lower score if a type name contains unmatched camel-case parts
+ if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
+ score -= rateNoise(input.slice(matchEnd, endOfName));
+ score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
+
+ if (score <= 0) {
+ return NO_MATCH;
+ }
+ return {
+ input: input,
+ score: score,
+ boundaries: boundaries
+ };
+}
+function isUpperCase(s) {
+ return s !== s.toLowerCase();
+}
+function isLowerCase(s) {
+ return s !== s.toUpperCase();
+}
+function rateNoise(str) {
+ return (str.match(/([.(])/g) || []).length / 5
+ + (str.match(/([A-Z]+)/g) || []).length / 10
+ + str.length / 20;
+}
+function doSearch(request, response) {
+ var term = request.term.trim();
+ var maxResults = request.maxResults || MAX_RESULTS;
+ if (term.length === 0) {
+ return this.close();
+ }
+ var matcher = {
+ plainMatcher: createMatcher(term, false),
+ camelCaseMatcher: createMatcher(term, true)
+ }
+ var indexLoaded = indexFilesLoaded();
+
+ function getPrefix(item, category) {
+ switch (category) {
+ case "packages":
+ return checkUnnamed(item.m, "/");
+ case "types":
+ return checkUnnamed(item.p, ".");
+ case "members":
+ return checkUnnamed(item.p, ".") + item.c + ".";
+ default:
+ return "";
+ }
+ }
+ function useQualifiedName(category) {
+ switch (category) {
+ case "packages":
+ return /[\s/]/.test(term);
+ case "types":
+ case "members":
+ return /[\s.]/.test(term);
+ default:
+ return false;
+ }
+ }
+ function searchIndex(indexArray, category) {
+ var matches = [];
+ if (!indexArray) {
+ if (!indexLoaded) {
+ matches.push({ l: messages.loading, category: category });
+ }
+ return matches;
+ }
+ $.each(indexArray, function (i, item) {
+ var prefix = getPrefix(item, category);
+ var simpleName = item.l;
+ var qualifiedName = prefix + simpleName;
+ var useQualified = useQualifiedName(category);
+ var input = useQualified ? qualifiedName : simpleName;
+ var startOfName = useQualified ? prefix.length : 0;
+ var endOfName = category === "members" && input.indexOf("(", startOfName) > -1
+ ? input.indexOf("(", startOfName) : input.length;
+ var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName);
+ if (m === NO_MATCH && matcher.camelCaseMatcher) {
+ m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName);
+ }
+ if (m !== NO_MATCH) {
+ m.indexItem = item;
+ m.prefix = prefix;
+ m.category = category;
+ if (!useQualified) {
+ m.input = qualifiedName;
+ m.boundaries = m.boundaries.map(function(b) {
+ return b + prefix.length;
+ });
+ }
+ matches.push(m);
+ }
+ return true;
+ });
+ return matches.sort(function(e1, e2) {
+ return e2.score - e1.score;
+ }).slice(0, maxResults);
+ }
+
+ var result = searchIndex(moduleSearchIndex, "modules")
+ .concat(searchIndex(packageSearchIndex, "packages"))
+ .concat(searchIndex(typeSearchIndex, "types"))
+ .concat(searchIndex(memberSearchIndex, "members"))
+ .concat(searchIndex(tagSearchIndex, "searchTags"));
+
+ if (!indexLoaded) {
+ updateSearchResults = function() {
+ doSearch(request, response);
+ }
+ } else {
+ updateSearchResults = function() {};
+ }
+ response(result);
+}
+// JQuery search menu implementation
+$.widget("custom.catcomplete", $.ui.autocomplete, {
+ _create: function() {
+ this._super();
+ this.widget().menu("option", "items", "> .result-item");
+ // workaround for search result scrolling
+ this.menu._scrollIntoView = function _scrollIntoView( item ) {
+ var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+ if ( this._hasScroll() ) {
+ borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
+ paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
+ offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+ scroll = this.activeMenu.scrollTop();
+ elementHeight = this.activeMenu.height() - 26;
+ itemHeight = item.outerHeight();
+
+ if ( offset < 0 ) {
+ this.activeMenu.scrollTop( scroll + offset );
+ } else if ( offset + itemHeight > elementHeight ) {
+ this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+ }
+ }
+ };
+ },
+ _renderMenu: function(ul, items) {
+ var currentCategory = "";
+ var widget = this;
+ widget.menu.bindings = $();
+ $.each(items, function(index, item) {
+ if (item.category && item.category !== currentCategory) {
+ ul.append("" + categories[item.category] + " ");
+ currentCategory = item.category;
+ }
+ var li = widget._renderItemData(ul, item);
+ if (item.category) {
+ li.attr("aria-label", categories[item.category] + " : " + item.l);
+ } else {
+ li.attr("aria-label", item.l);
+ }
+ li.attr("class", "result-item");
+ });
+ ul.append("Go to search page ");
+ },
+ _renderItem: function(ul, item) {
+ var li = $(" ").appendTo(ul);
+ var div = $("
").appendTo(li);
+ var label = item.l
+ ? item.l
+ : getHighlightedText(item.input, item.boundaries, 0, item.input.length);
+ var idx = item.indexItem;
+ if (item.category === "searchTags" && idx && idx.h) {
+ if (idx.d) {
+ div.html(label + " (" + idx.h + ") "
+ + idx.d + " ");
+ } else {
+ div.html(label + " (" + idx.h + ") ");
+ }
+ } else {
+ div.html(label);
+ }
+ return li;
+ }
+});
+$(function() {
+ var expanded = false;
+ var windowWidth;
+ function collapse() {
+ if (expanded) {
+ $("div#navbar-top").removeAttr("style");
+ $("button#navbar-toggle-button")
+ .removeClass("expanded")
+ .attr("aria-expanded", "false");
+ expanded = false;
+ }
+ }
+ $("button#navbar-toggle-button").click(function (e) {
+ if (expanded) {
+ collapse();
+ } else {
+ var navbar = $("div#navbar-top");
+ navbar.height(navbar.prop("scrollHeight"));
+ $("button#navbar-toggle-button")
+ .addClass("expanded")
+ .attr("aria-expanded", "true");
+ expanded = true;
+ windowWidth = window.innerWidth;
+ }
+ });
+ $("ul.sub-nav-list-small li a").click(collapse);
+ $("input#search-input").focus(collapse);
+ $("main").click(collapse);
+ $("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) {
+ // Create anchor links for headers with an associated id attribute
+ var hdr = $(el);
+ var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id");
+ if (id) {
+ hdr.append(" ");
+ }
+ });
+ $(window).on("orientationchange", collapse).on("resize", function(e) {
+ if (expanded && windowWidth !== window.innerWidth) collapse();
+ });
+ var search = $("#search-input");
+ var reset = $("#reset-button");
+ search.catcomplete({
+ minLength: 1,
+ delay: 200,
+ source: doSearch,
+ response: function(event, ui) {
+ if (!ui.content.length) {
+ ui.content.push({ l: messages.noResult });
+ } else {
+ $("#search-input").empty();
+ }
+ },
+ autoFocus: true,
+ focus: function(event, ui) {
+ return false;
+ },
+ position: {
+ collision: "flip"
+ },
+ select: function(event, ui) {
+ if (ui.item.indexItem) {
+ var url = getURL(ui.item.indexItem, ui.item.category);
+ window.location.href = pathtoroot + url;
+ $("#search-input").focus();
+ }
+ }
+ });
+ search.val('');
+ search.prop("disabled", false);
+ reset.prop("disabled", false);
+ reset.click(function() {
+ search.val('').focus();
+ });
+ search.focus();
+});
diff --git a/docs/serialized-form.html b/docs/serialized-form.html
new file mode 100644
index 0000000..cee7986
--- /dev/null
+++ b/docs/serialized-form.html
@@ -0,0 +1,213 @@
+
+
+
+
+Serialized Form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+statePanel
+JPanel statePanel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Serialized Fields
+
+
+label
+JLabel label
+The Label.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/stylesheet.css b/docs/stylesheet.css
new file mode 100644
index 0000000..f71489f
--- /dev/null
+++ b/docs/stylesheet.css
@@ -0,0 +1,1272 @@
+/*
+ * Javadoc style sheet
+ */
+
+@import url('resources/fonts/dejavu.css');
+
+/*
+ * These CSS custom properties (variables) define the core color and font
+ * properties used in this stylesheet.
+ */
+:root {
+ /* body, block and code fonts */
+ --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
+ --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
+ --code-font-family: 'DejaVu Sans Mono', monospace;
+ /* Base font sizes for body and code elements */
+ --body-font-size: 14px;
+ --code-font-size: 14px;
+ /* Text colors for body and block elements */
+ --body-text-color: #353833;
+ --block-text-color: #474747;
+ /* Background colors for various structural elements */
+ --body-background-color: #ffffff;
+ --section-background-color: #f8f8f8;
+ --detail-background-color: #ffffff;
+ /* Colors for navigation bar and table captions */
+ --navbar-background-color: #4D7A97;
+ --navbar-text-color: #ffffff;
+ /* Background color for subnavigation and various headers */
+ --subnav-background-color: #dee3e9;
+ /* Background and text colors for selected tabs and navigation items */
+ --selected-background-color: #f8981d;
+ --selected-text-color: #253441;
+ --selected-link-color: #1f389c;
+ /* Background colors for generated tables */
+ --even-row-color: #ffffff;
+ --odd-row-color: #eeeeef;
+ /* Text color for page title */
+ --title-color: #2c4557;
+ /* Text colors for links */
+ --link-color: #4A6782;
+ --link-color-active: #bb7a2a;
+ /* Snippet colors */
+ --snippet-background-color: #ebecee;
+ --snippet-text-color: var(--block-text-color);
+ --snippet-highlight-color: #f7c590;
+ /* Border colors for structural elements and user defined tables */
+ --border-color: #ededed;
+ --table-border-color: #000000;
+ /* Search input colors */
+ --search-input-background-color: #ffffff;
+ --search-input-text-color: #000000;
+ --search-input-placeholder-color: #909090;
+ /* Highlight color for active search tag target */
+ --search-tag-highlight-color: #ffff00;
+ /* Adjustments for icon and active background colors of copy-to-clipboard buttons */
+ --copy-icon-brightness: 100%;
+ --copy-button-background-color-active: rgba(168, 168, 176, 0.3);
+ /* Colors for invalid tag notifications */
+ --invalid-tag-background-color: #ffe6e6;
+ --invalid-tag-text-color: #000000;
+}
+/*
+ * Styles for individual HTML elements.
+ *
+ * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
+ * HTML element throughout the page.
+ */
+body {
+ background-color:var(--body-background-color);
+ color:var(--body-text-color);
+ font-family:var(--body-font-family);
+ font-size:var(--body-font-size);
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+}
+iframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+ overflow-y:scroll;
+ border:none;
+}
+a:link, a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+}
+a[href]:hover, a[href]:focus {
+ text-decoration:none;
+ color:var(--link-color-active);
+}
+pre {
+ font-family:var(--code-font-family);
+ font-size:1em;
+}
+h1 {
+ font-size:1.428em;
+}
+h2 {
+ font-size:1.285em;
+}
+h3 {
+ font-size:1.14em;
+}
+h4 {
+ font-size:1.072em;
+}
+h5 {
+ font-size:1.001em;
+}
+h6 {
+ font-size:0.93em;
+}
+/* Disable font boosting for selected elements */
+h1, h2, h3, h4, h5, h6, div.member-signature {
+ max-height: 1000em;
+}
+ul {
+ list-style-type:disc;
+}
+code, tt {
+ font-family:var(--code-font-family);
+}
+:not(h1, h2, h3, h4, h5, h6) > code,
+:not(h1, h2, h3, h4, h5, h6) > tt {
+ font-size:var(--code-font-size);
+ padding-top:4px;
+ margin-top:8px;
+ line-height:1.4em;
+}
+dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ padding-top:4px;
+}
+.summary-table dt code {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ vertical-align:top;
+ padding-top:4px;
+}
+sup {
+ font-size:8px;
+}
+button {
+ font-family: var(--body-font-family);
+ font-size: 1em;
+}
+/*
+ * Styles for HTML generated by javadoc.
+ *
+ * These are style classes that are used by the standard doclet to generate HTML documentation.
+ */
+
+/*
+ * Styles for document title and copyright.
+ */
+.about-language {
+ float:right;
+ padding:0 21px 8px 8px;
+ font-size:0.915em;
+ margin-top:-9px;
+ height:2.9em;
+}
+.legal-copy {
+ margin-left:.5em;
+}
+/*
+ * Styles for navigation bar.
+ */
+@media screen {
+ div.flex-box {
+ position:fixed;
+ display:flex;
+ flex-direction:column;
+ height: 100%;
+ width: 100%;
+ }
+ header.flex-header {
+ flex: 0 0 auto;
+ }
+ div.flex-content {
+ flex: 1 1 auto;
+ overflow-y: auto;
+ }
+}
+.top-nav {
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ float:left;
+ width:100%;
+ clear:right;
+ min-height:2.8em;
+ padding:10px 0 0 0;
+ overflow:hidden;
+ font-size:0.857em;
+}
+button#navbar-toggle-button {
+ display:none;
+}
+ul.sub-nav-list-small {
+ display: none;
+}
+.sub-nav {
+ background-color:var(--subnav-background-color);
+ float:left;
+ width:100%;
+ overflow:hidden;
+ font-size:0.857em;
+}
+.sub-nav div {
+ clear:left;
+ float:left;
+ padding:6px;
+ text-transform:uppercase;
+}
+.sub-nav .sub-nav-list {
+ padding-top:4px;
+}
+ul.nav-list {
+ display:block;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.sub-nav-list {
+ float:left;
+ margin:0 25px 0 0;
+ padding:0;
+}
+ul.nav-list li {
+ list-style:none;
+ float:left;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+.sub-nav .nav-list-search {
+ float:right;
+ margin:0;
+ padding:6px;
+ clear:none;
+ text-align:right;
+ position:relative;
+}
+ul.sub-nav-list li {
+ list-style:none;
+ float:left;
+}
+.top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ color:var(--navbar-text-color);
+ text-decoration:none;
+ text-transform:uppercase;
+}
+.top-nav a:hover {
+ color:var(--link-color-active);
+}
+.nav-bar-cell1-rev {
+ background-color:var(--selected-background-color);
+ color:var(--selected-text-color);
+ margin: auto 5px;
+}
+.skip-nav {
+ position:absolute;
+ top:auto;
+ left:-9999px;
+ overflow:hidden;
+}
+/*
+ * Hide navigation links and search box in print layout
+ */
+@media print {
+ ul.nav-list, div.sub-nav {
+ display:none;
+ }
+}
+/*
+ * Styles for page header.
+ */
+.title {
+ color:var(--title-color);
+ margin:10px 0;
+}
+.sub-title {
+ margin:5px 0 0 0;
+}
+ul.contents-list {
+ margin: 0 0 15px 0;
+ padding: 0;
+ list-style: none;
+}
+ul.contents-list li {
+ font-size:0.93em;
+}
+/*
+ * Styles for headings.
+ */
+body.class-declaration-page .summary h2,
+body.class-declaration-page .details h2,
+body.class-use-page h2,
+body.module-declaration-page .block-list h2 {
+ font-style: italic;
+ padding:0;
+ margin:15px 0;
+}
+body.class-declaration-page .summary h3,
+body.class-declaration-page .details h3,
+body.class-declaration-page .summary .inherited-list h2 {
+ background-color:var(--subnav-background-color);
+ border:1px solid var(--border-color);
+ margin:0 0 6px -8px;
+ padding:7px 5px;
+}
+/*
+ * Styles for page layout containers.
+ */
+main {
+ clear:both;
+ padding:10px 20px;
+ position:relative;
+}
+dl.notes > dt {
+ font-family: var(--body-font-family);
+ font-size:0.856em;
+ font-weight:bold;
+ margin:10px 0 0 0;
+ color:var(--body-text-color);
+}
+dl.notes > dd {
+ margin:5px 10px 10px 0;
+ font-size:1em;
+ font-family:var(--block-font-family)
+}
+dl.name-value > dt {
+ margin-left:1px;
+ font-size:1.1em;
+ display:inline;
+ font-weight:bold;
+}
+dl.name-value > dd {
+ margin:0 0 0 1px;
+ font-size:1.1em;
+ display:inline;
+}
+/*
+ * Styles for lists.
+ */
+li.circle {
+ list-style:circle;
+}
+ul.horizontal li {
+ display:inline;
+ font-size:0.9em;
+}
+div.inheritance {
+ margin:0;
+ padding:0;
+}
+div.inheritance div.inheritance {
+ margin-left:2em;
+}
+ul.block-list,
+ul.details-list,
+ul.member-list,
+ul.summary-list {
+ margin:10px 0 10px 0;
+ padding:0;
+}
+ul.block-list > li,
+ul.details-list > li,
+ul.member-list > li,
+ul.summary-list > li {
+ list-style:none;
+ margin-bottom:15px;
+ line-height:1.4;
+}
+ul.ref-list {
+ padding:0;
+ margin:0;
+}
+ul.ref-list > li {
+ list-style:none;
+}
+.summary-table dl, .summary-table dl dt, .summary-table dl dd {
+ margin-top:0;
+ margin-bottom:1px;
+}
+ul.tag-list, ul.tag-list-long {
+ padding-left: 0;
+ list-style: none;
+}
+ul.tag-list li {
+ display: inline;
+}
+ul.tag-list li:not(:last-child):after,
+ul.tag-list-long li:not(:last-child):after
+{
+ content: ", ";
+ white-space: pre-wrap;
+}
+ul.preview-feature-list {
+ list-style: none;
+ margin:0;
+ padding:0.1em;
+ line-height: 1.6em;
+}
+/*
+ * Styles for tables.
+ */
+.summary-table, .details-table {
+ width:100%;
+ border-spacing:0;
+ border:1px solid var(--border-color);
+ border-top:0;
+ padding:0;
+}
+.caption {
+ position:relative;
+ text-align:left;
+ background-repeat:no-repeat;
+ color:var(--selected-text-color);
+ clear:none;
+ overflow:hidden;
+ padding: 10px 0 0 1px;
+ margin:0;
+}
+.caption a:link, .caption a:visited {
+ color:var(--selected-link-color);
+}
+.caption a:hover,
+.caption a:active {
+ color:var(--navbar-text-color);
+}
+.caption span {
+ font-weight:bold;
+ white-space:nowrap;
+ padding:5px 12px 7px 12px;
+ display:inline-block;
+ float:left;
+ background-color:var(--selected-background-color);
+ border: none;
+ height:16px;
+}
+div.table-tabs {
+ padding:10px 0 0 1px;
+ margin:10px 0 0 0;
+}
+div.table-tabs > button {
+ border: none;
+ cursor: pointer;
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 8px;
+}
+div.table-tabs > .active-table-tab {
+ background: var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(400px, max-content) minmax(400px, auto);
+}
+div.checkboxes {
+ line-height: 2em;
+}
+div.checkboxes > span {
+ margin-left: 10px;
+}
+div.checkboxes > label {
+ margin-left: 8px;
+ white-space: nowrap;
+}
+div.checkboxes > label > input {
+ margin: 0 2px;
+}
+.two-column-summary {
+ display: grid;
+ grid-template-columns: minmax(25%, max-content) minmax(25%, auto);
+}
+.three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto);
+}
+.three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto);
+}
+.four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto);
+}
+@media screen and (max-width: 1000px) {
+ .four-column-summary {
+ display: grid;
+ grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
+ }
+}
+@media screen and (max-width: 800px) {
+ .two-column-search-results {
+ display: grid;
+ grid-template-columns: minmax(40%, max-content) minmax(40%, auto);
+ }
+ .three-column-summary {
+ display: grid;
+ grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
+ }
+ .three-column-release-summary {
+ display: grid;
+ grid-template-columns: minmax(70%, max-content) minmax(30%, max-content)
+ }
+ .three-column-summary .col-last,
+ .three-column-release-summary .col-last{
+ grid-column-end: span 2;
+ }
+}
+@media screen and (max-width: 600px) {
+ .two-column-summary {
+ display: grid;
+ grid-template-columns: 1fr;
+ }
+}
+.summary-table > div, .details-table > div {
+ text-align:left;
+ padding: 8px 3px 3px 7px;
+ overflow-x: auto;
+ scrollbar-width: thin;
+}
+.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
+ vertical-align:top;
+ padding-right:0;
+ padding-top:8px;
+ padding-bottom:3px;
+}
+.table-header {
+ background:var(--subnav-background-color);
+ font-weight: bold;
+}
+/* Sortable table columns */
+.table-header[onclick] {
+ cursor: pointer;
+}
+.table-header[onclick]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ ');
+ background-size:100% 100%;
+ width:9px;
+ height:14px;
+ margin-left:4px;
+ margin-bottom:-3px;
+}
+.table-header[onclick].sort-asc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+
+}
+.table-header[onclick].sort-desc::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+.col-first, .col-first {
+ font-size:0.93em;
+}
+.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
+ font-size:0.93em;
+}
+.col-first, .col-second, .col-constructor-name {
+ vertical-align:top;
+ overflow: auto;
+}
+.col-last {
+ white-space:normal;
+}
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-first a:link, .col-first a:visited,
+.col-second a:link, .col-second a:visited,
+.col-constructor-name a:link, .col-constructor-name a:visited,
+.col-summary-item-name a:link, .col-summary-item-name a:visited {
+ font-weight:bold;
+}
+.even-row-color, .even-row-color .table-header {
+ background-color:var(--even-row-color);
+}
+.odd-row-color, .odd-row-color .table-header {
+ background-color:var(--odd-row-color);
+}
+/*
+ * Styles for contents.
+ */
+div.block {
+ font-size:var(--body-font-size);
+ font-family:var(--block-font-family);
+}
+.col-last div {
+ padding-top:0;
+}
+.col-last a {
+ padding-bottom:3px;
+}
+.module-signature,
+.package-signature,
+.type-signature,
+.member-signature {
+ font-family:var(--code-font-family);
+ font-size:1em;
+ margin:14px 0;
+ white-space: pre-wrap;
+}
+.module-signature,
+.package-signature,
+.type-signature {
+ margin-top: 0;
+}
+.member-signature .type-parameters-long,
+.member-signature .parameters,
+.member-signature .exceptions {
+ display: inline-block;
+ vertical-align: top;
+ white-space: pre;
+}
+.member-signature .type-parameters {
+ white-space: normal;
+}
+/*
+ * Styles for formatting effect.
+ */
+.source-line-no {
+ /* Color of line numbers in source pages can be set via custom property below */
+ color:var(--source-linenumber-color, green);
+ padding:0 30px 0 0;
+}
+.block {
+ display:block;
+ margin:0 10px 5px 0;
+ color:var(--block-text-color);
+}
+.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link,
+.module-label-in-package, .module-label-in-type, .package-label-in-type,
+.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
+ font-weight:bold;
+}
+.deprecation-comment, .help-footnote, .preview-comment {
+ font-style:italic;
+}
+.deprecation-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+.preview-block {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ border-style:solid;
+ border-width:thin;
+ border-radius:10px;
+ padding:10px;
+ margin-bottom:10px;
+ margin-right:10px;
+ display:inline-block;
+}
+div.block div.deprecation-comment {
+ font-style:normal;
+}
+details.invalid-tag, span.invalid-tag {
+ font-size:1em;
+ font-family:var(--block-font-family);
+ color: var(--invalid-tag-text-color);
+ background: var(--invalid-tag-background-color);
+ border: thin solid var(--table-border-color);
+ border-radius:2px;
+ padding: 2px 4px;
+ display:inline-block;
+}
+details summary {
+ cursor: pointer;
+}
+/*
+ * Styles specific to HTML5 elements.
+ */
+main, nav, header, footer, section {
+ display:block;
+}
+/*
+ * Styles for javadoc search.
+ */
+.ui-state-active {
+ /* Overrides the color of selection used in jQuery UI */
+ background: var(--selected-background-color);
+ border: 1px solid var(--selected-background-color);
+ color: var(--selected-text-color);
+}
+.ui-autocomplete-category {
+ font-weight:bold;
+ font-size:15px;
+ padding:7px 0 7px 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+}
+.ui-autocomplete {
+ max-height:85%;
+ max-width:65%;
+ overflow-y:auto;
+ overflow-x:auto;
+ scrollbar-width: thin;
+ white-space:nowrap;
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+ul.ui-autocomplete {
+ position:fixed;
+ z-index:1;
+ background-color: var(--body-background-color);
+}
+ul.ui-autocomplete li {
+ float:left;
+ clear:both;
+ min-width:100%;
+}
+ul.ui-autocomplete li.ui-static-link {
+ position:sticky;
+ bottom:0;
+ left:0;
+ background: var(--subnav-background-color);
+ padding: 5px 0;
+ font-family: var(--body-font-family);
+ font-size: 0.93em;
+ font-weight: bolder;
+ z-index: 2;
+}
+li.ui-static-link a, li.ui-static-link a:visited {
+ text-decoration:none;
+ color:var(--link-color);
+ float:right;
+ margin-right:20px;
+}
+.ui-autocomplete .result-item {
+ font-size: inherit;
+}
+.ui-autocomplete .result-highlight {
+ font-weight:bold;
+}
+#search-input, #page-search-input {
+ background-image:url('resources/glass.png');
+ background-size:13px;
+ background-repeat:no-repeat;
+ background-position:2px 3px;
+ background-color: var(--search-input-background-color);
+ color: var(--search-input-text-color);
+ border-color: var(--border-color);
+ padding-left:20px;
+ width: 250px;
+ margin: 0;
+}
+#search-input {
+ margin-left: 4px;
+}
+#reset-button {
+ background-color: transparent;
+ background-image:url('resources/x.png');
+ background-repeat:no-repeat;
+ background-size:contain;
+ border:0;
+ border-radius:0;
+ width:12px;
+ height:12px;
+ position:absolute;
+ right:12px;
+ top:10px;
+ font-size:0;
+}
+::placeholder {
+ color:var(--search-input-placeholder-color);
+ opacity: 1;
+}
+.search-tag-desc-result {
+ font-style:italic;
+ font-size:11px;
+}
+.search-tag-holder-result {
+ font-style:italic;
+ font-size:12px;
+}
+.search-tag-result:target {
+ background-color:var(--search-tag-highlight-color);
+}
+details.page-search-details {
+ display: inline-block;
+}
+div#result-container {
+ font-size: 1em;
+}
+div#result-container a.search-result-link {
+ padding: 0;
+ margin: 4px 0;
+ width: 100%;
+}
+#result-container .result-highlight {
+ font-weight:bolder;
+}
+.page-search-info {
+ background-color: var(--subnav-background-color);
+ border-radius: 3px;
+ border: 0 solid var(--border-color);
+ padding: 0 8px;
+ overflow: hidden;
+ height: 0;
+ transition: all 0.2s ease;
+}
+div.table-tabs > button.table-tab {
+ background: var(--navbar-background-color);
+ color: var(--navbar-text-color);
+}
+.page-search-header {
+ padding: 5px 12px 7px 12px;
+ font-weight: bold;
+ margin-right: 3px;
+ background-color:var(--navbar-background-color);
+ color:var(--navbar-text-color);
+ display: inline-block;
+}
+button.page-search-header {
+ border: none;
+ cursor: pointer;
+}
+span#page-search-link {
+ text-decoration: underline;
+}
+.module-graph span, .sealed-graph span {
+ display:none;
+ position:absolute;
+}
+.module-graph:hover span, .sealed-graph:hover span {
+ display:block;
+ margin: -100px 0 0 100px;
+ z-index: 1;
+}
+.inherited-list {
+ margin: 10px 0 10px 0;
+}
+section.class-description {
+ line-height: 1.4;
+}
+.summary section[class$="-summary"], .details section[class$="-details"],
+.class-uses .detail, .serialized-class-details {
+ padding: 0 20px 5px 10px;
+ border: 1px solid var(--border-color);
+ background-color: var(--section-background-color);
+}
+.inherited-list, section[class$="-details"] .detail {
+ padding:0 0 5px 8px;
+ background-color:var(--detail-background-color);
+ border:none;
+}
+.vertical-separator {
+ padding: 0 5px;
+}
+ul.help-section-list {
+ margin: 0;
+}
+ul.help-subtoc > li {
+ display: inline-block;
+ padding-right: 5px;
+ font-size: smaller;
+}
+ul.help-subtoc > li::before {
+ content: "\2022" ;
+ padding-right:2px;
+}
+.help-note {
+ font-style: italic;
+}
+/*
+ * Indicator icon for external links.
+ */
+main a[href*="://"]::after {
+ content:"";
+ display:inline-block;
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+ background-size:100% 100%;
+ width:7px;
+ height:7px;
+ margin-left:2px;
+ margin-bottom:4px;
+}
+main a[href*="://"]:hover::after,
+main a[href*="://"]:focus::after {
+ background-image:url('data:image/svg+xml; utf8, \
+ \
+ \
+ ');
+}
+/*
+ * Styles for header/section anchor links
+ */
+a.anchor-link {
+ opacity: 0;
+ transition: opacity 0.1s;
+}
+:hover > a.anchor-link {
+ opacity: 80%;
+}
+a.anchor-link:hover,
+a.anchor-link:focus-visible,
+a.anchor-link.visible {
+ opacity: 100%;
+}
+a.anchor-link > img {
+ width: 0.9em;
+ height: 0.9em;
+}
+/*
+ * Styles for copy-to-clipboard buttons
+ */
+button.copy {
+ opacity: 70%;
+ border: none;
+ border-radius: 3px;
+ position: relative;
+ background:none;
+ transition: opacity 0.3s;
+ cursor: pointer;
+}
+:hover > button.copy {
+ opacity: 80%;
+}
+button.copy:hover,
+button.copy:active,
+button.copy:focus-visible,
+button.copy.visible {
+ opacity: 100%;
+}
+button.copy img {
+ position: relative;
+ background: none;
+ filter: brightness(var(--copy-icon-brightness));
+}
+button.copy:active {
+ background-color: var(--copy-button-background-color-active);
+}
+button.copy span {
+ color: var(--body-text-color);
+ position: relative;
+ top: -0.1em;
+ transition: all 0.1s;
+ font-size: 0.76rem;
+ line-height: 1.2em;
+ opacity: 0;
+}
+button.copy:hover span,
+button.copy:focus-visible span,
+button.copy.visible span {
+ opacity: 100%;
+}
+/* search page copy button */
+button#page-search-copy {
+ margin-left: 0.4em;
+ padding:0.3em;
+ top:0.13em;
+}
+button#page-search-copy img {
+ width: 1.2em;
+ height: 1.2em;
+ padding: 0.01em 0;
+ top: 0.15em;
+}
+button#page-search-copy span {
+ color: var(--body-text-color);
+ line-height: 1.2em;
+ padding: 0.2em;
+ top: -0.18em;
+}
+div.page-search-info:hover button#page-search-copy span {
+ opacity: 100%;
+}
+/* snippet copy button */
+button.snippet-copy {
+ position: absolute;
+ top: 6px;
+ right: 6px;
+ height: 1.7em;
+ padding: 2px;
+}
+button.snippet-copy img {
+ width: 18px;
+ height: 18px;
+ padding: 0.05em 0;
+}
+button.snippet-copy span {
+ line-height: 1.2em;
+ padding: 0.2em;
+ position: relative;
+ top: -0.5em;
+}
+div.snippet-container:hover button.snippet-copy span {
+ opacity: 100%;
+}
+/*
+ * Styles for user-provided tables.
+ *
+ * borderless:
+ * No borders, vertical margins, styled caption.
+ * This style is provided for use with existing doc comments.
+ * In general, borderless tables should not be used for layout purposes.
+ *
+ * plain:
+ * Plain borders around table and cells, vertical margins, styled caption.
+ * Best for small tables or for complex tables for tables with cells that span
+ * rows and columns, when the "striped" style does not work well.
+ *
+ * striped:
+ * Borders around the table and vertical borders between cells, striped rows,
+ * vertical margins, styled caption.
+ * Best for tables that have a header row, and a body containing a series of simple rows.
+ */
+
+table.borderless,
+table.plain,
+table.striped {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+table.borderless > caption,
+table.plain > caption,
+table.striped > caption {
+ font-weight: bold;
+ font-size: smaller;
+}
+table.borderless th, table.borderless td,
+table.plain th, table.plain td,
+table.striped th, table.striped td {
+ padding: 2px 5px;
+}
+table.borderless,
+table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
+table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
+ border: none;
+}
+table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
+ background-color: transparent;
+}
+table.plain {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
+ background-color: transparent;
+}
+table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
+table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped {
+ border-collapse: collapse;
+ border: 1px solid var(--table-border-color);
+}
+table.striped > thead {
+ background-color: var(--subnav-background-color);
+}
+table.striped > thead > tr > th, table.striped > thead > tr > td {
+ border: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr:nth-child(even) {
+ background-color: var(--odd-row-color)
+}
+table.striped > tbody > tr:nth-child(odd) {
+ background-color: var(--even-row-color)
+}
+table.striped > tbody > tr > th, table.striped > tbody > tr > td {
+ border-left: 1px solid var(--table-border-color);
+ border-right: 1px solid var(--table-border-color);
+}
+table.striped > tbody > tr > th {
+ font-weight: normal;
+}
+/**
+ * Tweak style for small screens.
+ */
+@media screen and (max-width: 920px) {
+ header.flex-header {
+ max-height: 100vh;
+ overflow-y: auto;
+ }
+ div#navbar-top {
+ height: 2.8em;
+ transition: height 0.35s ease;
+ }
+ ul.nav-list {
+ display: block;
+ width: 40%;
+ float:left;
+ clear: left;
+ margin: 10px 0 0 0;
+ padding: 0;
+ }
+ ul.nav-list li {
+ float: none;
+ padding: 6px;
+ margin-left: 10px;
+ margin-top: 2px;
+ }
+ ul.sub-nav-list-small {
+ display:block;
+ height: 100%;
+ width: 50%;
+ float: right;
+ clear: right;
+ background-color: var(--subnav-background-color);
+ color: var(--body-text-color);
+ margin: 6px 0 0 0;
+ padding: 0;
+ }
+ ul.sub-nav-list-small ul {
+ padding-left: 20px;
+ }
+ ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited {
+ color:var(--link-color);
+ }
+ ul.sub-nav-list-small a:hover {
+ color:var(--link-color-active);
+ }
+ ul.sub-nav-list-small li {
+ list-style:none;
+ float:none;
+ padding: 6px;
+ margin-top: 1px;
+ text-transform:uppercase;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 10px;
+ }
+ ul.sub-nav-list-small li p {
+ margin: 5px 0;
+ }
+ div#navbar-sub-list {
+ display: none;
+ }
+ .top-nav a:link, .top-nav a:active, .top-nav a:visited {
+ display: block;
+ }
+ button#navbar-toggle-button {
+ width: 3.4em;
+ height: 2.8em;
+ background-color: transparent;
+ display: block;
+ float: left;
+ border: 0;
+ margin: 0 10px;
+ cursor: pointer;
+ font-size: 10px;
+ }
+ button#navbar-toggle-button .nav-bar-toggle-icon {
+ display: block;
+ width: 24px;
+ height: 3px;
+ margin: 1px 0 4px 0;
+ border-radius: 2px;
+ transition: all 0.1s;
+ background-color: var(--navbar-text-color);
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) {
+ transform: rotate(45deg);
+ transform-origin: 10% 10%;
+ width: 26px;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) {
+ opacity: 0;
+ }
+ button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) {
+ transform: rotate(-45deg);
+ transform-origin: 10% 90%;
+ width: 26px;
+ }
+}
+@media screen and (max-width: 800px) {
+ .about-language {
+ padding-right: 16px;
+ }
+ ul.nav-list li {
+ margin-left: 5px;
+ }
+ ul.sub-nav-list-small > li {
+ margin-left: 5px;
+ }
+ main {
+ padding: 10px;
+ }
+ .summary section[class$="-summary"], .details section[class$="-details"],
+ .class-uses .detail, .serialized-class-details {
+ padding: 0 8px 5px 8px;
+ }
+ body {
+ -webkit-text-size-adjust: none;
+ }
+}
+@media screen and (max-width: 400px) {
+ .about-language {
+ font-size: 10px;
+ padding-right: 12px;
+ }
+}
+@media screen and (max-width: 400px) {
+ .nav-list-search {
+ width: 94%;
+ }
+ #search-input, #page-search-input {
+ width: 70%;
+ }
+}
+@media screen and (max-width: 320px) {
+ .nav-list-search > label {
+ display: none;
+ }
+ .nav-list-search {
+ width: 90%;
+ }
+ #search-input, #page-search-input {
+ width: 80%;
+ }
+}
+
+pre.snippet {
+ background-color: var(--snippet-background-color);
+ color: var(--snippet-text-color);
+ padding: 10px;
+ margin: 12px 0;
+ overflow: auto;
+ white-space: pre;
+}
+div.snippet-container {
+ position: relative;
+}
+@media screen and (max-width: 800px) {
+ pre.snippet {
+ padding-top: 26px;
+ }
+ button.snippet-copy {
+ top: 4px;
+ right: 4px;
+ }
+}
+pre.snippet .italic {
+ font-style: italic;
+}
+pre.snippet .bold {
+ font-weight: bold;
+}
+pre.snippet .highlighted {
+ background-color: var(--snippet-highlight-color);
+ border-radius: 10%;
+}
diff --git a/docs/tag-search-index.js b/docs/tag-search-index.js
new file mode 100644
index 0000000..bf10aaf
--- /dev/null
+++ b/docs/tag-search-index.js
@@ -0,0 +1 @@
+tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"},{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults();
\ No newline at end of file
diff --git a/docs/type-search-index.js b/docs/type-search-index.js
new file mode 100644
index 0000000..773f564
--- /dev/null
+++ b/docs/type-search-index.js
@@ -0,0 +1 @@
+typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"com.amirhn.Pieces","l":"Bishop"},{"p":"com.amirhn.Game","l":"Board"},{"p":"com.amirhn.GUI.Components","l":"BoardPanel"},{"p":"com.amirhn.Moves","l":"Capture"},{"p":"com.amirhn.Moves","l":"Castling"},{"p":"com.amirhn.Game","l":"Chess"},{"p":"com.amirhn.GUI","l":"ChessController"},{"p":"com.amirhn.GUI","l":"ChessFrame"},{"p":"com.amirhn.GUI","l":"ChessMenuBar"},{"p":"com.amirhn.GUI","l":"ChessMenuController"},{"p":"com.amirhn.Game","l":"Color"},{"p":"com.amirhn.GUI","l":"Constants"},{"p":"com.amirhn.Moves","l":"EnPassant"},{"p":"com.amirhn.Pieces","l":"King"},{"p":"com.amirhn.Pieces","l":"Knight"},{"p":"com.amirhn.Game","l":"Location"},{"p":"com.amirhn.GUI.Listeners","l":"LocationListener"},{"p":"com.amirhn.GUI.Components","l":"LocationPanel"},{"p":"com.amirhn.GUI.Components","l":"LocationState"},{"p":"com.amirhn.Moves","l":"LongCastling"},{"p":"com.amirhn","l":"Main"},{"p":"com.amirhn.Moves","l":"Move"},{"p":"com.amirhn.Moves","l":"MoveType"},{"p":"com.amirhn.Pieces","l":"Pawn"},{"p":"com.amirhn.Moves","l":"PawnPromotion"},{"p":"com.amirhn.Pieces","l":"Piece"},{"p":"com.amirhn.GUI.Components","l":"PieceImageIcon"},{"p":"com.amirhn.GUI.Components","l":"PiecePanel"},{"p":"com.amirhn.Pieces","l":"PieceType"},{"p":"com.amirhn.Players","l":"Player"},{"p":"com.amirhn.Moves","l":"Promotion"},{"p":"com.amirhn.Pieces","l":"Queen"},{"p":"com.amirhn.Pieces","l":"Rook"},{"p":"com.amirhn.Game","l":"Scene"},{"p":"com.amirhn.Moves","l":"ShortCastling"},{"p":"com.amirhn.Game","l":"Status"},{"p":"com.amirhn.GUI.Components","l":"TablePanel"},{"p":"com.amirhn.Moves","l":"Walk"}];updateSearchResults();
\ No newline at end of file
diff --git a/src/main/java/com/amirhn/GUI/ChessController.java b/src/main/java/com/amirhn/GUI/ChessController.java
index 83f568b..78c3938 100644
--- a/src/main/java/com/amirhn/GUI/ChessController.java
+++ b/src/main/java/com/amirhn/GUI/ChessController.java
@@ -15,9 +15,7 @@
import javax.sound.sampled.*;
import javax.swing.*;
-/**
- * The type Chess controller.
- */
+/** The type Chess controller. */
public class ChessController implements LocationListener, ChessMenuController {
private final BoardPanel boardPanel;
@@ -32,7 +30,7 @@ public class ChessController implements LocationListener, ChessMenuController {
* @param chess the chess
* @param boardPanel the board panel
*/
-public ChessController(Chess chess, BoardPanel boardPanel) {
+ public ChessController(Chess chess, BoardPanel boardPanel) {
this.boardPanel = boardPanel;
this.boardPanel.setLocationListener(this);
initialize(chess);
@@ -52,10 +50,8 @@ private void addPiece(Piece piece) {
this.boardPanel.addPiecePanel(piecePanel, piece.getLocation());
}
- /**
- * Apply random move.
- */
-public void applyRandomMove() {
+ /** Apply random move. */
+ public void applyRandomMove() {
if (finished) return;
Move move = chess.getRandomMove();
if (move != null && applyMove(move)) {
@@ -107,7 +103,7 @@ private void playMoveSound(Move move) {
* @param move the move
* @return the boolean
*/
-public boolean applyMove(Move move) {
+ public boolean applyMove(Move move) {
if (!chess.applyMove(move)) return false;
playMoveSound(move);
lastMove = move;
@@ -143,7 +139,7 @@ private void draw() {
*
* @param location the location
*/
-@Override
+ @Override
public void locationSelected(Location location) {
if (finished) return;
if (currentSelectedPiece == null) {
@@ -162,7 +158,7 @@ public void locationSelected(Location location) {
*
* @param location the location
*/
-@Override
+ @Override
public void locationGrabbed(Location location) {
if (finished) return;
currentSelectedPiece = chess.getBoard().getPiece(location);
@@ -174,7 +170,7 @@ public void locationGrabbed(Location location) {
*
* @param location the location
*/
-@Override
+ @Override
public void locationDropped(Location location) {
if (finished) return;
if (currentSelectedPiece == null) {
@@ -194,7 +190,7 @@ public void locationDropped(Location location) {
* @param location the location
* @return the boolean
*/
-@Override
+ @Override
public boolean isLocationDraggable(Location location) {
return !finished
&& chess.getBoard().isOccupied(location)
@@ -215,28 +211,22 @@ private void checkForFinish() {
finished = true;
}
- /**
- * New game.
- */
-@Override
+ /** New game. */
+ @Override
public void newGame() {
initialize(new Chess());
}
- /**
- * Load fen.
- */
-@Override
+ /** Load fen. */
+ @Override
public void loadFEN() {
String fen = JOptionPane.showInputDialog(boardPanel, "Enter FEN:");
if (fen == null) return;
initialize(new Chess(fen));
}
- /**
- * Undo move.
- */
-@Override
+ /** Undo move. */
+ @Override
public void undoMove() {
if (finished) return;
chess.undoMove();
diff --git a/src/main/java/com/amirhn/GUI/ChessFrame.java b/src/main/java/com/amirhn/GUI/ChessFrame.java
index b7a724d..d42739a 100644
--- a/src/main/java/com/amirhn/GUI/ChessFrame.java
+++ b/src/main/java/com/amirhn/GUI/ChessFrame.java
@@ -6,15 +6,11 @@
import java.awt.event.KeyEvent;
import javax.swing.*;
-/**
- * The type Chess frame.
- */
+/** The type Chess frame. */
public class ChessFrame extends JFrame {
- /**
- * Instantiates a new Chess frame.
- */
-public ChessFrame() {
+ /** Instantiates a new Chess frame. */
+ public ChessFrame() {
super();
Chess chess = new Chess();
diff --git a/src/main/java/com/amirhn/GUI/ChessMenuBar.java b/src/main/java/com/amirhn/GUI/ChessMenuBar.java
index d991fe6..58b4327 100644
--- a/src/main/java/com/amirhn/GUI/ChessMenuBar.java
+++ b/src/main/java/com/amirhn/GUI/ChessMenuBar.java
@@ -4,9 +4,7 @@
import java.awt.event.ActionListener;
import javax.swing.*;
-/**
- * The type Chess menu bar.
- */
+/** The type Chess menu bar. */
public class ChessMenuBar extends JMenuBar implements ActionListener {
private final ChessMenuController controller;
@@ -21,7 +19,7 @@ public class ChessMenuBar extends JMenuBar implements ActionListener {
*
* @param controller the controller
*/
-public ChessMenuBar(ChessMenuController controller) {
+ public ChessMenuBar(ChessMenuController controller) {
this.controller = controller;
JMenu gameMenu = new JMenu("Game");
@@ -48,7 +46,7 @@ public ChessMenuBar(ChessMenuController controller) {
*
* @param e the e
*/
-@Override
+ @Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == newGame) {
controller.newGame();
diff --git a/src/main/java/com/amirhn/GUI/ChessMenuController.java b/src/main/java/com/amirhn/GUI/ChessMenuController.java
index 48ef37b..1c6ec9e 100644
--- a/src/main/java/com/amirhn/GUI/ChessMenuController.java
+++ b/src/main/java/com/amirhn/GUI/ChessMenuController.java
@@ -1,26 +1,16 @@
package com.amirhn.GUI;
-/**
- * The interface Chess menu controller.
- */
+/** The interface Chess menu controller. */
public interface ChessMenuController {
- /**
- * New game.
- */
-void newGame();
+ /** New game. */
+ void newGame();
- /**
- * Load fen.
- */
-void loadFEN();
+ /** Load fen. */
+ void loadFEN();
- /**
- * Undo move.
- */
-void undoMove();
+ /** Undo move. */
+ void undoMove();
- /**
- * Apply random move.
- */
-void applyRandomMove();
+ /** Apply random move. */
+ void applyRandomMove();
}
diff --git a/src/main/java/com/amirhn/GUI/Components/BoardPanel.java b/src/main/java/com/amirhn/GUI/Components/BoardPanel.java
index 1a20086..c464f9b 100644
--- a/src/main/java/com/amirhn/GUI/Components/BoardPanel.java
+++ b/src/main/java/com/amirhn/GUI/Components/BoardPanel.java
@@ -8,9 +8,7 @@
import java.util.Arrays;
import javax.swing.*;
-/**
- * The type Board panel.
- */
+/** The type Board panel. */
public class BoardPanel extends JLayeredPane implements MouseMotionListener, MouseListener {
private final TablePanel tablePanel;
@@ -23,7 +21,7 @@ public class BoardPanel extends JLayeredPane implements MouseMotionListener, Mou
* @param rows the rows
* @param columns the columns
*/
-public BoardPanel(int rows, int columns) {
+ public BoardPanel(int rows, int columns) {
super();
this.tablePanel = new TablePanel(rows, columns);
this.tablePanel.setBounds(
@@ -40,7 +38,7 @@ public BoardPanel(int rows, int columns) {
*
* @param locationListener the location listener
*/
-public void setLocationListener(LocationListener locationListener) {
+ public void setLocationListener(LocationListener locationListener) {
this.locationListener = locationListener;
}
@@ -50,7 +48,7 @@ public void setLocationListener(LocationListener locationListener) {
* @param piecePanel the piece panel
* @param location the location
*/
-public void addPiecePanel(PiecePanel piecePanel, Location location) {
+ public void addPiecePanel(PiecePanel piecePanel, Location location) {
if (location == null) return;
piecePanel.setBounds(
this.tablePanel.pointOf(location).x,
@@ -60,17 +58,13 @@ public void addPiecePanel(PiecePanel piecePanel, Location location) {
this.add(piecePanel, Integer.valueOf(1));
}
- /**
- * Remove piece panels.
- */
-public void removePiecePanels() {
+ /** Remove piece panels. */
+ public void removePiecePanels() {
Arrays.stream(this.getComponents()).filter(c -> c instanceof PiecePanel).forEach(this::remove);
}
- /**
- * Reset location states.
- */
-public void resetLocationStates() {
+ /** Reset location states. */
+ public void resetLocationStates() {
this.tablePanel.resetLocationStates();
}
@@ -80,7 +74,7 @@ public void resetLocationStates() {
* @param location the location
* @param state the state
*/
-public void setLocationState(Location location, LocationState state) {
+ public void setLocationState(Location location, LocationState state) {
this.tablePanel.getLocationPanel(location).setState(state);
}
@@ -89,7 +83,7 @@ public void setLocationState(Location location, LocationState state) {
*
* @param e the e
*/
-@Override
+ @Override
public void mouseDragged(MouseEvent e) {
if (this.movingPiecePanel == null) return;
e.translatePoint(-movingPiecePanel.getWidth() / 2, -movingPiecePanel.getHeight() / 2);
@@ -101,7 +95,7 @@ public void mouseDragged(MouseEvent e) {
*
* @param e the e
*/
-@Override
+ @Override
public void mouseMoved(MouseEvent e) {}
/**
@@ -109,7 +103,7 @@ public void mouseMoved(MouseEvent e) {}
*
* @param e the e
*/
-@Override
+ @Override
public void mouseClicked(MouseEvent e) {
this.locationListener.locationSelected(this.tablePanel.locationOf(e.getPoint()));
}
@@ -119,7 +113,7 @@ public void mouseClicked(MouseEvent e) {
*
* @param e the e
*/
-@Override
+ @Override
public void mousePressed(MouseEvent e) {
if (this.movingPiecePanel != null) return;
Location grabbedLocation = this.tablePanel.locationOf(e.getPoint());
@@ -138,7 +132,7 @@ public void mousePressed(MouseEvent e) {
*
* @param e the e
*/
-@Override
+ @Override
public void mouseReleased(MouseEvent e) {
if (this.movingPiecePanel == null) return;
this.locationListener.locationDropped(this.tablePanel.locationOf(e.getPoint()));
@@ -150,7 +144,7 @@ public void mouseReleased(MouseEvent e) {
*
* @param e the e
*/
-@Override
+ @Override
public void mouseEntered(MouseEvent e) {}
/**
@@ -158,6 +152,6 @@ public void mouseEntered(MouseEvent e) {}
*
* @param e the e
*/
-@Override
+ @Override
public void mouseExited(MouseEvent e) {}
}
diff --git a/src/main/java/com/amirhn/GUI/Components/LocationPanel.java b/src/main/java/com/amirhn/GUI/Components/LocationPanel.java
index 35ec194..a92936a 100644
--- a/src/main/java/com/amirhn/GUI/Components/LocationPanel.java
+++ b/src/main/java/com/amirhn/GUI/Components/LocationPanel.java
@@ -4,15 +4,12 @@
import java.awt.*;
import javax.swing.*;
-/**
- * The type Location panel.
- */
+/** The type Location panel. */
public class LocationPanel extends JLayeredPane {
- /**
- * The constant Size.
- */
-public static final Dimension Size = Constants.TileSize;
+ /** The constant Size. */
+ public static final Dimension Size = Constants.TileSize;
+
private final JPanel statePanel;
/**
@@ -20,7 +17,7 @@ public class LocationPanel extends JLayeredPane {
*
* @param isLight the is light
*/
-public LocationPanel(boolean isLight) {
+ public LocationPanel(boolean isLight) {
super();
this.setPreferredSize(Constants.TileSize);
this.setBackground(isLight ? Constants.LightTileColor : Constants.DarkTileColor);
@@ -42,7 +39,7 @@ public LocationPanel(boolean isLight) {
*
* @param state the state
*/
-public void setState(LocationState state) {
+ public void setState(LocationState state) {
this.statePanel.setBackground(state.color);
repaint();
}
diff --git a/src/main/java/com/amirhn/GUI/Components/LocationState.java b/src/main/java/com/amirhn/GUI/Components/LocationState.java
index f8d630f..fd345a4 100644
--- a/src/main/java/com/amirhn/GUI/Components/LocationState.java
+++ b/src/main/java/com/amirhn/GUI/Components/LocationState.java
@@ -3,31 +3,19 @@
import com.amirhn.GUI.Constants;
import java.awt.*;
-/**
- * The enum Location state.
- */
+/** The enum Location state. */
public enum LocationState {
- /**
- *Lastmove location state.
- */
-LASTMOVE(Constants.YellowGreenColor),
- /**
- *Selected location state.
- */
-SELECTED(Constants.GreenColor),
- /**
- *Suggested location state.
- */
-SUGGESTED(Constants.GreenColor),
- /**
- *Normal location state.
- */
-NORMAL(Constants.TransparentColor);
+ /** Lastmove location state. */
+ LASTMOVE(Constants.YellowGreenColor),
+ /** Selected location state. */
+ SELECTED(Constants.GreenColor),
+ /** Suggested location state. */
+ SUGGESTED(Constants.GreenColor),
+ /** Normal location state. */
+ NORMAL(Constants.TransparentColor);
- /**
- * The Color.
- */
-public final Color color;
+ /** The Color. */
+ public final Color color;
LocationState(Color color) {
this.color = color;
diff --git a/src/main/java/com/amirhn/GUI/Components/PieceImageIcon.java b/src/main/java/com/amirhn/GUI/Components/PieceImageIcon.java
index 41d87e0..cbb8b2e 100644
--- a/src/main/java/com/amirhn/GUI/Components/PieceImageIcon.java
+++ b/src/main/java/com/amirhn/GUI/Components/PieceImageIcon.java
@@ -3,9 +3,7 @@
import com.amirhn.GUI.Constants;
import javax.swing.*;
-/**
- * The type Piece image icon.
- */
+/** The type Piece image icon. */
public class PieceImageIcon extends ImageIcon {
private static final String DefaultPath = Constants.PieceImageDirectory;
@@ -15,7 +13,7 @@ public class PieceImageIcon extends ImageIcon {
* @param color the color
* @param typeLetter the type letter
*/
-public PieceImageIcon(String color, char typeLetter) {
+ public PieceImageIcon(String color, char typeLetter) {
super(DefaultPath + "/" + color.toLowerCase().charAt(0) + typeLetter + ".png");
}
}
diff --git a/src/main/java/com/amirhn/GUI/Components/PiecePanel.java b/src/main/java/com/amirhn/GUI/Components/PiecePanel.java
index 4a843cc..9fbbb08 100644
--- a/src/main/java/com/amirhn/GUI/Components/PiecePanel.java
+++ b/src/main/java/com/amirhn/GUI/Components/PiecePanel.java
@@ -4,26 +4,21 @@
import java.awt.*;
import javax.swing.*;
-/**
- * The type Piece panel.
- */
+/** The type Piece panel. */
public class PiecePanel extends JPanel {
- /**
- * The constant Size.
- */
-public static final Dimension Size = Constants.PieceSize;
- /**
- * The Label.
- */
-public JLabel label;
+ /** The constant Size. */
+ public static final Dimension Size = Constants.PieceSize;
+
+ /** The Label. */
+ public JLabel label;
/**
* Instantiates a new Piece panel.
*
* @param icon the icon
*/
-public PiecePanel(PieceImageIcon icon) {
+ public PiecePanel(PieceImageIcon icon) {
super(new BorderLayout());
this.setOpaque(false);
this.label =
diff --git a/src/main/java/com/amirhn/GUI/Components/TablePanel.java b/src/main/java/com/amirhn/GUI/Components/TablePanel.java
index ce83e3e..cb03ccd 100644
--- a/src/main/java/com/amirhn/GUI/Components/TablePanel.java
+++ b/src/main/java/com/amirhn/GUI/Components/TablePanel.java
@@ -4,9 +4,7 @@
import java.awt.*;
import javax.swing.*;
-/**
- * The type Table panel.
- */
+/** The type Table panel. */
public class TablePanel extends JPanel {
private final int rows, columns;
@@ -18,7 +16,7 @@ public class TablePanel extends JPanel {
* @param rows the rows
* @param columns the columns
*/
-public TablePanel(int rows, int columns) {
+ public TablePanel(int rows, int columns) {
super(new GridLayout(rows, columns));
this.rows = rows;
this.columns = columns;
@@ -37,7 +35,7 @@ public TablePanel(int rows, int columns) {
* @param location the location
* @return the location panel
*/
-public LocationPanel getLocationPanel(Location location) {
+ public LocationPanel getLocationPanel(Location location) {
return this.getLocationPanel(location.row, location.column);
}
@@ -48,14 +46,12 @@ public LocationPanel getLocationPanel(Location location) {
* @param j the j
* @return the location panel
*/
-public LocationPanel getLocationPanel(int i, int j) {
+ public LocationPanel getLocationPanel(int i, int j) {
return this.locationPanels[i][j];
}
- /**
- * Reset location states.
- */
-public void resetLocationStates() {
+ /** Reset location states. */
+ public void resetLocationStates() {
for (int i = 0; i < rows; i++)
for (int j = 0; j < columns; j++) {
LocationPanel locationPanel = this.getLocationPanel(i, j);
@@ -69,7 +65,7 @@ public void resetLocationStates() {
* @param location the location
* @return the point
*/
-public Point pointOf(Location location) {
+ public Point pointOf(Location location) {
return new Point(
location.column * LocationPanel.Size.width,
(rows - location.row - 1) * LocationPanel.Size.height);
@@ -81,7 +77,7 @@ public Point pointOf(Location location) {
* @param point the point
* @return the location
*/
-public Location locationOf(Point point) {
+ public Location locationOf(Point point) {
return Location.valueOf(
rows - 1 - point.y / LocationPanel.Size.height, point.x / LocationPanel.Size.width);
}
diff --git a/src/main/java/com/amirhn/GUI/Constants.java b/src/main/java/com/amirhn/GUI/Constants.java
index ff98aa6..d430514 100644
--- a/src/main/java/com/amirhn/GUI/Constants.java
+++ b/src/main/java/com/amirhn/GUI/Constants.java
@@ -2,60 +2,41 @@
import java.awt.*;
-/**
- * The type Constants.
- */
+/** The type Constants. */
public class Constants {
- /**
- * The constant PieceSize.
- */
-public static final Dimension PieceSize = new Dimension(100, 100);
- /**
- * The constant TileSize.
- */
-public static final Dimension TileSize = new Dimension(100, 100);
-
- /**
- * The constant LightTileColor.
- */
-public static final Color LightTileColor = new Color(240, 217, 181);
- /**
- * The constant DarkTileColor.
- */
-public static final Color DarkTileColor = new Color(181, 136, 99);
-
- /**
- * The constant YellowGreenColor.
- */
-public static final Color YellowGreenColor = new Color(155, 199, 0, 90);
- /**
- * The constant GreenColor.
- */
-public static final Color GreenColor = new Color(20, 85, 30, 100);
- /**
- * The constant TransparentColor.
- */
-public static final Color TransparentColor = new Color(0, 0, 0, 0);
-
- /**
- * The constant GameTitle.
- */
-public static final String GameTitle = "Chess";
- /**
- * The constant PieceImageDirectory.
- */
-public static final String PieceImageDirectory = "png";
-
- /**
- * The constant SoundDirectory.
- */
-public static final String SoundDirectory = "sound";
- /**
- * The constant MoveSoundPath.
- */
-public static final String MoveSoundPath = Constants.SoundDirectory + "/" + "move.wav";
- /**
- * The constant CaptureSoundPath.
- */
-public static final String CaptureSoundPath = Constants.SoundDirectory + "/" + "capture.wav";
+ /** The constant PieceSize. */
+ public static final Dimension PieceSize = new Dimension(100, 100);
+
+ /** The constant TileSize. */
+ public static final Dimension TileSize = new Dimension(100, 100);
+
+ /** The constant LightTileColor. */
+ public static final Color LightTileColor = new Color(240, 217, 181);
+
+ /** The constant DarkTileColor. */
+ public static final Color DarkTileColor = new Color(181, 136, 99);
+
+ /** The constant YellowGreenColor. */
+ public static final Color YellowGreenColor = new Color(155, 199, 0, 90);
+
+ /** The constant GreenColor. */
+ public static final Color GreenColor = new Color(20, 85, 30, 100);
+
+ /** The constant TransparentColor. */
+ public static final Color TransparentColor = new Color(0, 0, 0, 0);
+
+ /** The constant GameTitle. */
+ public static final String GameTitle = "Chess";
+
+ /** The constant PieceImageDirectory. */
+ public static final String PieceImageDirectory = "png";
+
+ /** The constant SoundDirectory. */
+ public static final String SoundDirectory = "sound";
+
+ /** The constant MoveSoundPath. */
+ public static final String MoveSoundPath = Constants.SoundDirectory + "/" + "move.wav";
+
+ /** The constant CaptureSoundPath. */
+ public static final String CaptureSoundPath = Constants.SoundDirectory + "/" + "capture.wav";
}
diff --git a/src/main/java/com/amirhn/GUI/Listeners/LocationListener.java b/src/main/java/com/amirhn/GUI/Listeners/LocationListener.java
index 52fc4a7..4c3ec07 100644
--- a/src/main/java/com/amirhn/GUI/Listeners/LocationListener.java
+++ b/src/main/java/com/amirhn/GUI/Listeners/LocationListener.java
@@ -2,30 +2,28 @@
import com.amirhn.Game.Location;
-/**
- * The interface Location listener.
- */
+/** The interface Location listener. */
public interface LocationListener {
/**
* Location selected.
*
* @param location the location
*/
-void locationSelected(Location location);
+ void locationSelected(Location location);
/**
* Location grabbed.
*
* @param location the location
*/
-void locationGrabbed(Location location);
+ void locationGrabbed(Location location);
/**
* Location dropped.
*
* @param location the location
*/
-void locationDropped(Location location);
+ void locationDropped(Location location);
/**
* Is location draggable boolean.
@@ -33,5 +31,5 @@ public interface LocationListener {
* @param location the location
* @return the boolean
*/
-boolean isLocationDraggable(Location location);
+ boolean isLocationDraggable(Location location);
}
diff --git a/src/main/java/com/amirhn/Game/Board.java b/src/main/java/com/amirhn/Game/Board.java
index 28d0d0c..a6450fe 100644
--- a/src/main/java/com/amirhn/Game/Board.java
+++ b/src/main/java/com/amirhn/Game/Board.java
@@ -5,21 +5,15 @@
import java.util.List;
import java.util.Map;
-/**
- * The type Board.
- */
+/** The type Board. */
public class Board {
- /**
- * The Rows.
- */
-public final int rows, /**
- * The Columns.
- */
-columns;
- /**
- * The Piece by location.
- */
-public final Map pieceByLocation = new HashMap<>();
+ /** The Rows. */
+ public final int rows,
+ /** The Columns. */
+ columns;
+
+ /** The Piece by location. */
+ public final Map pieceByLocation = new HashMap<>();
/**
* Instantiates a new Board.
@@ -27,7 +21,7 @@ public class Board {
* @param rows the rows
* @param columns the columns
*/
-public Board(int rows, int columns) {
+ public Board(int rows, int columns) {
this.rows = rows;
this.columns = columns;
}
@@ -38,7 +32,7 @@ public Board(int rows, int columns) {
* @param fen the fen
* @return the board
*/
-public static Board fromFEN(String fen) {
+ public static Board fromFEN(String fen) {
int rows = fen.split("/").length;
Board board = new Board(rows, rows);
board.setupFEN(fen);
@@ -50,7 +44,7 @@ public static Board fromFEN(String fen) {
*
* @param fen the fen
*/
-public void setupFEN(String fen) {
+ public void setupFEN(String fen) {
pieceByLocation.clear();
String[] rows = fen.split("/");
int i = rows.length - 1;
@@ -74,7 +68,7 @@ public void setupFEN(String fen) {
* @param location the location
* @return the boolean
*/
-public boolean isValidLocation(Location location) {
+ public boolean isValidLocation(Location location) {
if (location == null) return false;
return 0 <= location.row
&& location.row < this.rows
@@ -88,7 +82,7 @@ public boolean isValidLocation(Location location) {
* @param location the location
* @return the boolean
*/
-public boolean isOccupied(Location location) {
+ public boolean isOccupied(Location location) {
if (!this.isValidLocation(location)) return false;
return getPiece(location) != null;
}
@@ -99,7 +93,7 @@ public boolean isOccupied(Location location) {
* @param location the location
* @return the piece
*/
-public Piece getPiece(Location location) {
+ public Piece getPiece(Location location) {
return this.pieceByLocation.get(location);
}
@@ -108,7 +102,7 @@ public Piece getPiece(Location location) {
*
* @param piece the piece
*/
-public void setPiece(Piece piece) {
+ public void setPiece(Piece piece) {
this.pieceByLocation.put(piece.getLocation(), piece);
}
@@ -117,7 +111,7 @@ public void setPiece(Piece piece) {
*
* @param piece the piece
*/
-public void removePiece(Piece piece) {
+ public void removePiece(Piece piece) {
this.pieceByLocation.remove(piece.getLocation());
}
@@ -126,7 +120,7 @@ public void removePiece(Piece piece) {
*
* @return the all pieces
*/
-public List getAllPieces() {
+ public List getAllPieces() {
return pieceByLocation.values().stream().toList();
}
@@ -136,7 +130,7 @@ public List getAllPieces() {
* @param piece the piece
* @return the boolean
*/
-public boolean isValidPiece(Piece piece) {
+ public boolean isValidPiece(Piece piece) {
return this.getPiece(piece.getLocation()) == piece;
}
@@ -145,7 +139,7 @@ public boolean isValidPiece(Piece piece) {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
StringBuilder board = new StringBuilder();
board.append(" \t");
@@ -166,7 +160,7 @@ public String toString() {
*
* @return the board
*/
-public Board copy() {
+ public Board copy() {
Board board = new Board(this.rows, this.columns);
for (Piece piece : this.getAllPieces()) board.setPiece(piece.copy());
return board;
@@ -178,7 +172,7 @@ public Board copy() {
* @param o the o
* @return the boolean
*/
-@Override
+ @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
diff --git a/src/main/java/com/amirhn/Game/Chess.java b/src/main/java/com/amirhn/Game/Chess.java
index 7435ec4..286b723 100644
--- a/src/main/java/com/amirhn/Game/Chess.java
+++ b/src/main/java/com/amirhn/Game/Chess.java
@@ -8,41 +8,31 @@
import java.util.ArrayList;
import java.util.List;
-/**
- * The type Chess.
- */
+/** The type Chess. */
public class Chess {
- /**
- * The constant OriginalFen.
- */
-public static final String OriginalFen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -";
- /**
- * The White player.
- */
-public Player whitePlayer = new Player(Color.WHITE);
- /**
- * The Black player.
- */
-public Player blackPlayer = new Player(Color.BLACK);
- /**
- * The Moves.
- */
-public List moves = new ArrayList<>();
- /**
- * The Turn.
- */
-public Color turn = Color.WHITE;
- /**
- * The History.
- */
-public List history = new ArrayList<>();
+ /** The constant OriginalFen. */
+ public static final String OriginalFen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -";
+
+ /** The White player. */
+ public Player whitePlayer = new Player(Color.WHITE);
+
+ /** The Black player. */
+ public Player blackPlayer = new Player(Color.BLACK);
+
+ /** The Moves. */
+ public List moves = new ArrayList<>();
+
+ /** The Turn. */
+ public Color turn = Color.WHITE;
+
+ /** The History. */
+ public List history = new ArrayList<>();
+
private Board board;
- /**
- * Instantiates a new Chess.
- */
-public Chess() {
+ /** Instantiates a new Chess. */
+ public Chess() {
this(OriginalFen);
}
@@ -51,7 +41,7 @@ public Chess() {
*
* @param fen the fen
*/
-public Chess(String fen) {
+ public Chess(String fen) {
this.setupFEN(fen);
history.add(new Scene(board.copy(), turn));
}
@@ -61,7 +51,7 @@ public Chess(String fen) {
*
* @param fen the fen
*/
-public void setupFEN(String fen) {
+ public void setupFEN(String fen) {
String[] parts = fen.split(" ");
board = Board.fromFEN(parts[0]);
turn = Color.fromString(parts[1]);
@@ -87,7 +77,7 @@ public void setupFEN(String fen) {
*
* @param piece the piece
*/
-public void setPiece(Piece piece) {
+ public void setPiece(Piece piece) {
this.board.setPiece(piece);
}
@@ -96,7 +86,7 @@ public void setPiece(Piece piece) {
*
* @return the board
*/
-public Board getBoard() {
+ public Board getBoard() {
return board;
}
@@ -105,7 +95,7 @@ public Board getBoard() {
*
* @return the turn player
*/
-public Player getTurnPlayer() {
+ public Player getTurnPlayer() {
return getPlayer(turn);
}
@@ -114,7 +104,7 @@ public Player getTurnPlayer() {
*
* @return the opponent player
*/
-public Player getOpponentPlayer() {
+ public Player getOpponentPlayer() {
return getPlayer(turn.opposite());
}
@@ -124,7 +114,7 @@ public Player getOpponentPlayer() {
* @param color the color
* @return the player
*/
-public Player getPlayer(Color color) {
+ public Player getPlayer(Color color) {
if (color == Color.WHITE) return whitePlayer;
return blackPlayer;
}
@@ -134,7 +124,7 @@ public Player getPlayer(Color color) {
*
* @return the allowed moves
*/
-public List getAllowedMoves() {
+ public List getAllowedMoves() {
return getTurnPlayer().getAllowedMoves(this);
}
@@ -143,7 +133,7 @@ public List getAllowedMoves() {
*
* @return the random move
*/
-public Move getRandomMove() {
+ public Move getRandomMove() {
List moves = getAllowedMoves();
if (moves.isEmpty()) return null;
return moves.get((int) (Math.random() * moves.size()));
@@ -176,7 +166,7 @@ private boolean applyLegalMove(Move move) {
* @param move the move
* @return the boolean
*/
-public boolean applyMove(Move move) {
+ public boolean applyMove(Move move) {
if (move == null) return false;
return getAllowedMoves().stream().filter(m -> m.toString().equals(move.toString())).count() == 1
&& applyLegalMove(move);
@@ -187,7 +177,7 @@ public boolean applyMove(Move move) {
*
* @return the boolean
*/
-public boolean isInCheck() {
+ public boolean isInCheck() {
King king = getTurnPlayer().getKing(board);
return getOpponentPlayer().isThreatening(board, king.getLocation());
}
@@ -197,7 +187,7 @@ public boolean isInCheck() {
*
* @return the boolean
*/
-public boolean isCheckmate() {
+ public boolean isCheckmate() {
if (!isInCheck()) return false;
return getAllowedMoves().isEmpty();
}
@@ -207,7 +197,7 @@ public boolean isCheckmate() {
*
* @return the boolean
*/
-public boolean isStalemate() {
+ public boolean isStalemate() {
if (isInCheck()) return false;
return getTurnPlayer().getAllowedMoves(this).isEmpty();
}
@@ -217,7 +207,7 @@ public boolean isStalemate() {
*
* @return the boolean
*/
-public boolean isThreefoldRepetition() {
+ public boolean isThreefoldRepetition() {
Scene currentScene = history.getLast();
int count = 0;
for (Scene scene : history) {
@@ -231,7 +221,7 @@ public boolean isThreefoldRepetition() {
*
* @return the boolean
*/
-public boolean is50MoveRule() {
+ public boolean is50MoveRule() {
if (moves.size() < 50) return false;
return moves.subList(moves.size() - 50, moves.size()).stream()
.noneMatch(move -> move.type == MoveType.CAPTURE || move.piece.type == PieceType.PAWN);
@@ -242,7 +232,7 @@ public boolean is50MoveRule() {
*
* @return the boolean
*/
-public boolean isDraw() {
+ public boolean isDraw() {
return is50MoveRule() || isThreefoldRepetition();
}
@@ -251,17 +241,15 @@ public boolean isDraw() {
*
* @return the status
*/
-public Status getStatus() {
+ public Status getStatus() {
if (isCheckmate()) return Status.CHECKMATE;
if (isStalemate()) return Status.STALEMATE;
if (isDraw()) return Status.DRAW;
return Status.ONGOING;
}
- /**
- * Undo move.
- */
-public void undoMove() {
+ /** Undo move. */
+ public void undoMove() {
if (history.size() < 2) return;
history.removeLast();
Scene scene = history.getLast();
@@ -276,7 +264,7 @@ public void undoMove() {
* @param moveString the move string
* @return the move
*/
-public Move moveFromString(String moveString) {
+ public Move moveFromString(String moveString) {
if (moveString.equals("O-O"))
return new ShortCastling(
getTurnPlayer().getKing(board), getTurnPlayer().getKingSideRook(board));
@@ -324,7 +312,7 @@ public Move moveFromString(String moveString) {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return "Turn: " + turn + "\n" + board;
}
diff --git a/src/main/java/com/amirhn/Game/Color.java b/src/main/java/com/amirhn/Game/Color.java
index 1e89147..6b55258 100644
--- a/src/main/java/com/amirhn/Game/Color.java
+++ b/src/main/java/com/amirhn/Game/Color.java
@@ -1,22 +1,14 @@
package com.amirhn.Game;
-/**
- * The enum Color.
- */
+/** The enum Color. */
public enum Color {
- /**
- *Black color.
- */
-BLACK(-1),
- /**
- *White color.
- */
-WHITE(+1);
+ /** Black color. */
+ BLACK(-1),
+ /** White color. */
+ WHITE(+1);
- /**
- * The Direction.
- */
-public final int direction;
+ /** The Direction. */
+ public final int direction;
Color(int direction) {
this.direction = direction;
@@ -28,19 +20,19 @@ public enum Color {
* @param c the c
* @return the color
*/
-public static Color valueOfPieceChar(char c) {
+ public static Color valueOfPieceChar(char c) {
if (Character.isUpperCase(c)) return Color.WHITE;
if (Character.isLowerCase(c)) return Color.BLACK;
return null;
}
/**
- * Value of color.
- *
- * @param c the c
-* @return the color
- */
-public static Color valueOf(char c) {
+ * Value of color.
+ *
+ * @param c the c
+ * @return the color
+ */
+ public static Color valueOf(char c) {
if (Character.toUpperCase(c) == 'W') return Color.WHITE;
if (Character.toUpperCase(c) == 'B') return Color.BLACK;
return null;
@@ -52,7 +44,7 @@ public static Color valueOf(char c) {
* @param c the c
* @return the color
*/
-public static Color fromString(String c) {
+ public static Color fromString(String c) {
if (c.length() == 1) return valueOf(c.charAt(0));
if (c.equalsIgnoreCase("WHITE")) return Color.WHITE;
if (c.equalsIgnoreCase("BLACK")) return Color.BLACK;
@@ -64,7 +56,7 @@ public static Color fromString(String c) {
*
* @return the color
*/
-public Color opposite() {
+ public Color opposite() {
if (this == Color.BLACK) return Color.WHITE;
if (this == Color.WHITE) return Color.BLACK;
return null;
diff --git a/src/main/java/com/amirhn/Game/Location.java b/src/main/java/com/amirhn/Game/Location.java
index e4a1420..e43325b 100644
--- a/src/main/java/com/amirhn/Game/Location.java
+++ b/src/main/java/com/amirhn/Game/Location.java
@@ -2,17 +2,12 @@
import java.util.Objects;
-/**
- * The type Location.
- */
+/** The type Location. */
public class Location {
- /**
- * The Row.
- */
-public final int row, /**
- * The Column.
- */
-column;
+ /** The Row. */
+ public final int row,
+ /** The Column. */
+ column;
/**
* Instantiates a new Location.
@@ -20,7 +15,7 @@ public class Location {
* @param row the row
* @param column the column
*/
-public Location(int row, int column) {
+ public Location(int row, int column) {
this.row = row;
this.column = column;
}
@@ -31,7 +26,7 @@ public Location(int row, int column) {
* @param loc the loc
* @return the location
*/
-public static Location valueOf(String loc) {
+ public static Location valueOf(String loc) {
return new Location(loc.charAt(1) - '1', loc.charAt(0) - 'a');
}
@@ -42,7 +37,7 @@ public static Location valueOf(String loc) {
* @param column the column
* @return the location
*/
-public static Location valueOf(int row, int column) {
+ public static Location valueOf(int row, int column) {
return new Location(row, column);
}
@@ -53,7 +48,7 @@ public static Location valueOf(int row, int column) {
* @param dy the dy
* @return the location
*/
-public Location byOffset(int dx, int dy) {
+ public Location byOffset(int dx, int dy) {
return Location.valueOf(this.row + dx, this.column + dy);
}
@@ -62,7 +57,7 @@ public Location byOffset(int dx, int dy) {
*
* @return the boolean
*/
-public boolean isLight() {
+ public boolean isLight() {
return ((this.row + this.column) % 2) == 1;
}
@@ -71,7 +66,7 @@ public boolean isLight() {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return ((char) (this.column + 'a')) + String.valueOf(this.row + 1);
}
@@ -82,7 +77,7 @@ public String toString() {
* @param o the o
* @return the boolean
*/
-@Override
+ @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
@@ -95,7 +90,7 @@ public boolean equals(Object o) {
*
* @return the int
*/
-@Override
+ @Override
public int hashCode() {
return Objects.hash(row, column);
}
diff --git a/src/main/java/com/amirhn/Game/Scene.java b/src/main/java/com/amirhn/Game/Scene.java
index 4348daf..0a3bc86 100644
--- a/src/main/java/com/amirhn/Game/Scene.java
+++ b/src/main/java/com/amirhn/Game/Scene.java
@@ -1,8 +1,6 @@
package com.amirhn.Game;
-/**
- * The type Scene.
- */
+/** The type Scene. */
public class Scene {
private final Board board;
private final Color turn;
@@ -13,7 +11,7 @@ public class Scene {
* @param board the board
* @param turn the turn
*/
-public Scene(Board board, Color turn) {
+ public Scene(Board board, Color turn) {
this.board = board;
this.turn = turn;
}
@@ -23,7 +21,7 @@ public Scene(Board board, Color turn) {
*
* @return the board
*/
-public Board getBoard() {
+ public Board getBoard() {
return board;
}
@@ -32,7 +30,7 @@ public Board getBoard() {
*
* @return the turn
*/
-public Color getTurn() {
+ public Color getTurn() {
return turn;
}
@@ -42,7 +40,7 @@ public Color getTurn() {
* @param o the o
* @return the boolean
*/
-@Override
+ @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
diff --git a/src/main/java/com/amirhn/Game/Status.java b/src/main/java/com/amirhn/Game/Status.java
index 70b6f78..f8f43a4 100644
--- a/src/main/java/com/amirhn/Game/Status.java
+++ b/src/main/java/com/amirhn/Game/Status.java
@@ -1,23 +1,13 @@
package com.amirhn.Game;
-/**
- * The enum Status.
- */
+/** The enum Status. */
public enum Status {
- /**
- *Ongoing status.
- */
-ONGOING,
- /**
- *Checkmate status.
- */
-CHECKMATE,
- /**
- *Stalemate status.
- */
-STALEMATE,
- /**
- *Draw status.
- */
-DRAW
+ /** Ongoing status. */
+ ONGOING,
+ /** Checkmate status. */
+ CHECKMATE,
+ /** Stalemate status. */
+ STALEMATE,
+ /** Draw status. */
+ DRAW
}
diff --git a/src/main/java/Main.java b/src/main/java/com/amirhn/Main.java
similarity index 79%
rename from src/main/java/Main.java
rename to src/main/java/com/amirhn/Main.java
index c103d52..6b1f11e 100644
--- a/src/main/java/Main.java
+++ b/src/main/java/com/amirhn/Main.java
@@ -1,15 +1,15 @@
+package com.amirhn;
+
import com.amirhn.GUI.ChessFrame;
-/**
- * The type Main.
- */
+/** The type com.amirhn.Main. */
public class Main {
/**
* The entry point of application.
*
* @param args the input arguments
*/
-public static void main(String[] args) {
+ public static void main(String[] args) {
// GUI
ChessFrame chessFrame = new ChessFrame();
diff --git a/src/main/java/com/amirhn/Moves/Capture.java b/src/main/java/com/amirhn/Moves/Capture.java
index 7a1dd0b..4727cf9 100644
--- a/src/main/java/com/amirhn/Moves/Capture.java
+++ b/src/main/java/com/amirhn/Moves/Capture.java
@@ -4,19 +4,14 @@
import com.amirhn.Game.Location;
import com.amirhn.Pieces.Piece;
-/**
- * The type Capture.
- */
+/** The type Capture. */
public class Capture extends Move {
- /**
- * The Source.
- */
-public Location source;
- /**
- * The Destination.
- */
-public Location destination;
+ /** The Source. */
+ public Location source;
+
+ /** The Destination. */
+ public Location destination;
/** The Capture piece. */
public Piece capturePiece;
@@ -27,7 +22,7 @@ public class Capture extends Move {
* @param piece the piece
* @param capturePiece the capture piece
*/
-public Capture(Piece piece, Piece capturePiece) {
+ public Capture(Piece piece, Piece capturePiece) {
super(MoveType.CAPTURE, piece);
this.capturePiece = capturePiece;
this.source = piece.getLocation();
@@ -40,7 +35,7 @@ public Capture(Piece piece, Piece capturePiece) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean applyOnBoard(Board board) {
if (!isValidApplyOnBoard(board)) return false;
board.removePiece(capturePiece);
@@ -56,7 +51,7 @@ public boolean applyOnBoard(Board board) {
*
* @param board the board
*/
-@Override
+ @Override
public void undoOnBoard(Board board) {
board.removePiece(capturePiece);
board.removePiece(piece);
@@ -72,7 +67,7 @@ public void undoOnBoard(Board board) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean isValidApplyOnBoard(Board board) {
return super.isValidApplyOnBoard(board)
&& board.isValidPiece(capturePiece)
@@ -84,7 +79,7 @@ public boolean isValidApplyOnBoard(Board board) {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return "" + piece.type.letter + source + "x" + destination;
}
@@ -94,7 +89,7 @@ public String toString() {
*
* @return the endpoint location
*/
-@Override
+ @Override
public Location getEndpointLocation() {
return destination;
}
@@ -104,7 +99,7 @@ public Location getEndpointLocation() {
*
* @return the startpoint location
*/
-@Override
+ @Override
public Location getStartpointLocation() {
return source;
}
diff --git a/src/main/java/com/amirhn/Moves/Castling.java b/src/main/java/com/amirhn/Moves/Castling.java
index 3bf3996..bcf4d5e 100644
--- a/src/main/java/com/amirhn/Moves/Castling.java
+++ b/src/main/java/com/amirhn/Moves/Castling.java
@@ -6,25 +6,18 @@
import com.amirhn.Pieces.King;
import com.amirhn.Pieces.Rook;
-/**
- * The type Castling.
- */
+/** The type Castling. */
public abstract class Castling extends Move {
- /**
- * The King move.
- */
-public Walk kingMove, /**
- * The Rook move.
- */
-rookMove;
- /**
- * The King.
- */
-public King king;
- /**
- * The Rook.
- */
-public Rook rook;
+ /** The King move. */
+ public Walk kingMove,
+ /** The Rook move. */
+ rookMove;
+
+ /** The King. */
+ public King king;
+
+ /** The Rook. */
+ public Rook rook;
/**
* Instantiates a new Castling.
@@ -32,7 +25,7 @@ public abstract class Castling extends Move {
* @param kingMove the king move
* @param rookMove the rook move
*/
-public Castling(Walk kingMove, Walk rookMove) {
+ public Castling(Walk kingMove, Walk rookMove) {
super(MoveType.CASTLING, kingMove.piece);
this.kingMove = kingMove;
this.rookMove = rookMove;
@@ -47,7 +40,7 @@ public Castling(Walk kingMove, Walk rookMove) {
* @param rook the rook
* @return the castling
*/
-public static Castling generate(King king, Rook rook) {
+ public static Castling generate(King king, Rook rook) {
if (king.getLocation().row != rook.getLocation().row) return null;
if (king.getLocation().column < rook.getLocation().column) return new ShortCastling(king, rook);
if (king.getLocation().column > rook.getLocation().column) return new LongCastling(king, rook);
@@ -60,7 +53,7 @@ public static Castling generate(King king, Rook rook) {
* @param chess the chess
* @return the boolean
*/
-@Override
+ @Override
public boolean isAllowed(Chess chess) {
if (!super.isAllowed(chess)) return false;
if (king.hasMoved() || rook.hasMoved()) return false;
@@ -86,7 +79,7 @@ public boolean isAllowed(Chess chess) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean applyOnBoard(Board board) {
if (!isValidApplyOnBoard(board)) return false;
kingMove.applyOnBoard(board);
@@ -99,7 +92,7 @@ public boolean applyOnBoard(Board board) {
*
* @param board the board
*/
-@Override
+ @Override
public void undoOnBoard(Board board) {
rookMove.undoOnBoard(board);
kingMove.undoOnBoard(board);
@@ -111,7 +104,7 @@ public void undoOnBoard(Board board) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean isValidApplyOnBoard(Board board) {
return super.isValidApplyOnBoard(board)
&& king.color.equals(rook.color)
@@ -125,7 +118,7 @@ public boolean isValidApplyOnBoard(Board board) {
*
* @return the endpoint location
*/
-@Override
+ @Override
public Location getEndpointLocation() {
return rookMove.getStartpointLocation();
}
@@ -135,7 +128,7 @@ public Location getEndpointLocation() {
*
* @return the startpoint location
*/
-@Override
+ @Override
public Location getStartpointLocation() {
return kingMove.getStartpointLocation();
}
diff --git a/src/main/java/com/amirhn/Moves/EnPassant.java b/src/main/java/com/amirhn/Moves/EnPassant.java
index 9ebf1d3..2eac04b 100644
--- a/src/main/java/com/amirhn/Moves/EnPassant.java
+++ b/src/main/java/com/amirhn/Moves/EnPassant.java
@@ -5,23 +5,17 @@
import com.amirhn.Game.Location;
import com.amirhn.Pieces.Pawn;
-/**
- * The type En passant.
- */
+/** The type En passant. */
public class EnPassant extends Capture {
- /**
- * The Second source.
- */
-public Location secondSource;
- /**
- * The Second destination.
- */
-public Location secondDestination;
- /**
- * The Push pawn move.
- */
-public Walk pushPawnMove;
+ /** The Second source. */
+ public Location secondSource;
+
+ /** The Second destination. */
+ public Location secondDestination;
+
+ /** The Push pawn move. */
+ public Walk pushPawnMove;
/**
* Instantiates a new En passant.
@@ -29,7 +23,7 @@ public class EnPassant extends Capture {
* @param pawn the pawn
* @param capturePawn the capture pawn
*/
-public EnPassant(Pawn pawn, Pawn capturePawn) {
+ public EnPassant(Pawn pawn, Pawn capturePawn) {
super(pawn, capturePawn);
this.secondSource = capturePawn.getLocation();
this.secondDestination = capturePawn.getLocation().byOffset(-1 * capturePawn.direction, 0);
@@ -41,7 +35,7 @@ public EnPassant(Pawn pawn, Pawn capturePawn) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean applyOnBoard(Board board) {
if (!isValidApplyOnBoard(board)) return false;
super.applyOnBoard(board);
@@ -54,7 +48,7 @@ public boolean applyOnBoard(Board board) {
*
* @param board the board
*/
-@Override
+ @Override
public void undoOnBoard(Board board) {
pushPawnMove.undoOnBoard(board);
super.undoOnBoard(board);
@@ -66,7 +60,7 @@ public void undoOnBoard(Board board) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean isValidApplyOnBoard(Board board) {
return super.isValidApplyOnBoard(board)
&& source.row == destination.row
@@ -81,7 +75,7 @@ public boolean isValidApplyOnBoard(Board board) {
* @param chess the chess
* @return the boolean
*/
-@Override
+ @Override
public boolean isAllowed(Chess chess) {
if (chess.moves.isEmpty()) return false;
Move lastMove = chess.moves.getLast();
@@ -95,7 +89,7 @@ public boolean isAllowed(Chess chess) {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return "" + piece.type.letter + source + "x" + secondDestination + " " + "e.p.";
}
@@ -105,7 +99,7 @@ public String toString() {
*
* @return the endpoint location
*/
-@Override
+ @Override
public Location getEndpointLocation() {
return secondDestination;
}
diff --git a/src/main/java/com/amirhn/Moves/LongCastling.java b/src/main/java/com/amirhn/Moves/LongCastling.java
index 1f5059a..f85e7d2 100644
--- a/src/main/java/com/amirhn/Moves/LongCastling.java
+++ b/src/main/java/com/amirhn/Moves/LongCastling.java
@@ -4,9 +4,7 @@
import com.amirhn.Pieces.King;
import com.amirhn.Pieces.Rook;
-/**
- * The type Long castling.
- */
+/** The type Long castling. */
public class LongCastling extends Castling {
/**
@@ -15,7 +13,7 @@ public class LongCastling extends Castling {
* @param king the king
* @param rook the rook
*/
-public LongCastling(King king, Rook rook) {
+ public LongCastling(King king, Rook rook) {
super(
new Walk(king, Location.valueOf(king.getLocation().row, 2)),
new Walk(rook, Location.valueOf(rook.getLocation().row, 3)));
@@ -26,7 +24,7 @@ public LongCastling(King king, Rook rook) {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return "O-O-O";
}
diff --git a/src/main/java/com/amirhn/Moves/Move.java b/src/main/java/com/amirhn/Moves/Move.java
index b95053d..4e27773 100644
--- a/src/main/java/com/amirhn/Moves/Move.java
+++ b/src/main/java/com/amirhn/Moves/Move.java
@@ -5,18 +5,13 @@
import com.amirhn.Game.Location;
import com.amirhn.Pieces.Piece;
-/**
- * The type Move.
- */
+/** The type Move. */
public abstract class Move {
- /**
- * The Type.
- */
-public final MoveType type;
- /**
- * The Piece.
- */
-public Piece piece;
+ /** The Type. */
+ public final MoveType type;
+
+ /** The Piece. */
+ public Piece piece;
/**
* Instantiates a new Move.
@@ -24,7 +19,7 @@ public abstract class Move {
* @param type the type
* @param piece the piece
*/
-public Move(MoveType type, Piece piece) {
+ public Move(MoveType type, Piece piece) {
this.type = type;
this.piece = piece;
}
@@ -35,7 +30,7 @@ public Move(MoveType type, Piece piece) {
* @param chess the chess
* @return the boolean
*/
-public boolean isAllowed(Chess chess) {
+ public boolean isAllowed(Chess chess) {
Board board = chess.getBoard();
if (!piece.isAllowedToMove(chess)) return false;
if (!applyOnBoard(board)) return false;
@@ -50,14 +45,14 @@ public boolean isAllowed(Chess chess) {
* @param board the board
* @return the boolean
*/
-public abstract boolean applyOnBoard(Board board);
+ public abstract boolean applyOnBoard(Board board);
/**
* Undo on board.
*
* @param board the board
*/
-protected abstract void undoOnBoard(Board board);
+ protected abstract void undoOnBoard(Board board);
/**
* Is valid apply on board boolean.
@@ -65,7 +60,7 @@ public boolean isAllowed(Chess chess) {
* @param board the board
* @return the boolean
*/
-public boolean isValidApplyOnBoard(Board board) {
+ public boolean isValidApplyOnBoard(Board board) {
return board.isValidPiece(piece);
}
@@ -74,12 +69,12 @@ public boolean isValidApplyOnBoard(Board board) {
*
* @return the startpoint location
*/
-public abstract Location getStartpointLocation();
+ public abstract Location getStartpointLocation();
/**
* Gets endpoint location.
*
* @return the endpoint location
*/
-public abstract Location getEndpointLocation();
+ public abstract Location getEndpointLocation();
}
diff --git a/src/main/java/com/amirhn/Moves/MoveType.java b/src/main/java/com/amirhn/Moves/MoveType.java
index bb4bb71..2cb4763 100644
--- a/src/main/java/com/amirhn/Moves/MoveType.java
+++ b/src/main/java/com/amirhn/Moves/MoveType.java
@@ -1,23 +1,13 @@
package com.amirhn.Moves;
-/**
- * The enum Move type.
- */
+/** The enum Move type. */
public enum MoveType {
- /**
- *Walk move type.
- */
-WALK,
- /**
- *Capture move type.
- */
-CAPTURE,
- /**
- *Castling move type.
- */
-CASTLING,
- /**
- *Promotion move type.
- */
-PROMOTION
+ /** Walk move type. */
+ WALK,
+ /** Capture move type. */
+ CAPTURE,
+ /** Castling move type. */
+ CASTLING,
+ /** Promotion move type. */
+ PROMOTION
}
diff --git a/src/main/java/com/amirhn/Moves/PawnPromotion.java b/src/main/java/com/amirhn/Moves/PawnPromotion.java
index 73a37be..d401449 100644
--- a/src/main/java/com/amirhn/Moves/PawnPromotion.java
+++ b/src/main/java/com/amirhn/Moves/PawnPromotion.java
@@ -5,9 +5,7 @@
import com.amirhn.Game.Color;
import com.amirhn.Pieces.PieceType;
-/**
- * The type Pawn promotion.
- */
+/** The type Pawn promotion. */
public class PawnPromotion extends Promotion {
/**
@@ -16,7 +14,7 @@ public class PawnPromotion extends Promotion {
* @param move the move
* @param promotedPieceType the promoted piece type
*/
-public PawnPromotion(Move move, PieceType promotedPieceType) {
+ public PawnPromotion(Move move, PieceType promotedPieceType) {
super(move, promotedPieceType);
}
@@ -26,7 +24,7 @@ public PawnPromotion(Move move, PieceType promotedPieceType) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean isValidApplyOnBoard(Board board) {
return piece.type == PieceType.PAWN && super.isValidApplyOnBoard(board);
}
@@ -37,7 +35,7 @@ public boolean isValidApplyOnBoard(Board board) {
* @param chess the chess
* @return the boolean
*/
-@Override
+ @Override
public boolean isAllowed(Chess chess) {
boolean isLastRank = false;
if (piece.color == Color.WHITE)
diff --git a/src/main/java/com/amirhn/Moves/Promotion.java b/src/main/java/com/amirhn/Moves/Promotion.java
index 9985cb1..063e385 100644
--- a/src/main/java/com/amirhn/Moves/Promotion.java
+++ b/src/main/java/com/amirhn/Moves/Promotion.java
@@ -5,18 +5,13 @@
import com.amirhn.Pieces.Piece;
import com.amirhn.Pieces.PieceType;
-/**
- * The type Promotion.
- */
+/** The type Promotion. */
public abstract class Promotion extends Move {
- /**
- * The Move.
- */
-public Move move;
- /**
- * The Promoted piece.
- */
-public Piece promotedPiece;
+ /** The Move. */
+ public Move move;
+
+ /** The Promoted piece. */
+ public Piece promotedPiece;
/**
* Instantiates a new Promotion.
@@ -24,7 +19,7 @@ public abstract class Promotion extends Move {
* @param move the move
* @param promotedPieceType the promoted piece type
*/
-public Promotion(Move move, PieceType promotedPieceType) {
+ public Promotion(Move move, PieceType promotedPieceType) {
super(MoveType.PROMOTION, move.piece);
this.move = move;
this.promotedPiece = Piece.generate(promotedPieceType, move.piece.color, null);
@@ -36,7 +31,7 @@ public Promotion(Move move, PieceType promotedPieceType) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean applyOnBoard(Board board) {
if (!isValidApplyOnBoard(board)) return false;
move.applyOnBoard(board);
@@ -50,7 +45,7 @@ public boolean applyOnBoard(Board board) {
*
* @param board the board
*/
-@Override
+ @Override
public void undoOnBoard(Board board) {
board.removePiece(promotedPiece);
promotedPiece.removeLocation();
@@ -63,7 +58,7 @@ public void undoOnBoard(Board board) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean isValidApplyOnBoard(Board board) {
return super.isValidApplyOnBoard(board) && move.isValidApplyOnBoard(board);
}
@@ -73,7 +68,7 @@ public boolean isValidApplyOnBoard(Board board) {
*
* @return the endpoint location
*/
-@Override
+ @Override
public Location getEndpointLocation() {
return move.getEndpointLocation();
}
@@ -83,7 +78,7 @@ public Location getEndpointLocation() {
*
* @return the startpoint location
*/
-@Override
+ @Override
public Location getStartpointLocation() {
return move.getStartpointLocation();
}
@@ -93,7 +88,7 @@ public Location getStartpointLocation() {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return move.toString() + "=" + promotedPiece.type.letter;
}
diff --git a/src/main/java/com/amirhn/Moves/ShortCastling.java b/src/main/java/com/amirhn/Moves/ShortCastling.java
index 561970c..92b05a0 100644
--- a/src/main/java/com/amirhn/Moves/ShortCastling.java
+++ b/src/main/java/com/amirhn/Moves/ShortCastling.java
@@ -4,9 +4,7 @@
import com.amirhn.Pieces.King;
import com.amirhn.Pieces.Rook;
-/**
- * The type Short castling.
- */
+/** The type Short castling. */
public class ShortCastling extends Castling {
/**
@@ -15,7 +13,7 @@ public class ShortCastling extends Castling {
* @param king the king
* @param rook the rook
*/
-public ShortCastling(King king, Rook rook) {
+ public ShortCastling(King king, Rook rook) {
super(
new Walk(king, Location.valueOf(king.getLocation().row, 6)),
new Walk(rook, Location.valueOf(rook.getLocation().row, 5)));
@@ -26,7 +24,7 @@ public ShortCastling(King king, Rook rook) {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return "O-O";
}
diff --git a/src/main/java/com/amirhn/Moves/Walk.java b/src/main/java/com/amirhn/Moves/Walk.java
index 4540435..9b99fde 100644
--- a/src/main/java/com/amirhn/Moves/Walk.java
+++ b/src/main/java/com/amirhn/Moves/Walk.java
@@ -4,18 +4,13 @@
import com.amirhn.Game.Location;
import com.amirhn.Pieces.Piece;
-/**
- * The type Walk.
- */
+/** The type Walk. */
public class Walk extends Move {
- /**
- * The Source.
- */
-public Location source;
- /**
- * The Destination.
- */
-public Location destination;
+ /** The Source. */
+ public Location source;
+
+ /** The Destination. */
+ public Location destination;
/**
* Instantiates a new Walk.
@@ -23,7 +18,7 @@ public class Walk extends Move {
* @param sourcePiece the source piece
* @param destination the destination
*/
-public Walk(Piece sourcePiece, Location destination) {
+ public Walk(Piece sourcePiece, Location destination) {
super(MoveType.WALK, sourcePiece);
this.source = sourcePiece.getLocation();
this.destination = destination;
@@ -35,7 +30,7 @@ public Walk(Piece sourcePiece, Location destination) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean applyOnBoard(Board board) {
if (!this.isValidApplyOnBoard(board)) return false;
board.removePiece(this.piece);
@@ -49,7 +44,7 @@ public boolean applyOnBoard(Board board) {
*
* @param board the board
*/
-@Override
+ @Override
public void undoOnBoard(Board board) {
board.removePiece(this.piece);
this.piece.setLocationBack(this.source);
@@ -62,7 +57,7 @@ public void undoOnBoard(Board board) {
* @param board the board
* @return the boolean
*/
-@Override
+ @Override
public boolean isValidApplyOnBoard(Board board) {
return super.isValidApplyOnBoard(board)
&& board.isValidLocation(this.destination)
@@ -74,7 +69,7 @@ public boolean isValidApplyOnBoard(Board board) {
*
* @return the startpoint location
*/
-@Override
+ @Override
public Location getStartpointLocation() {
return source;
}
@@ -84,7 +79,7 @@ public Location getStartpointLocation() {
*
* @return the endpoint location
*/
-@Override
+ @Override
public Location getEndpointLocation() {
return destination;
}
@@ -94,7 +89,7 @@ public Location getEndpointLocation() {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return "" + this.piece.type.letter + this.source + "-" + this.destination;
}
diff --git a/src/main/java/com/amirhn/Pieces/Bishop.java b/src/main/java/com/amirhn/Pieces/Bishop.java
index 44a7a1e..3307e65 100644
--- a/src/main/java/com/amirhn/Pieces/Bishop.java
+++ b/src/main/java/com/amirhn/Pieces/Bishop.java
@@ -6,9 +6,7 @@
import java.util.ArrayList;
import java.util.List;
-/**
- * The type Bishop.
- */
+/** The type Bishop. */
public class Bishop extends Piece {
/**
@@ -17,7 +15,7 @@ public class Bishop extends Piece {
* @param color the color
* @param location the location
*/
-public Bishop(Color color, Location location) {
+ public Bishop(Color color, Location location) {
super(PieceType.BISHOP, color, location);
}
@@ -27,7 +25,7 @@ public Bishop(Color color, Location location) {
* @param board the board
* @return the threatened locations
*/
-@Override
+ @Override
public List getThreatenedLocations(Board board) {
List threatenedLocations = new ArrayList<>();
int[] dx = {+1, +1, -1, -1};
diff --git a/src/main/java/com/amirhn/Pieces/King.java b/src/main/java/com/amirhn/Pieces/King.java
index 172d6fa..314297a 100644
--- a/src/main/java/com/amirhn/Pieces/King.java
+++ b/src/main/java/com/amirhn/Pieces/King.java
@@ -8,9 +8,7 @@
import java.util.ArrayList;
import java.util.List;
-/**
- * The type King.
- */
+/** The type King. */
public class King extends Piece {
/**
@@ -19,7 +17,7 @@ public class King extends Piece {
* @param color the color
* @param location the location
*/
-public King(Color color, Location location) {
+ public King(Color color, Location location) {
super(PieceType.KING, color, location);
}
@@ -29,7 +27,7 @@ public King(Color color, Location location) {
* @param piece the piece
* @return the boolean
*/
-@Override
+ @Override
public boolean canBeCapturedBy(Piece piece) {
return false;
}
@@ -40,7 +38,7 @@ public boolean canBeCapturedBy(Piece piece) {
* @param board the board
* @return the threatened locations
*/
-@Override
+ @Override
public List getThreatenedLocations(Board board) {
List threatenedLocations = new ArrayList<>();
int[] dx = {+1, +1, +1, -1, -1, -1, 0, 0};
@@ -59,7 +57,7 @@ public List getThreatenedLocations(Board board) {
* @param board the board
* @return the natural moves
*/
-@Override
+ @Override
public List getNaturalMoves(Board board) {
List moves = super.getNaturalMoves(board);
int[] dy = {+1, -1};
diff --git a/src/main/java/com/amirhn/Pieces/Knight.java b/src/main/java/com/amirhn/Pieces/Knight.java
index 8037ba9..f6fd4ef 100644
--- a/src/main/java/com/amirhn/Pieces/Knight.java
+++ b/src/main/java/com/amirhn/Pieces/Knight.java
@@ -6,9 +6,7 @@
import java.util.ArrayList;
import java.util.List;
-/**
- * The type Knight.
- */
+/** The type Knight. */
public class Knight extends Piece {
/**
@@ -17,7 +15,7 @@ public class Knight extends Piece {
* @param color the color
* @param location the location
*/
-public Knight(Color color, Location location) {
+ public Knight(Color color, Location location) {
super(PieceType.KNIGHT, color, location);
}
@@ -27,7 +25,7 @@ public Knight(Color color, Location location) {
* @param board the board
* @return the threatened locations
*/
-@Override
+ @Override
public List getThreatenedLocations(Board board) {
List threatenedLocations = new ArrayList<>();
int[] dx = {+1, +1, -1, -1, +2, +2, -2, -2};
diff --git a/src/main/java/com/amirhn/Pieces/Pawn.java b/src/main/java/com/amirhn/Pieces/Pawn.java
index bb1c812..7c579e7 100644
--- a/src/main/java/com/amirhn/Pieces/Pawn.java
+++ b/src/main/java/com/amirhn/Pieces/Pawn.java
@@ -8,15 +8,11 @@
import java.util.Collections;
import java.util.List;
-/**
- * The type Pawn.
- */
+/** The type Pawn. */
public class Pawn extends Piece {
- /**
- * The Direction.
- */
-public final int direction;
+ /** The Direction. */
+ public final int direction;
/**
* Instantiates a new Pawn.
@@ -24,7 +20,7 @@ public class Pawn extends Piece {
* @param color the color
* @param location the location
*/
-public Pawn(Color color, Location location) {
+ public Pawn(Color color, Location location) {
super(PieceType.PAWN, color, location);
direction = color.direction;
}
@@ -57,7 +53,7 @@ private List makeMoves(Board board, Location location) {
* @param board the board
* @return the natural moves
*/
-@Override
+ @Override
public List getNaturalMoves(Board board) {
List moves = new ArrayList<>();
for (Location location : this.getThreatenedLocations(board)) {
@@ -86,7 +82,7 @@ public List getNaturalMoves(Board board) {
* @param board the board
* @return the threatened locations
*/
-@Override
+ @Override
public List getThreatenedLocations(Board board) {
List threatenedLocations = new ArrayList<>();
int[] dx = {direction, direction};
diff --git a/src/main/java/com/amirhn/Pieces/Piece.java b/src/main/java/com/amirhn/Pieces/Piece.java
index 7c0fbbd..376564f 100644
--- a/src/main/java/com/amirhn/Pieces/Piece.java
+++ b/src/main/java/com/amirhn/Pieces/Piece.java
@@ -12,27 +12,20 @@
import java.util.Objects;
import java.util.stream.Collectors;
-/**
- * The type Piece.
- */
+/** The type Piece. */
public abstract class Piece {
- /**
- * The Type.
- */
-public final PieceType type;
- /**
- * The Color.
- */
-public final Color color;
- /**
- * The Location.
- */
-protected Location location;
- /**
- * The Moves.
- */
-protected int moves = 0;
+ /** The Type. */
+ public final PieceType type;
+
+ /** The Color. */
+ public final Color color;
+
+ /** The Location. */
+ protected Location location;
+
+ /** The Moves. */
+ protected int moves = 0;
/**
* Instantiates a new Piece.
@@ -41,7 +34,7 @@ public abstract class Piece {
* @param color the color
* @param location the location
*/
-public Piece(PieceType type, Color color, Location location) {
+ public Piece(PieceType type, Color color, Location location) {
this.type = type;
this.color = color;
this.location = location;
@@ -55,7 +48,7 @@ public Piece(PieceType type, Color color, Location location) {
* @param location the location
* @return the piece
*/
-public static Piece generate(PieceType pieceType, Color color, Location location) {
+ public static Piece generate(PieceType pieceType, Color color, Location location) {
return switch (pieceType) {
case KING -> new King(color, location);
case PAWN -> new Pawn(color, location);
@@ -73,7 +66,7 @@ public static Piece generate(PieceType pieceType, Color color, Location location
* @param location the location
* @return the piece
*/
-public static Piece generate(char fen, Location location) {
+ public static Piece generate(char fen, Location location) {
return generate(
Objects.requireNonNull(PieceType.valueOf(fen)), Color.valueOfPieceChar(fen), location);
}
@@ -83,7 +76,7 @@ public static Piece generate(char fen, Location location) {
*
* @return the location
*/
-public Location getLocation() {
+ public Location getLocation() {
return location;
}
@@ -92,7 +85,7 @@ public Location getLocation() {
*
* @param location the location
*/
-public void setLocation(Location location) {
+ public void setLocation(Location location) {
if (this.location != null) moves++;
this.location = location;
}
@@ -102,15 +95,13 @@ public void setLocation(Location location) {
*
* @param location the location
*/
-public void setLocationBack(Location location) {
+ public void setLocationBack(Location location) {
if (this.location != null) moves--;
this.location = location;
}
- /**
- * Remove location.
- */
-public void removeLocation() {
+ /** Remove location. */
+ public void removeLocation() {
this.location = null;
}
@@ -119,7 +110,7 @@ public void removeLocation() {
*
* @return the boolean
*/
-public boolean hasMoved() {
+ public boolean hasMoved() {
return moves > 0;
}
@@ -129,7 +120,7 @@ public boolean hasMoved() {
* @param o the o
* @return the boolean
*/
-@Override
+ @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
@@ -142,7 +133,7 @@ public boolean equals(Object o) {
*
* @return the int
*/
-@Override
+ @Override
public int hashCode() {
return Objects.hash(type, color, location);
}
@@ -152,7 +143,7 @@ public int hashCode() {
*
* @return the string
*/
-@Override
+ @Override
public String toString() {
return this.type + "{" + "color=" + color + ", location=" + location + '}';
}
@@ -163,7 +154,7 @@ public String toString() {
* @param chess the chess
* @return the boolean
*/
-public boolean isAllowedToMove(Chess chess) {
+ public boolean isAllowedToMove(Chess chess) {
return chess.turn.equals(this.color);
}
@@ -173,7 +164,7 @@ public boolean isAllowedToMove(Chess chess) {
* @param chess the chess
* @return the allowed moves
*/
-public List getAllowedMoves(Chess chess) {
+ public List getAllowedMoves(Chess chess) {
return this.getNaturalMoves(chess.getBoard()).stream()
.filter(move -> move.isAllowed(chess))
.collect(Collectors.toList());
@@ -185,7 +176,7 @@ public List getAllowedMoves(Chess chess) {
* @param piece the piece
* @return the boolean
*/
-public boolean canBeCapturedBy(Piece piece) {
+ public boolean canBeCapturedBy(Piece piece) {
if (piece == null) return false;
if (type == PieceType.KING) return false;
return this.color != piece.color;
@@ -196,7 +187,7 @@ public boolean canBeCapturedBy(Piece piece) {
*
* @return the symbol
*/
-public char getSymbol() {
+ public char getSymbol() {
return this.type.getSymbol(this.color);
}
@@ -206,7 +197,7 @@ public char getSymbol() {
* @param board the board
* @return the threatened locations
*/
-public abstract List getThreatenedLocations(Board board);
+ public abstract List getThreatenedLocations(Board board);
/**
* Gets natural moves.
@@ -214,7 +205,7 @@ public char getSymbol() {
* @param board the board
* @return the natural moves
*/
-public List getNaturalMoves(Board board) {
+ public List getNaturalMoves(Board board) {
List moves = new ArrayList<>();
for (Location location : this.getThreatenedLocations(board)) {
if (board.isOccupied(location)) {
@@ -230,7 +221,7 @@ public List getNaturalMoves(Board board) {
*
* @return the piece
*/
-public Piece copy() {
+ public Piece copy() {
return generate(this.type, this.color, this.location);
}
}
diff --git a/src/main/java/com/amirhn/Pieces/PieceType.java b/src/main/java/com/amirhn/Pieces/PieceType.java
index 584a7ea..e97454c 100644
--- a/src/main/java/com/amirhn/Pieces/PieceType.java
+++ b/src/main/java/com/amirhn/Pieces/PieceType.java
@@ -2,43 +2,26 @@
import com.amirhn.Game.Color;
-/**
- * The enum Piece type.
- */
+/** The enum Piece type. */
public enum PieceType {
- /**
- *King piece type.
- */
-KING('K', "♔♚"),
- /**
- *Queen piece type.
- */
-QUEEN('Q', "♕♛"),
- /**
- *Knight piece type.
- */
-KNIGHT('N', "♘♞"),
- /**
- *Rook piece type.
- */
-ROOK('R', "♖♜"),
- /**
- *Bishop piece type.
- */
-BISHOP('B', "♗♝"),
- /**
- *Pawn piece type.
- */
-PAWN('P', "♙♟");
+ /** King piece type. */
+ KING('K', "♔♚"),
+ /** Queen piece type. */
+ QUEEN('Q', "♕♛"),
+ /** Knight piece type. */
+ KNIGHT('N', "♘♞"),
+ /** Rook piece type. */
+ ROOK('R', "♖♜"),
+ /** Bishop piece type. */
+ BISHOP('B', "♗♝"),
+ /** Pawn piece type. */
+ PAWN('P', "♙♟");
- /**
- * The Letter.
- */
-public final char letter;
- /**
- * The Symbols.
- */
-public final String symbols;
+ /** The Letter. */
+ public final char letter;
+
+ /** The Symbols. */
+ public final String symbols;
PieceType(char letter, String symbols) {
this.letter = letter;
@@ -51,7 +34,7 @@ public enum PieceType {
* @param letter the letter
* @return the piece type
*/
-public static PieceType valueOf(char letter) {
+ public static PieceType valueOf(char letter) {
for (PieceType pieceType : PieceType.values()) {
if (pieceType.letter == Character.toUpperCase(letter)) return pieceType;
}
@@ -64,7 +47,7 @@ public static PieceType valueOf(char letter) {
* @param color the color
* @return the symbol
*/
-public char getSymbol(Color color) {
+ public char getSymbol(Color color) {
if (color == Color.WHITE) return this.symbols.charAt(0);
if (color == Color.BLACK) return this.symbols.charAt(1);
return '?';
diff --git a/src/main/java/com/amirhn/Pieces/Queen.java b/src/main/java/com/amirhn/Pieces/Queen.java
index 15c8898..f7bfb6a 100644
--- a/src/main/java/com/amirhn/Pieces/Queen.java
+++ b/src/main/java/com/amirhn/Pieces/Queen.java
@@ -6,9 +6,7 @@
import java.util.List;
import java.util.stream.Stream;
-/**
- * The type Queen.
- */
+/** The type Queen. */
public class Queen extends Piece {
private final Rook rook;
@@ -20,7 +18,7 @@ public class Queen extends Piece {
* @param color the color
* @param location the location
*/
-public Queen(Color color, Location location) {
+ public Queen(Color color, Location location) {
super(PieceType.QUEEN, color, location);
this.rook = new Rook(color, location);
this.bishop = new Bishop(color, location);
@@ -31,7 +29,7 @@ public Queen(Color color, Location location) {
*
* @param location the location
*/
-@Override
+ @Override
public void setLocation(Location location) {
super.setLocation(location);
this.rook.setLocation(location);
@@ -43,17 +41,15 @@ public void setLocation(Location location) {
*
* @param location the location
*/
-@Override
+ @Override
public void setLocationBack(Location location) {
super.setLocationBack(location);
this.rook.setLocationBack(location);
this.bishop.setLocationBack(location);
}
- /**
- * Remove location.
- */
-@Override
+ /** Remove location. */
+ @Override
public void removeLocation() {
super.removeLocation();
}
@@ -64,7 +60,7 @@ public void removeLocation() {
* @param board the board
* @return the threatened locations
*/
-@Override
+ @Override
public List getThreatenedLocations(Board board) {
List rookThreatenedLocation = this.rook.getThreatenedLocations(board);
List bishopThreatenedLocation = this.bishop.getThreatenedLocations(board);
diff --git a/src/main/java/com/amirhn/Pieces/Rook.java b/src/main/java/com/amirhn/Pieces/Rook.java
index d0fcf66..c599466 100644
--- a/src/main/java/com/amirhn/Pieces/Rook.java
+++ b/src/main/java/com/amirhn/Pieces/Rook.java
@@ -6,9 +6,7 @@
import java.util.ArrayList;
import java.util.List;
-/**
- * The type Rook.
- */
+/** The type Rook. */
public class Rook extends Piece {
/**
@@ -17,7 +15,7 @@ public class Rook extends Piece {
* @param color the color
* @param location the location
*/
-public Rook(Color color, Location location) {
+ public Rook(Color color, Location location) {
super(PieceType.ROOK, color, location);
}
@@ -27,7 +25,7 @@ public Rook(Color color, Location location) {
* @param board the board
* @return the threatened locations
*/
-@Override
+ @Override
public List getThreatenedLocations(Board board) {
List threatenedLocations = new ArrayList<>();
int[] dx = {+1, -1, 0, 0};
diff --git a/src/main/java/com/amirhn/Players/Player.java b/src/main/java/com/amirhn/Players/Player.java
index 51f1d60..ad3fbe4 100644
--- a/src/main/java/com/amirhn/Players/Player.java
+++ b/src/main/java/com/amirhn/Players/Player.java
@@ -13,31 +13,25 @@
import java.util.List;
import java.util.stream.Collectors;
-/**
- * The type Player.
- */
+/** The type Player. */
public class Player {
private final Color color;
- /**
- * The Captured pieces.
- */
-public List capturedPieces = new ArrayList<>();
- /**
- * The Had long castling.
- */
-public boolean hadLongCastling = false;
- /**
- * The Had short castling.
- */
-public boolean hadShortCastling = false;
+ /** The Captured pieces. */
+ public List capturedPieces = new ArrayList<>();
+
+ /** The Had long castling. */
+ public boolean hadLongCastling = false;
+
+ /** The Had short castling. */
+ public boolean hadShortCastling = false;
/**
* Instantiates a new Player.
*
* @param color the color
*/
-public Player(Color color) {
+ public Player(Color color) {
this.color = color;
}
@@ -46,7 +40,7 @@ public Player(Color color) {
*
* @return the color
*/
-public Color getColor() {
+ public Color getColor() {
return color;
}
@@ -56,7 +50,7 @@ public Color getColor() {
* @param board the board
* @return the active pieces
*/
-public List getActivePieces(Board board) {
+ public List getActivePieces(Board board) {
return board.getAllPieces().stream()
.filter(piece -> piece.color.equals(color))
.collect(Collectors.toList());
@@ -68,7 +62,7 @@ public List getActivePieces(Board board) {
* @param board the board
* @return the natural moves
*/
-public List getNaturalMoves(Board board) {
+ public List getNaturalMoves(Board board) {
List moves = new ArrayList<>();
for (Piece piece : this.getActivePieces(board)) moves.addAll(piece.getNaturalMoves(board));
return moves;
@@ -80,7 +74,7 @@ public List getNaturalMoves(Board board) {
* @param chess the chess
* @return the allowed moves
*/
-public List getAllowedMoves(Chess chess) {
+ public List getAllowedMoves(Chess chess) {
return getNaturalMoves(chess.getBoard()).stream()
.filter(move -> move.isAllowed(chess))
.collect(Collectors.toList());
@@ -92,7 +86,7 @@ public List getAllowedMoves(Chess chess) {
* @param board the board
* @return the threatened locations
*/
-public List getThreatenedLocations(Board board) {
+ public List getThreatenedLocations(Board board) {
List threatenedLocations = new ArrayList<>();
for (Piece piece : getActivePieces(board))
threatenedLocations.addAll(piece.getThreatenedLocations(board));
@@ -106,7 +100,7 @@ public List getThreatenedLocations(Board board) {
* @param pieceType the piece type
* @return the pieces
*/
-public List getPieces(Board board, PieceType pieceType) {
+ public List getPieces(Board board, PieceType pieceType) {
List pieces = new ArrayList<>();
for (Piece piece : getActivePieces(board)) if (piece.type == pieceType) pieces.add(piece);
return pieces;
@@ -118,7 +112,7 @@ public List getPieces(Board board, PieceType pieceType) {
* @param board the board
* @return the king
*/
-public King getKing(Board board) {
+ public King getKing(Board board) {
return (King) getPieces(board, PieceType.KING).getFirst();
}
@@ -128,7 +122,7 @@ public King getKing(Board board) {
* @param board the board
* @return the rooks
*/
-public List getRooks(Board board) {
+ public List getRooks(Board board) {
return getPieces(board, PieceType.ROOK).stream().map(piece -> (Rook) piece).toList();
}
@@ -138,7 +132,7 @@ public List getRooks(Board board) {
* @param board the board
* @return the king side rook
*/
-public Rook getKingSideRook(Board board) {
+ public Rook getKingSideRook(Board board) {
return getRooks(board).stream()
.filter(rook -> rook.getLocation().column == 7)
.findFirst()
@@ -151,7 +145,7 @@ public Rook getKingSideRook(Board board) {
* @param board the board
* @return the queen side rook
*/
-public Rook getQueenSideRook(Board board) {
+ public Rook getQueenSideRook(Board board) {
return getRooks(board).stream()
.filter(rook -> rook.getLocation().column == 0)
.findFirst()
@@ -165,7 +159,7 @@ public Rook getQueenSideRook(Board board) {
* @param location the location
* @return the boolean
*/
-public boolean isThreatening(Board board, Location location) {
+ public boolean isThreatening(Board board, Location location) {
for (Location threat : getThreatenedLocations(board)) if (threat.equals(location)) return true;
return false;
}
diff --git a/src/test/java/com/amirhn/Game/BoardTest.java b/src/test/java/com/amirhn/Game/BoardTest.java
index d9b1d11..3348b49 100644
--- a/src/test/java/com/amirhn/Game/BoardTest.java
+++ b/src/test/java/com/amirhn/Game/BoardTest.java
@@ -5,8 +5,10 @@
import com.amirhn.Pieces.Piece;
import org.junit.jupiter.api.Test;
+/** The type Board test. */
class BoardTest {
+ /** From fen creates correct board. */
@Test
void fromFEN_createsCorrectBoard() {
String fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR";
@@ -16,24 +18,28 @@ void fromFEN_createsCorrectBoard() {
assertTrue(board.isOccupied(Location.valueOf(0, 0)));
}
+ /** Is valid location returns false for invalid location. */
@Test
void isValidLocation_returnsFalseForInvalidLocation() {
Board board = new Board(8, 8);
assertFalse(board.isValidLocation(Location.valueOf(9, 9)));
}
+ /** Is occupied returns false for empty location. */
@Test
void isOccupied_returnsFalseForEmptyLocation() {
Board board = new Board(8, 8);
assertFalse(board.isOccupied(Location.valueOf(0, 0)));
}
+ /** Gets piece returns null for empty location. */
@Test
void getPiece_returnsNullForEmptyLocation() {
Board board = new Board(8, 8);
assertNull(board.getPiece(Location.valueOf(0, 0)));
}
+ /** Sets piece sets piece correctly. */
@Test
void setPiece_setsPieceCorrectly() {
Board board = new Board(8, 8);
@@ -42,6 +48,7 @@ void setPiece_setsPieceCorrectly() {
assertEquals(piece, board.getPiece(Location.valueOf(0, 0)));
}
+ /** Remove piece removes piece correctly. */
@Test
void removePiece_removesPieceCorrectly() {
Board board = new Board(8, 8);
@@ -51,6 +58,7 @@ void removePiece_removesPieceCorrectly() {
assertNull(board.getPiece(Location.valueOf(0, 0)));
}
+ /** Copy creates exact copy. */
@Test
void copy_createsExactCopy() {
Board board = new Board(8, 8);
@@ -60,6 +68,7 @@ void copy_createsExactCopy() {
assertEquals(board, copy);
}
+ /** Equals returns true for identical boards. */
@Test
void equals_returnsTrueForIdenticalBoards() {
Board board1 = new Board(8, 8);
@@ -67,6 +76,7 @@ void equals_returnsTrueForIdenticalBoards() {
assertEquals(board1, board2);
}
+ /** Equals returns false for different boards. */
@Test
void equals_returnsFalseForDifferentBoards() {
Board board1 = new Board(8, 8);
diff --git a/src/test/java/com/amirhn/Moves/CaptureTest.java b/src/test/java/com/amirhn/Moves/CaptureTest.java
index ccb82f9..a645fc8 100644
--- a/src/test/java/com/amirhn/Moves/CaptureTest.java
+++ b/src/test/java/com/amirhn/Moves/CaptureTest.java
@@ -11,8 +11,10 @@
import com.amirhn.Pieces.Queen;
import org.junit.jupiter.api.Test;
+/** The type Capture test. */
class CaptureTest {
+ /** Apply on board. */
@Test
void applyOnBoard() {
Board board = new Board(8, 8);
@@ -26,6 +28,7 @@ void applyOnBoard() {
assertFalse(board.isValidPiece(capturePiece));
}
+ /** Undo on board. */
@Test
void undoOnBoard() {
Board board = new Board(8, 8);