From a430913fa503a784cc9f29a54357559d37d2c07b Mon Sep 17 00:00:00 2001 From: stiti Date: Thu, 2 May 2024 17:12:59 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'une=20seule=20et=20unique=20c?= =?UTF-8?q?lasse=20pour=20les=20menus=20principaux=20des=20deux=20programm?= =?UTF-8?q?es=20+=20Am=C3=A9lioration=20de=20la=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Button.html | 311 ++++++ doc/CongratulationsDialog.html | 219 ++++ doc/DialogManager.html | 141 +++ doc/GMCase.html | 315 ++++++ doc/GMCaseKeyListener.html | 237 +++++ doc/GMCaseMouseListener.html | 185 ++++ doc/GMChecker.html | 218 ++++ doc/GMGrid.html | 283 ++++++ doc/GMHowToCreateController.html | 191 ++++ doc/GMHowToCreateDialogManager.html | 185 ++++ doc/GMHowToCreateView.html | 214 ++++ doc/GMImport.html | 225 +++++ doc/GMResetGrid.html | 204 ++++ doc/GMRules.html | 191 ++++ doc/GMSaver.html | 183 ++++ doc/GMSaverActionListener.html | 181 ++++ doc/GMUserInterfaceController.html | 179 ++++ doc/GMUserInterfaceView.html | 153 +++ doc/GSCase.html | 449 +++++++++ doc/GSCaseMouseListener.html | 270 +++++ doc/GSGrid.html | 355 +++++++ doc/GSImport.html | 230 +++++ doc/GSMenu.html | 229 +++++ doc/GSMenuController.html | 195 ++++ doc/GSPlay.html | 266 +++++ doc/GSPlayController.html | 246 +++++ doc/GSSolver.html | 154 +++ doc/GSTest.html | 263 +++++ doc/GSWin.html | 190 ++++ doc/GridMaker.html | 170 ++++ doc/GridSolver.html | 170 ++++ doc/HomeButtonClickListener.html | 193 ++++ doc/HomeView.html | 306 ++++++ doc/MusicButton.html | 236 +++++ doc/MusicPlayer.html | 209 ++++ doc/RulesDialogManager.html | 184 ++++ doc/RulesSudoku.html | 214 ++++ doc/Title.html | 230 +++++ doc/Window.html | 283 ++++++ doc/allclasses-index.html | 213 ++++ doc/allpackages-index.html | 63 ++ doc/copy.svg | 33 + doc/element-list | 1 + doc/help-doc.html | 182 ++++ doc/index-all.html | 751 ++++++++++++++ doc/index.html | 26 + doc/legal/COPYRIGHT | 69 ++ doc/legal/LICENSE | 118 +++ doc/legal/jquery.md | 72 ++ doc/legal/jqueryUI.md | 49 + doc/link.svg | 31 + doc/member-search-index.js | 1 + doc/module-search-index.js | 1 + doc/overview-tree.html | 157 +++ doc/package-search-index.js | 1 + doc/package-summary.html | 237 +++++ doc/package-tree.html | 157 +++ doc/resources/glass.png | Bin 0 -> 499 bytes doc/resources/x.png | Bin 0 -> 394 bytes doc/script-dir/jquery-3.6.1.min.js | 2 + doc/script-dir/jquery-ui.min.css | 6 + doc/script-dir/jquery-ui.min.js | 6 + doc/script.js | 253 +++++ doc/search-page.js | 284 ++++++ doc/search.html | 71 ++ doc/search.js | 458 +++++++++ doc/serialized-form.html | 468 +++++++++ doc/stylesheet.css | 1272 ++++++++++++++++++++++++ doc/tag-search-index.js | 1 + doc/type-search-index.js | 1 + src/GMChecker.java | 6 +- src/GMHomeButtonClickListener.java | 46 - src/GSCase.java | 2 +- src/GSHomeButtonClickListener.java | 48 - src/GSHomeView.java | 103 -- src/GSImport.java | 26 +- src/GSMenu.java | 55 +- src/GSMenuController.java | 17 +- src/GSPlay.java | 48 +- src/GSPlayController.java | 4 + src/GSSolver.java | 22 +- src/GSTest.java | 6 +- src/GSWin.java | 8 +- src/GridMaker.java | 3 +- src/GridSolver.java | 3 +- src/HomeButtonClickListener.java | 53 + src/{GMHomeView.java => HomeView.java} | 56 +- src/MusicButton.java | 20 +- src/MusicPlayer.java | 6 + src/RulesSudoku.java | 14 +- src/Window.java | 10 +- 91 files changed, 14137 insertions(+), 260 deletions(-) create mode 100644 doc/Button.html create mode 100644 doc/CongratulationsDialog.html create mode 100644 doc/DialogManager.html create mode 100644 doc/GMCase.html create mode 100644 doc/GMCaseKeyListener.html create mode 100644 doc/GMCaseMouseListener.html create mode 100644 doc/GMChecker.html create mode 100644 doc/GMGrid.html create mode 100644 doc/GMHowToCreateController.html create mode 100644 doc/GMHowToCreateDialogManager.html create mode 100644 doc/GMHowToCreateView.html create mode 100644 doc/GMImport.html create mode 100644 doc/GMResetGrid.html create mode 100644 doc/GMRules.html create mode 100644 doc/GMSaver.html create mode 100644 doc/GMSaverActionListener.html create mode 100644 doc/GMUserInterfaceController.html create mode 100644 doc/GMUserInterfaceView.html create mode 100644 doc/GSCase.html create mode 100644 doc/GSCaseMouseListener.html create mode 100644 doc/GSGrid.html create mode 100644 doc/GSImport.html create mode 100644 doc/GSMenu.html create mode 100644 doc/GSMenuController.html create mode 100644 doc/GSPlay.html create mode 100644 doc/GSPlayController.html create mode 100644 doc/GSSolver.html create mode 100644 doc/GSTest.html create mode 100644 doc/GSWin.html create mode 100644 doc/GridMaker.html create mode 100644 doc/GridSolver.html create mode 100644 doc/HomeButtonClickListener.html create mode 100644 doc/HomeView.html create mode 100644 doc/MusicButton.html create mode 100644 doc/MusicPlayer.html create mode 100644 doc/RulesDialogManager.html create mode 100644 doc/RulesSudoku.html create mode 100644 doc/Title.html create mode 100644 doc/Window.html create mode 100644 doc/allclasses-index.html create mode 100644 doc/allpackages-index.html create mode 100644 doc/copy.svg create mode 100644 doc/element-list create mode 100644 doc/help-doc.html create mode 100644 doc/index-all.html create mode 100644 doc/index.html create mode 100644 doc/legal/COPYRIGHT create mode 100644 doc/legal/LICENSE create mode 100644 doc/legal/jquery.md create mode 100644 doc/legal/jqueryUI.md create mode 100644 doc/link.svg create mode 100644 doc/member-search-index.js create mode 100644 doc/module-search-index.js create mode 100644 doc/overview-tree.html create mode 100644 doc/package-search-index.js create mode 100644 doc/package-summary.html create mode 100644 doc/package-tree.html create mode 100644 doc/resources/glass.png create mode 100644 doc/resources/x.png create mode 100644 doc/script-dir/jquery-3.6.1.min.js create mode 100644 doc/script-dir/jquery-ui.min.css create mode 100644 doc/script-dir/jquery-ui.min.js create mode 100644 doc/script.js create mode 100644 doc/search-page.js create mode 100644 doc/search.html create mode 100644 doc/search.js create mode 100644 doc/serialized-form.html create mode 100644 doc/stylesheet.css create mode 100644 doc/tag-search-index.js create mode 100644 doc/type-search-index.js delete mode 100644 src/GMHomeButtonClickListener.java delete mode 100644 src/GSHomeButtonClickListener.java delete mode 100644 src/GSHomeView.java create mode 100644 src/HomeButtonClickListener.java rename src/{GMHomeView.java => HomeView.java} (72%) diff --git a/doc/Button.html b/doc/Button.html new file mode 100644 index 0000000..c518fa0 --- /dev/null +++ b/doc/Button.html @@ -0,0 +1,311 @@ + + + + +Button + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class Button

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible, SwingConstants
+
+
+
public class Button +extends JButton
+
Class containing custom settings for JButtons.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Button

      +
      public Button(String text)
      +
      Constructor
      +
      +
      Parameters:
      +
      text - The text of the button
      +
      +
      +
    • +
    • +
      +

      Button

      +
      public Button(String text, + Color color)
      +
      Constructor
      +
      +
      Parameters:
      +
      text - The text of the button
      +
      color - The background color of the button
      +
      +
      +
    • +
    • +
      +

      Button

      +
      public Button(String text, + Dimension dimension)
      +
      Constructor
      +
      +
      Parameters:
      +
      text - The text of the button
      +
      dimension - The dimension of the button
      +
      +
      +
    • +
    • +
      +

      Button

      +
      public Button(String text, + Dimension dimension, + Font font)
      +
      Constructor
      +
      +
      Parameters:
      +
      text - The text of the button
      +
      dimension - The dimension of the button
      +
      font - The font of the text in the button
      +
      +
      +
    • +
    • +
      +

      Button

      +
      public Button(String text, + Dimension dimension, + Font font, + Color color)
      +
      Constructor
      +
      +
      Parameters:
      +
      text - The text of the button
      +
      dimension - The dimension of the button
      +
      font - The font of the text in the button
      +
      color - The background color of the button
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/CongratulationsDialog.html b/doc/CongratulationsDialog.html new file mode 100644 index 0000000..4fe4794 --- /dev/null +++ b/doc/CongratulationsDialog.html @@ -0,0 +1,219 @@ + + + + +CongratulationsDialog + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class CongratulationsDialog

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible
+
+
+
public class CongratulationsDialog +extends JOptionPane
+
CongratulationsDialog permet de crée une boîte de dialogue de félicitations pour afficher le temps de résolution d'un Sudoku.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      CongratulationsDialog

      +
      public CongratulationsDialog(long solvingStartTime)
      +
      Constructeur de la classe CongratulationsDialog.
      +
      +
      Parameters:
      +
      solvingStartTime - Le temps de démarrage de la résolution du Sudoku en nanosecondes.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/DialogManager.html b/doc/DialogManager.html new file mode 100644 index 0000000..cd2b763 --- /dev/null +++ b/doc/DialogManager.html @@ -0,0 +1,141 @@ + + + + +DialogManager + + + + + + + + + + + + + + +
+ +
+
+ +
+

Interface DialogManager

+
+
+
+
All Known Implementing Classes:
+
GMHowToCreateDialogManager, GSWin, RulesDialogManager
+
+
+
public interface DialogManager
+
Interface containing definition to showDialog box.
+
+
+
    + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    + +
     
    +
    +
    +
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      showDialog

      +
      void showDialog()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMCase.html b/doc/GMCase.html new file mode 100644 index 0000000..57b7fa7 --- /dev/null +++ b/doc/GMCase.html @@ -0,0 +1,315 @@ + + + + +GMCase + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMCase

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible
+
+
+
public class GMCase +extends JPanel
+
GMCase représente une case dans une grille éditable. + Cette classe étend JPanel et utilise un GMCaseListener pour gérer les événements de touche.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      isActive

      +
      protected boolean isActive
      +
      Statut de la case
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMCase

      +
      public GMCase(GMGrid grille, + int row, + int col)
      +
      Constructeur par défaut de GMCase. + Initialise le bouton avec les propriétés nécessaires, crée un GMCaseListener et l'ajoute au bouton.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      updateDisplay

      +
      public void updateDisplay()
      +
      Met à jour l'affichage de la case avec la valeur actuelle.
      +
      +
    • +
    • +
      +

      setCellValue

      +
      public void setCellValue(int value)
      +
      Définit la valeur de la case et met à jour son affichage.
      +
      +
      Parameters:
      +
      value - La nouvelle valeur de la case.
      +
      +
      +
    • +
    • +
      +

      getCellValue

      +
      public int getCellValue()
      +
      Récupère la valeur actuelle de la case.
      +
      +
      Returns:
      +
      La valeur actuelle de la case.
      +
      +
      +
    • +
    • +
      +

      setActive

      +
      public void setActive(boolean active)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMCaseKeyListener.html b/doc/GMCaseKeyListener.html new file mode 100644 index 0000000..9f6a83d --- /dev/null +++ b/doc/GMCaseKeyListener.html @@ -0,0 +1,237 @@ + + + + +GMCaseKeyListener + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMCaseKeyListener

+
+
java.lang.Object +
GMCaseKeyListener
+
+
+
+
All Implemented Interfaces:
+
KeyListener, EventListener
+
+
+
public class GMCaseKeyListener +extends Object +implements KeyListener
+
GMCaseKeyListener est un KeyListener utilisé pour écouter les événements de touche dans GMCase.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMCaseKeyListener

      +
      public GMCaseKeyListener(GMCase gridMakerCase, + GMGrid grille, + int row, + int col)
      +
      Constructeur de GridMakerCaseListener.
      +
      +
      Parameters:
      +
      gridMakerCase - La case à écouter.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      keyPressed

      +
      public void keyPressed(KeyEvent e)
      +
      Méthode appelée lorsqu'une touche est enfoncée. + Si la touche est un chiffre, met à jour la valeur de la case avec ce chiffre.
      +
      +
      Specified by:
      +
      keyPressed in interface KeyListener
      +
      Parameters:
      +
      e - L'événement KeyEvent généré lorsque la touche est enfoncée.
      +
      +
      +
    • +
    • +
      +

      keyReleased

      +
      public void keyReleased(KeyEvent e)
      +
      Méthode appelée lorsqu'une touche est relâchée. + Aucun traitement n'est nécessaire dans ce cas.
      +
      +
      Specified by:
      +
      keyReleased in interface KeyListener
      +
      Parameters:
      +
      e - L'événement KeyEvent généré lorsque la touche est relâchée.
      +
      +
      +
    • +
    • +
      +

      keyTyped

      +
      public void keyTyped(KeyEvent e)
      +
      Méthode appelée lorsqu'une touche est tapée (enfoncée puis relâchée). + Aucun traitement n'est nécessaire dans ce cas.
      +
      +
      Specified by:
      +
      keyTyped in interface KeyListener
      +
      Parameters:
      +
      e - L'événement KeyEvent généré lorsque la touche est tapée.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMCaseMouseListener.html b/doc/GMCaseMouseListener.html new file mode 100644 index 0000000..e1e79c2 --- /dev/null +++ b/doc/GMCaseMouseListener.html @@ -0,0 +1,185 @@ + + + + +GMCaseMouseListener + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMCaseMouseListener

+
+ +
+
+
All Implemented Interfaces:
+
MouseListener, MouseMotionListener, MouseWheelListener, EventListener
+
+
+
public class GMCaseMouseListener +extends MouseAdapter
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMCaseMouseListener

      +
      public GMCaseMouseListener()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMChecker.html b/doc/GMChecker.html new file mode 100644 index 0000000..b09a604 --- /dev/null +++ b/doc/GMChecker.html @@ -0,0 +1,218 @@ + + + + +GMChecker + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMChecker

+
+
java.lang.Object +
GMChecker
+
+
+
+
public class GMChecker +extends Object
+
GMChecker est utilisée pour vérifier la cohérence de la grille. + Elle vérifie si les lignes, les colonnes et les régions de la grille respectent les règles du jeu.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Constructeur pour créer une instance de GMChecker.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    boolean
    + +
    +
    Vérifie si la grille est correcte.
    +
    +
    boolean
    + +
    +
    Vérifie si la grille est correcte et envoie un message.
    +
    +
    boolean
    + +
    +
    Vérifie si la grille est correcte.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMChecker

      +
      public GMChecker(GMGrid grid)
      +
      Constructeur pour créer une instance de GMChecker.
      +
      +
      Parameters:
      +
      grid - La grille à vérifier
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      checkGridMessage

      +
      public boolean checkGridMessage()
      +
      Vérifie si la grille est correcte et envoie un message.
      +
      +
      Returns:
      +
      true si la grille est correcte, false sinon
      +
      +
      +
    • +
    • +
      +

      checkGrid

      +
      public boolean checkGrid()
      +
      Vérifie si la grille est correcte.
      +
      +
      Returns:
      +
      true si la grille est correcte, false sinon
      +
      +
      +
    • +
    • +
      +

      isCorrect

      +
      public boolean isCorrect()
      +
      Vérifie si la grille est correcte.
      +
      +
      Returns:
      +
      true si la grille est correcte, false sinon
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMGrid.html b/doc/GMGrid.html new file mode 100644 index 0000000..48dd574 --- /dev/null +++ b/doc/GMGrid.html @@ -0,0 +1,283 @@ + + + + +GMGrid + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMGrid

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible
+
+
+
public class GMGrid +extends JPanel
+
A custom JPanel class representing a Sudoku grid.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMGrid

      +
      public GMGrid()
      +
      Constructs a new GMGrid object and initializes the grid.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      importGrid

      +
      public void importGrid(int[] values)
      +
      Imports values to populate the Sudoku grid.
      +
      +
      Parameters:
      +
      values - An array of integers representing the Sudoku grid values.
      +
      +
      +
    • +
    • +
      +

      exportGrid

      +
      public int[] exportGrid()
      +
      Exports the current Sudoku grid values.
      +
      +
      Returns:
      +
      An array of integers representing the current Sudoku grid values.
      +
      +
      +
    • +
    • +
      +

      getCellValueAt

      +
      public int getCellValueAt(int row, + int column)
      +
      Retrieves the value of a cell in the Sudoku grid.
      +
      +
      Parameters:
      +
      row - The row index of the cell.
      +
      column - The column index of the cell.
      +
      Returns:
      +
      The value of the cell at the specified row and column indices.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMHowToCreateController.html b/doc/GMHowToCreateController.html new file mode 100644 index 0000000..3d89877 --- /dev/null +++ b/doc/GMHowToCreateController.html @@ -0,0 +1,191 @@ + + + + +GMHowToCreateController + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMHowToCreateController

+
+
java.lang.Object +
GMHowToCreateController
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class GMHowToCreateController +extends Object +implements ActionListener
+
La classe GMHowToCreateController est un contrôleur qui gère l'affichage de la fenêtre de création de grille. + Elle implémente l'interface ActionListener pour réagir aux événements de clic sur un bouton.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMHowToCreateController

      +
      public GMHowToCreateController()
      +
      Constructeur pour créer une instance de GMHowToCreateController. + Initialise le gestionnaire de dialogue pour la création de grille.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      actionPerformed

      +
      public void actionPerformed(ActionEvent e)
      +
      Méthode invoquée lorsqu'un événement d'action est déclenché, comme un clic sur un bouton. + Affiche la fenêtre de dialogue pour expliquer comment créer une grille.
      +
      +
      Specified by:
      +
      actionPerformed in interface ActionListener
      +
      Parameters:
      +
      e - L'événement d'action
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMHowToCreateDialogManager.html b/doc/GMHowToCreateDialogManager.html new file mode 100644 index 0000000..006807b --- /dev/null +++ b/doc/GMHowToCreateDialogManager.html @@ -0,0 +1,185 @@ + + + + +GMHowToCreateDialogManager + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMHowToCreateDialogManager

+
+
java.lang.Object +
GMHowToCreateDialogManager
+
+
+
+
All Implemented Interfaces:
+
DialogManager
+
+
+
public class GMHowToCreateDialogManager +extends Object +implements DialogManager
+
La classe GMHowToCreateDialogManager est un gestionnaire de dialogue qui affiche des instructions + sur la manière de créer une grille dans une boîte de dialogue. + Elle implémente l'interface DialogManager.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMHowToCreateDialogManager

      +
      public GMHowToCreateDialogManager()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      showDialog

      +
      public void showDialog()
      +
      Méthode pour afficher la boîte de dialogue avec les instructions de création de grille.
      +
      +
      Specified by:
      +
      showDialog in interface DialogManager
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMHowToCreateView.html b/doc/GMHowToCreateView.html new file mode 100644 index 0000000..e70bdb5 --- /dev/null +++ b/doc/GMHowToCreateView.html @@ -0,0 +1,214 @@ + + + + +GMHowToCreateView + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMHowToCreateView

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible
+
+
+
public class GMHowToCreateView +extends JPanel
+
La classe GMHowToCreateView est une vue qui affiche les instructions pour créer une grille dans une boîte de dialogue. + Elle hérite de JPanel pour servir de composant d'interface utilisateur.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMHowToCreateView

      +
      public GMHowToCreateView()
      +
      Constructeur pour créer une instance de GMHowToCreateView. + Initialise les composants de la vue et les dispose selon un BorderLayout.
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMImport.html b/doc/GMImport.html new file mode 100644 index 0000000..a80e30c --- /dev/null +++ b/doc/GMImport.html @@ -0,0 +1,225 @@ + + + + +GMImport + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMImport

+
+
java.lang.Object +
GMImport
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class GMImport +extends Object +implements ActionListener
+
La classe GMImport est utilisée pour importer une grille à partir d'un fichier. + Elle implémente l'interface ActionListener pour réagir aux événements de clic sur un bouton.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    GMImport(JFrame frame, + GMGrid sudokuGrid)
    +
    +
    Constructeur pour créer une instance de GMImport.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    + +
    +
    Méthode invoquée lorsqu'un événement d'action est déclenché, comme un clic sur un bouton.
    +
    +
    void
    + +
    +
    Affiche une boîte de dialogue de sélection de fichier et importe la grille à partir du fichier sélectionné.
    +
    +
    boolean
    + +
    +
    Lit les données à partir du fichier sélectionné et les stocke dans un tableau.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMImport

      +
      public GMImport(JFrame frame, + GMGrid sudokuGrid)
      +
      Constructeur pour créer une instance de GMImport.
      +
      +
      Parameters:
      +
      frame - La fenêtre précédente
      +
      sudokuGrid - La grille Sudoku
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      actionPerformed

      +
      public void actionPerformed(ActionEvent e)
      +
      Méthode invoquée lorsqu'un événement d'action est déclenché, comme un clic sur un bouton. + Importe la grille à partir du fichier sélectionné.
      +
      +
      Specified by:
      +
      actionPerformed in interface ActionListener
      +
      Parameters:
      +
      e - L'événement d'action
      +
      +
      +
    • +
    • +
      +

      importGrid

      +
      public void importGrid()
      +
      Affiche une boîte de dialogue de sélection de fichier et importe la grille à partir du fichier sélectionné.
      +
      +
    • +
    • +
      +

      readFile

      +
      public boolean readFile()
      +
      Lit les données à partir du fichier sélectionné et les stocke dans un tableau.
      +
      +
      Returns:
      +
      true si la lecture est réussie, false sinon
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMResetGrid.html b/doc/GMResetGrid.html new file mode 100644 index 0000000..f4c6c79 --- /dev/null +++ b/doc/GMResetGrid.html @@ -0,0 +1,204 @@ + + + + +GMResetGrid + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMResetGrid

+
+
java.lang.Object +
GMResetGrid
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class GMResetGrid +extends Object +implements ActionListener
+
La classe GMResetGrid sert à crée une nouvelle grille de 0.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMResetGrid

      +
      public GMResetGrid(GMGrid grid)
      +
      Constructeur pour créer une instance de GMResetGrid.
      +
      +
      Parameters:
      +
      grid - Grille à réinitialiser
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      actionPerformed

      +
      public void actionPerformed(ActionEvent e)
      +
      Lance la réinitialisation de la grille lors du clic sur le bouton Reset.
      +
      +
      Specified by:
      +
      actionPerformed in interface ActionListener
      +
      Parameters:
      +
      e - ActionEvent lié à la classe
      +
      +
      +
    • +
    • +
      +

      ResetGrid

      +
      public void ResetGrid()
      +
      Cette méthode crée une grille vide.
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMRules.html b/doc/GMRules.html new file mode 100644 index 0000000..ec536b0 --- /dev/null +++ b/doc/GMRules.html @@ -0,0 +1,191 @@ + + + + +GMRules + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMRules

+
+
java.lang.Object +
GMRules
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class GMRules +extends Object +implements ActionListener
+
GMRules gère les actions liées aux règles du jeu. + Cette classe implémente ActionListener pour réagir aux clics sur un bouton.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMRules

      +
      public GMRules()
      +
      Constructeur de GMRules. + Initialise le gestionnaire de boîte de dialogue des règles.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      actionPerformed

      +
      public void actionPerformed(ActionEvent e)
      +
      Méthode appelée lorsqu'une action est effectuée, comme un clic sur un bouton. + Affiche la boîte de dialogue des règles.
      +
      +
      Specified by:
      +
      actionPerformed in interface ActionListener
      +
      Parameters:
      +
      e - L'événement d'action qui a déclenché cette méthode.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMSaver.html b/doc/GMSaver.html new file mode 100644 index 0000000..7dcb977 --- /dev/null +++ b/doc/GMSaver.html @@ -0,0 +1,183 @@ + + + + +GMSaver + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMSaver

+
+
java.lang.Object +
GMSaver
+
+
+
+
public class GMSaver +extends Object
+
Cette classe implémente un gestionnaire d'enregistrement de grille de jeu. + Elle permet à l'utilisateur de sauvegarder une grille de jeu dans un fichier spécifié. + Les fichiers de grille sont sauvegardés avec l'extension ".gri".
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMSaver

      +
      public GMSaver(JFrame parentFrame, + GMGrid grid)
      +
      Constructeur de la classe GMSaver.
      +
      +
      Parameters:
      +
      parentFrame - La fenêtre parent.
      +
      grid - La grille de jeu à sauvegarder.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      saveGridIfNeeded

      +
      public void saveGridIfNeeded()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMSaverActionListener.html b/doc/GMSaverActionListener.html new file mode 100644 index 0000000..52b0943 --- /dev/null +++ b/doc/GMSaverActionListener.html @@ -0,0 +1,181 @@ + + + + +GMSaverActionListener + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMSaverActionListener

+
+
java.lang.Object +
GMSaverActionListener
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class GMSaverActionListener +extends Object +implements ActionListener
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMSaverActionListener

      +
      public GMSaverActionListener(Window parentFrame, + GMGrid grid)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMUserInterfaceController.html b/doc/GMUserInterfaceController.html new file mode 100644 index 0000000..1aef332 --- /dev/null +++ b/doc/GMUserInterfaceController.html @@ -0,0 +1,179 @@ + + + + +GMUserInterfaceController + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMUserInterfaceController

+
+
java.lang.Object +
GMUserInterfaceController
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class GMUserInterfaceController +extends Object +implements ActionListener
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMUserInterfaceController

      +
      public GMUserInterfaceController(Window window)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GMUserInterfaceView.html b/doc/GMUserInterfaceView.html new file mode 100644 index 0000000..14a8c9f --- /dev/null +++ b/doc/GMUserInterfaceView.html @@ -0,0 +1,153 @@ + + + + +GMUserInterfaceView + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GMUserInterfaceView

+
+
java.lang.Object +
GMUserInterfaceView
+
+
+
+
public class GMUserInterfaceView +extends Object
+
La classe GMUserInterfaceView représente la vue de l'interface utilisateur pour le créateur de grille. + Elle crée la barre de menu et initialise les différents composants de l'interface utilisateur.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GMUserInterfaceView

      +
      public GMUserInterfaceView(Window window)
      +
      Constructeur de la classe GMUserInterfaceView. + Initialise la fenêtre avec le titre approprié, crée la barre de menu et ajoute les composants à la fenêtre.
      +
      +
      Parameters:
      +
      window - La fenêtre de l'application
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSCase.html b/doc/GSCase.html new file mode 100644 index 0000000..30b269f --- /dev/null +++ b/doc/GSCase.html @@ -0,0 +1,449 @@ + + + + +GSCase + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSCase

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible
+
+
+
public class GSCase +extends JPanel
+
GSCase représente une case dans une grille de jeu.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      isInitial

      +
      protected boolean isInitial
      +
      +
    • +
    • +
      +

      isActive

      +
      protected boolean isActive
      +
      +
    • +
    • +
      +

      positionX

      +
      protected int positionX
      +
      +
    • +
    • +
      +

      positionY

      +
      protected int positionY
      +
      +
    • +
    • +
      +

      parentGrid

      +
      protected GSGrid parentGrid
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSCase

      +
      public GSCase(GSGrid grid, + int x, + int y)
      +
      Constructeur de la classe GSCase.
      +
      +
      Parameters:
      +
      grid - La grille parente de la case.
      +
      x - La position X de la case dans la grille.
      +
      y - La position Y de la case dans la grille.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      layoutSetup

      +
      public void layoutSetup()
      +
      Configure l'apparence initiale de la case.
      +
      +
    • +
    • +
      +

      initializeCell

      +
      public void initializeCell()
      +
      Initialise la case avec une valeur initiale.
      +
      +
    • +
    • +
      +

      setValue

      +
      public void setValue(int value)
      +
      Définit la valeur de la case.
      +
      +
      Parameters:
      +
      value - La valeur à définir pour la case.
      +
      +
      +
    • +
    • +
      +

      getValue

      +
      public int getValue()
      +
      Obtient la valeur de la case.
      +
      +
      Returns:
      +
      La valeur de la case.
      +
      +
      +
    • +
    • +
      +

      deactivateCell

      +
      public void deactivateCell()
      +
      Désactive la case.
      +
      +
    • +
    • +
      +

      getActivity

      +
      public Boolean getActivity()
      +
      Obtient l'état d'activité de la case.
      +
      +
      Returns:
      +
      True si la case est active, sinon False.
      +
      +
      +
    • +
    • +
      +

      updateValue

      +
      public void updateValue(int value)
      +
      Met à jour la valeur de la case.
      +
      +
      Parameters:
      +
      value - La nouvelle valeur de la case.
      +
      +
      +
    • +
    • +
      +

      checkInputValue

      +
      public Boolean checkInputValue(int val)
      +
      Vérifie si la valeur entrée est valide pour la case.
      +
      +
      Parameters:
      +
      val - La valeur à vérifier.
      +
      Returns:
      +
      True si la valeur est valide, sinon False.
      +
      +
      +
    • +
    • +
      +

      getDigitCount

      +
      public int getDigitCount()
      +
      Obtient le nombre de valeurs insérées dans la case.
      +
      +
      Returns:
      +
      Le nombre de valeurs insérées.
      +
      +
      +
    • +
    • +
      +

      insertValue

      +
      public void insertValue(int value)
      +
      Insère une valeur dans la case.
      +
      +
      Parameters:
      +
      value - La valeur à insérer.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSCaseMouseListener.html b/doc/GSCaseMouseListener.html new file mode 100644 index 0000000..2bc0910 --- /dev/null +++ b/doc/GSCaseMouseListener.html @@ -0,0 +1,270 @@ + + + + +GSCaseMouseListener + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSCaseMouseListener

+
+
java.lang.Object +
GSCaseMouseListener
+
+
+
+
All Implemented Interfaces:
+
MouseListener, EventListener
+
+
+
public class GSCaseMouseListener +extends Object +implements MouseListener
+
Classe GSCaseMouseListener implémente l'interface MouseListener + pour gérer les événements de la souris sur un GSCase.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSCaseMouseListener

      +
      public GSCaseMouseListener(GSCase casePanel)
      +
      Constructeur prenant un GSCase en paramètre.
      +
      +
      Parameters:
      +
      casePanel - Le GSCase à associer à cet écouteur.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      mouseClicked

      +
      public void mouseClicked(MouseEvent e)
      +
      Gère l'événement de clic de la souris. + Active le GSCase et effectue des actions associées.
      +
      +
      Specified by:
      +
      mouseClicked in interface MouseListener
      +
      Parameters:
      +
      e - L'événement MouseEvent associé au clic.
      +
      +
      +
    • +
    • +
      +

      mousePressed

      +
      public void mousePressed(MouseEvent e)
      +
      Gère l'événement de pression de la souris. + (Non utilisé dans cette implémentation)
      +
      +
      Specified by:
      +
      mousePressed in interface MouseListener
      +
      Parameters:
      +
      e - L'événement MouseEvent associé à la pression.
      +
      +
      +
    • +
    • +
      +

      mouseReleased

      +
      public void mouseReleased(MouseEvent e)
      +
      Gère l'événement de relâchement de la souris. + (Non utilisé dans cette implémentation)
      +
      +
      Specified by:
      +
      mouseReleased in interface MouseListener
      +
      Parameters:
      +
      e - L'événement MouseEvent associé au relâchement.
      +
      +
      +
    • +
    • +
      +

      mouseEntered

      +
      public void mouseEntered(MouseEvent e)
      +
      Gère l'événement de survol de la souris. + Change la couleur du GSCase lors du survol.
      +
      +
      Specified by:
      +
      mouseEntered in interface MouseListener
      +
      Parameters:
      +
      e - L'événement MouseEvent associé au survol.
      +
      +
      +
    • +
    • +
      +

      mouseExited

      +
      public void mouseExited(MouseEvent e)
      +
      Gère l'événement de sortie de la souris. + Rétablit la couleur du GSCase lors de la sortie.
      +
      +
      Specified by:
      +
      mouseExited in interface MouseListener
      +
      Parameters:
      +
      e - L'événement MouseEvent associé à la sortie.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSGrid.html b/doc/GSGrid.html new file mode 100644 index 0000000..097cf75 --- /dev/null +++ b/doc/GSGrid.html @@ -0,0 +1,355 @@ + + + + +GSGrid + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSGrid

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible, SwingConstants
+
+
+
public class GSGrid +extends JLabel
+
Cette classe représente la grille de jeu pour le Sudoku.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSGrid

      +
      public GSGrid(GSMenu menu)
      +
      Constructeur de la classe GSGrid.
      +
      +
      Parameters:
      +
      menu - Le menu associé à la grille.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      importGrid

      +
      public void importGrid(int[] go)
      +
      Importe les données du Sudoku dans la grille.
      +
      +
      Parameters:
      +
      go - Tableau d'entiers représentant les données du Sudoku.
      +
      +
      +
    • +
    • +
      +

      getCellValue

      +
      public int getCellValue(int i, + int j)
      +
      Récupère la valeur d'une case à une position spécifique dans la grille.
      +
      +
      Parameters:
      +
      i - L'indice de ligne de la case.
      +
      j - L'indice de colonne de la case.
      +
      Returns:
      +
      La valeur de la case à la position spécifiée.
      +
      +
      +
    • +
    • +
      +

      testActivity

      +
      public void testActivity(int x, + int y)
      +
      +
    • +
    • +
      +

      whoIsActive_X

      +
      public int whoIsActive_X()
      +
      +
    • +
    • +
      +

      whoIsActive_Y

      +
      public int whoIsActive_Y()
      +
      +
    • +
    • +
      +

      setValuetoCase

      +
      public void setValuetoCase(int x, + int y, + int val)
      +
      +
    • +
    • +
      +

      isComplete

      +
      public Boolean isComplete()
      +
      +
    • +
    • +
      +

      isPlaying

      +
      public void isPlaying(Boolean _bool)
      +
      +
    • +
    • +
      +

      getMode

      +
      public Boolean getMode()
      +
      +
    • +
    • +
      +

      solve

      +
      public boolean solve()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSImport.html b/doc/GSImport.html new file mode 100644 index 0000000..9ec4dfd --- /dev/null +++ b/doc/GSImport.html @@ -0,0 +1,230 @@ + + + + +GSImport + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSImport

+
+
java.lang.Object +
GSImport
+
+
+
+
public class GSImport +extends Object
+
La classe GSImport est utilisée pour importer une grille à partir d'un fichier.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    Constructeur pour créer une instance de GridMakerImport.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    int[]
    + +
    +
    Récupère le tableau des valeurs importées.
    +
    +
    void
    + +
    +
    Affiche une boîte de dialogue de sélection de fichier et importe la grille à partir du fichier sélectionné.
    +
    +
    boolean
    + +
    +
    Permet de savoir si le fichier est accessible
    +
    +
    boolean
    + +
    +
    Lit les données à partir du fichier sélectionné et les stocke dans un tableau.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSImport

      +
      public GSImport(Window frame)
      +
      Constructeur pour créer une instance de GridMakerImport.
      +
      +
      Parameters:
      +
      frame - La fenêtre précédente
      +
      sudokuGrid - La grille Sudoku
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      importGrid

      +
      public void importGrid()
      +
      Affiche une boîte de dialogue de sélection de fichier et importe la grille à partir du fichier sélectionné.
      +
      +
    • +
    • +
      +

      readFile

      +
      public boolean readFile()
      +
      Lit les données à partir du fichier sélectionné et les stocke dans un tableau.
      +
      +
      Returns:
      +
      true si la lecture est réussie, false sinon
      +
      +
      +
    • +
    • +
      +

      isAccessible

      +
      public boolean isAccessible()
      +
      Permet de savoir si le fichier est accessible
      +
      +
      Returns:
      +
      le booleen accessible
      +
      +
      +
    • +
    • +
      +

      getImportedValues

      +
      public int[] getImportedValues()
      +
      Récupère le tableau des valeurs importées.
      +
      +
      Returns:
      +
      le tableau des valeurs importées
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSMenu.html b/doc/GSMenu.html new file mode 100644 index 0000000..2e04e80 --- /dev/null +++ b/doc/GSMenu.html @@ -0,0 +1,229 @@ + + + + +GSMenu + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSMenu

+
+ +
+
+
public class GSMenu +extends Object
+
La classe GSMenu représente le menu jouer du jeu Sudoku.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSMenu

      +
      public GSMenu(Window window)
      +
      Constructeur de la classe GSMenu.
      +
      +
      Parameters:
      +
      window - La fenêtre dans laquelle afficher le menu.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      enablePlayOptions

      +
      public void enablePlayOptions()
      +
      Active les options de jeu dans le menu.
      +
      +
    • +
    • +
      +

      getImporterButton

      +
      public Button getImporterButton()
      +
      Renvoie le bouton pour l'importation.
      +
      +
      Returns:
      +
      Le bouton pour l'importation.
      +
      +
      +
    • +
    • +
      +

      getJouerButton

      +
      public Button getJouerButton()
      +
      Renvoie le bouton pour démarrer le jeu.
      +
      +
      Returns:
      +
      Le bouton pour démarrer le jeu.
      +
      +
      +
    • +
    • +
      +

      getAutoSolveButton

      +
      public Button getAutoSolveButton()
      +
      Renvoie le bouton pour résoudre automatiquement la grille.
      +
      +
      Returns:
      +
      Le bouton pour résoudre automatiquement la grille.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSMenuController.html b/doc/GSMenuController.html new file mode 100644 index 0000000..8986d68 --- /dev/null +++ b/doc/GSMenuController.html @@ -0,0 +1,195 @@ + + + + +GSMenuController + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSMenuController

+
+
java.lang.Object +
GSMenuController
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class GSMenuController +extends Object +implements ActionListener
+
La classe GSMenuController gère les actions déclenchées par les boutons du menu.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSMenuController

      +
      public GSMenuController(GSMenu gsMenu, + Window mainWindow)
      +
      Constructeur de la classe GSMenuController.
      +
      +
      Parameters:
      +
      gsMenu - Le menu Sudoku à contrôler.
      +
      mainWindow - La fenêtre principale.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      actionPerformed

      +
      public void actionPerformed(ActionEvent e)
      +
      Méthode appelée lorsqu'une action est effectuée (clic sur un bouton).
      +
      +
      Specified by:
      +
      actionPerformed in interface ActionListener
      +
      Parameters:
      +
      e - L'événement associé à l'action.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSPlay.html b/doc/GSPlay.html new file mode 100644 index 0000000..ff2a01e --- /dev/null +++ b/doc/GSPlay.html @@ -0,0 +1,266 @@ + + + + +GSPlay + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSPlay

+
+ +
+
+
public class GSPlay +extends Object
+
Classe GSPlay pour jouer au Sudoku.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSPlay

      +
      public GSPlay(Window window, + GSGrid grille)
      +
      Constructeur de la classe GSPlay.
      +
      +
      Parameters:
      +
      grille - La grille de Sudoku.
      +
      frame - La fenêtre principale.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      showGame

      +
      public void showGame()
      +
      Méthode pour afficher la fenêtre de jeu.
      +
      +
    • +
    • +
      +

      getKeyValue

      +
      public int getKeyValue(KeyEvent e)
      +
      Méthode pour obtenir la valeur associée à une touche.
      +
      +
      Parameters:
      +
      e - L'événement KeyEvent associé à la touche.
      +
      Returns:
      +
      La valeur correspondante à la touche ou -1 si aucune correspondance.
      +
      +
      +
    • +
    • +
      +

      isGameOver

      +
      public Boolean isGameOver()
      +
      Méthode pour vérifier si le jeu est terminé.
      +
      +
      Returns:
      +
      true si le jeu est terminé, sinon false.
      +
      +
      +
    • +
    • +
      +

      getBoutonValider

      +
      public Button getBoutonValider()
      +
      Méthode pour obtenir le bouton valider.
      +
      +
      Returns:
      +
      le bouton valider
      +
      +
      +
    • +
    • +
      +

      getMaGrille

      +
      public GSGrid getMaGrille()
      +
      Méthode pour obtenir la grille jouer
      +
      +
      Returns:
      +
      la grille
      +
      +
      +
    • +
    • +
      +

      getStartTime

      +
      public long getStartTime()
      +
      Méthode pour obtenir le temps de démarrage du jeu.
      +
      +
      Returns:
      +
      Le temps de démarrage du jeu.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSPlayController.html b/doc/GSPlayController.html new file mode 100644 index 0000000..b6ed364 --- /dev/null +++ b/doc/GSPlayController.html @@ -0,0 +1,246 @@ + + + + +GSPlayController + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSPlayController

+
+
java.lang.Object +
GSPlayController
+
+
+
+
All Implemented Interfaces:
+
ActionListener, KeyListener, EventListener
+
+
+
public class GSPlayController +extends Object +implements KeyListener, ActionListener
+
Le contrôleur pour le jeu de la grille.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSPlayController

      +
      public GSPlayController(GSPlay gsPlay)
      +
      Constructeur du contrôleur du jeu de la grille.
      +
      +
      Parameters:
      +
      gsPlay - Le jeu de la grille associé à ce contrôleur.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      actionPerformed

      +
      public void actionPerformed(ActionEvent e)
      +
      Gère les actions lorsqu'un événement se produit.
      +
      +
      Specified by:
      +
      actionPerformed in interface ActionListener
      +
      Parameters:
      +
      e - L'événement déclenché.
      +
      +
      +
    • +
    • +
      +

      keyPressed

      +
      public void keyPressed(KeyEvent e)
      +
      Gère les événements lorsque la touche est enfoncée.
      +
      +
      Specified by:
      +
      keyPressed in interface KeyListener
      +
      Parameters:
      +
      e - L'événement de la touche enfoncée.
      +
      +
      +
    • +
    • +
      +

      keyReleased

      +
      public void keyReleased(KeyEvent e)
      +
      Gère les événements lorsque la touche est relâchée.
      +
      +
      Specified by:
      +
      keyReleased in interface KeyListener
      +
      Parameters:
      +
      e - L'événement de la touche relâchée.
      +
      +
      +
    • +
    • +
      +

      keyTyped

      +
      public void keyTyped(KeyEvent e)
      +
      Gère les événements lorsque la touche est tapée.
      +
      +
      Specified by:
      +
      keyTyped in interface KeyListener
      +
      Parameters:
      +
      e - L'événement de la touche tapée.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSSolver.html b/doc/GSSolver.html new file mode 100644 index 0000000..c951d70 --- /dev/null +++ b/doc/GSSolver.html @@ -0,0 +1,154 @@ + + + + +GSSolver + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSSolver

+
+
java.lang.Object +
GSSolver
+
+
+
+
public class GSSolver +extends Object
+
La classe GSSolver résout une grille de Sudoku et affiche le résultat dans une fenêtre.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSSolver

      +
      public GSSolver(GSGrid grid, + Window window)
      +
      Constructeur de la classe GSSolver.
      +
      +
      Parameters:
      +
      grid - La grille de Sudoku à résoudre.
      +
      window - La fenêtre dans laquelle afficher la résolution.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSTest.html b/doc/GSTest.html new file mode 100644 index 0000000..6c5873c --- /dev/null +++ b/doc/GSTest.html @@ -0,0 +1,263 @@ + + + + +GSTest + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSTest

+
+ +
+
+
public class GSTest +extends Object
+
La classe GSTest contient les méthodes pour tester la validité d'une grille de Sudoku.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    GSTest(GSGrid Grid)
    +
    +
    Constructeur de la classe GSTest.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    + +
    isValid(int row, + int column)
    +
    +
    Vérifie si une cellule spécifique de la grille est valide.
    +
    +
    boolean
    + +
    +
    Vérifie s'il y a des doublons dans la grille de Sudoku.
    +
    +
    boolean
    + +
    +
    Vérifie s'il y a des doublons dans une colonne spécifique de la grille.
    +
    +
    boolean
    + +
    +
    Vérifie s'il y a des doublons dans une ligne spécifique de la grille.
    +
    +
    boolean
    +
    verificationRegion(int x, + int y)
    +
    +
    Vérifie s'il y a des doublons dans une région spécifique de la grille.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSTest

      +
      public GSTest(GSGrid Grid)
      +
      Constructeur de la classe GSTest.
      +
      +
      Parameters:
      +
      Grid - La grille de Sudoku à tester.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      test

      +
      public boolean test()
      +
      Vérifie s'il y a des doublons dans la grille de Sudoku.
      +
      +
      Returns:
      +
      true s'il y a des doublons, false sinon.
      +
      +
      +
    • +
    • +
      +

      verificationRegion

      +
      public boolean verificationRegion(int x, + int y)
      +
      Vérifie s'il y a des doublons dans une région spécifique de la grille.
      +
      +
      Parameters:
      +
      x - L'indice x du coin supérieur gauche de la région.
      +
      y - L'indice y du coin supérieur gauche de la région.
      +
      Returns:
      +
      true s'il y a des doublons, false sinon.
      +
      +
      +
    • +
    • +
      +

      verificationLigne

      +
      public boolean verificationLigne(int x)
      +
      Vérifie s'il y a des doublons dans une ligne spécifique de la grille.
      +
      +
      Parameters:
      +
      x - L'indice de la ligne à vérifier.
      +
      Returns:
      +
      true s'il y a des doublons, false sinon.
      +
      +
      +
    • +
    • +
      +

      verificationColonne

      +
      public boolean verificationColonne(int y)
      +
      Vérifie s'il y a des doublons dans une colonne spécifique de la grille.
      +
      +
      Parameters:
      +
      y - L'indice de la colonne à vérifier.
      +
      Returns:
      +
      true s'il y a des doublons, false sinon.
      +
      +
      +
    • +
    • +
      +

      isValid

      +
      public Boolean isValid(int row, + int column)
      +
      Vérifie si une cellule spécifique de la grille est valide.
      +
      +
      Parameters:
      +
      row - L'indice de la ligne de la cellule.
      +
      column - L'indice de la colonne de la cellule.
      +
      Returns:
      +
      true si la cellule est valide, false sinon.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GSWin.html b/doc/GSWin.html new file mode 100644 index 0000000..7fb7816 --- /dev/null +++ b/doc/GSWin.html @@ -0,0 +1,190 @@ + + + + +GSWin + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GSWin

+
+ +
+
+
All Implemented Interfaces:
+
DialogManager
+
+
+
public class GSWin +extends Object +implements DialogManager
+
GSWin gère l'affichage d'une fenêtre de félicitations pour avoir résolu le Sudoku.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    GSWin(long solvingTime)
    +
    +
    Constructeur de la classe GSWin.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    void
    + +
    +
    Affiche la fenêtre de félicitations pour avoir résolu le Sudoku.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GSWin

      +
      public GSWin(long solvingTime)
      +
      Constructeur de la classe GSWin.
      +
      +
      Parameters:
      +
      solvingTime - Le temps de résolution du Sudoku.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      showDialog

      +
      public void showDialog()
      +
      Affiche la fenêtre de félicitations pour avoir résolu le Sudoku.
      +
      +
      Specified by:
      +
      showDialog in interface DialogManager
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GridMaker.html b/doc/GridMaker.html new file mode 100644 index 0000000..09e133c --- /dev/null +++ b/doc/GridMaker.html @@ -0,0 +1,170 @@ + + + + +GridMaker + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GridMaker

+
+
java.lang.Object +
GridMaker
+
+
+
+
public class GridMaker +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GridMaker

      +
      public GridMaker()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main(String[] args)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/GridSolver.html b/doc/GridSolver.html new file mode 100644 index 0000000..505484e --- /dev/null +++ b/doc/GridSolver.html @@ -0,0 +1,170 @@ + + + + +GridSolver + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class GridSolver

+
+
java.lang.Object +
GridSolver
+
+
+
+
public class GridSolver +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GridSolver

      +
      public GridSolver()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main(String[] args)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/HomeButtonClickListener.html b/doc/HomeButtonClickListener.html new file mode 100644 index 0000000..cc5fe7e --- /dev/null +++ b/doc/HomeButtonClickListener.html @@ -0,0 +1,193 @@ + + + + +HomeButtonClickListener + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class HomeButtonClickListener

+
+
java.lang.Object +
HomeButtonClickListener
+
+
+
+
All Implemented Interfaces:
+
ActionListener, EventListener
+
+
+
public class HomeButtonClickListener +extends Object +implements ActionListener
+
Listener pour les clics sur les boutons dans le menu. + Il effectue différentes actions en fonction du bouton cliqué.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      HomeButtonClickListener

      +
      public HomeButtonClickListener(Window window)
      +
      Construit un ButtonClickListener avec la fenêtre spécifiée.
      +
      +
      Parameters:
      +
      window - La fenêtre où les actions seront effectuées.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      actionPerformed

      +
      public void actionPerformed(ActionEvent e)
      +
      Effectue une action en fonction du bouton cliqué.
      +
      +
      Specified by:
      +
      actionPerformed in interface ActionListener
      +
      Parameters:
      +
      e - L'ActionEvent représentant le clic sur le bouton.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/HomeView.html b/doc/HomeView.html new file mode 100644 index 0000000..858459a --- /dev/null +++ b/doc/HomeView.html @@ -0,0 +1,306 @@ + + + + +HomeView + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class HomeView

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible
+
+
+
public class HomeView +extends JPanel
+
HomeView représente la vue de la page d'accueil de l'application Sudoku. + Cette classe étend JPanel et affiche les éléments de la page d'accueil, y compris le titre, les boutons et les contrôles audio. + Elle utilise également les classes Title, Button, et MusicButton.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      HomeView

      +
      public HomeView(Window window, + String mainTitle, + String subTitle, + String[] buttonTexts)
      +
      Constructeur de la classe HomeView. + Initialise la fenêtre parente et crée les composants de la page d'accueil.
      +
      +
      Parameters:
      +
      window - La fenêtre parente.
      +
      mainTitle - Le titre principal de la page.
      +
      subTitle - Le sous-titre de la page.
      +
      buttonTexts - Les textes des boutons.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addComponentsToWindow

      +
      public void addComponentsToWindow()
      +
      Ajoute les composants créés à la fenêtre parente.
      +
      +
    • +
    • +
      +

      getFirstButton

      +
      public Button getFirstButton()
      +
      Récupère le premier bouton créé.
      +
      +
      Returns:
      +
      Le premier bouton.
      +
      +
      +
    • +
    • +
      +

      getSecondButton

      +
      public Button getSecondButton()
      +
      Récupère le deuxième bouton créé.
      +
      +
      Returns:
      +
      Le deuxième bouton.
      +
      +
      +
    • +
    • +
      +

      getThirdButton

      +
      public Button getThirdButton()
      +
      Récupère le troisième bouton créé.
      +
      +
      Returns:
      +
      Le troisième bouton.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/MusicButton.html b/doc/MusicButton.html new file mode 100644 index 0000000..8483645 --- /dev/null +++ b/doc/MusicButton.html @@ -0,0 +1,236 @@ + + + + +MusicButton + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class MusicButton

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible, SwingConstants
+
+
+
public class MusicButton +extends JButton
+
Fournit un bouton qui bascule entre la lecture et l'arrêt de la musique lorsqu'il est cliqué.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MusicButton

      +
      public MusicButton(String onIconPath, + String offIconPath, + String musicFilePath)
      +
      Constructeur : Construit un MusicButton.
      +
      +
      Parameters:
      +
      onIconPath - Le chemin du fichier d'icône lorsque la musique est activée.
      +
      offIconPath - Le chemin du fichier d'icône lorsque la musique est désactivée.
      +
      musicFilePath - Le chemin du fichier musical à jouer.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/MusicPlayer.html b/doc/MusicPlayer.html new file mode 100644 index 0000000..2aa225f --- /dev/null +++ b/doc/MusicPlayer.html @@ -0,0 +1,209 @@ + + + + +MusicPlayer + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class MusicPlayer

+
+
java.lang.Object +
MusicPlayer
+
+
+
+
public class MusicPlayer +extends Object
+
Classe contenant un lecteur de musique simple qui permet de jouer et d'arrêter la musique.
+
+
+
    + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    +
    MusicPlayer(String filePath)
    +
    +
    Construit un MusicPlayer avec le chemin de fichier spécifié.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    boolean
    + +
    +
    Vérifie si la musique est en train de jouer actuellement.
    +
    +
    void
    + +
    +
    Démarre la lecture de la musique.
    +
    +
    void
    + +
    +
    Arrête la lecture de la musique.
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MusicPlayer

      +
      public MusicPlayer(String filePath)
      +
      Construit un MusicPlayer avec le chemin de fichier spécifié.
      +
      +
      Parameters:
      +
      filePath - Le chemin du fichier musical à jouer.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      play

      +
      public void play()
      +
      Démarre la lecture de la musique.
      +
      +
    • +
    • +
      +

      stop

      +
      public void stop()
      +
      Arrête la lecture de la musique.
      +
      +
    • +
    • +
      +

      isPlaying

      +
      public boolean isPlaying()
      +
      Vérifie si la musique est en train de jouer actuellement.
      +
      +
      Returns:
      +
      true si la musique est en train de jouer, false sinon.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/RulesDialogManager.html b/doc/RulesDialogManager.html new file mode 100644 index 0000000..9d033e3 --- /dev/null +++ b/doc/RulesDialogManager.html @@ -0,0 +1,184 @@ + + + + +RulesDialogManager + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class RulesDialogManager

+
+
java.lang.Object +
RulesDialogManager
+
+
+
+
All Implemented Interfaces:
+
DialogManager
+
+
+
public class RulesDialogManager +extends Object +implements DialogManager
+
RulesDialogManager gère l'affichage de la boîte de dialogue des règles. + Cette classe implémente DialogManager pour définir la méthode showDialog.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RulesDialogManager

      +
      public RulesDialogManager()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      showDialog

      +
      public void showDialog()
      +
      Affiche la boîte de dialogue des règles du Sudoku.
      +
      +
      Specified by:
      +
      showDialog in interface DialogManager
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/RulesSudoku.html b/doc/RulesSudoku.html new file mode 100644 index 0000000..2c451eb --- /dev/null +++ b/doc/RulesSudoku.html @@ -0,0 +1,214 @@ + + + + +RulesSudoku + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class RulesSudoku

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible
+
+
+
public class RulesSudoku +extends JPanel
+
RulesSudoku représente le panneau affichant les règles du Sudoku. + Cette classe étend JPanel et définit le contenu des règles.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RulesSudoku

      +
      public RulesSudoku()
      +
      Constructeur par défaut de RulesSudoku. + Initialise le contenu des règles et configure l'apparence du panneau.
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/Title.html b/doc/Title.html new file mode 100644 index 0000000..c0a46f9 --- /dev/null +++ b/doc/Title.html @@ -0,0 +1,230 @@ + + + + +Title + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class Title

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible, SwingConstants
+
+
+
public class Title +extends JLabel
+
Title est une étiquette Swing personnalisée utilisée pour afficher un titre centré avec une police et une couleur spécifiées. + Cette classe étend JLabel.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Title

      +
      public Title(String text, + Font font, + Color color)
      +
      Constructeur de Title. + Crée une étiquette avec le texte, la police et la couleur spécifiés, et la centre horizontalement.
      +
      +
      Parameters:
      +
      text - Le texte à afficher.
      +
      font - La police à utiliser pour le texte.
      +
      color - La couleur du texte.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/Window.html b/doc/Window.html new file mode 100644 index 0000000..b950ada --- /dev/null +++ b/doc/Window.html @@ -0,0 +1,283 @@ + + + + +Window + + + + + + + + + + + + + + +
+ +
+
+ +
+

Class Window

+
+ +
+
+
All Implemented Interfaces:
+
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants
+
+
+
public class Window +extends JFrame
+
Window est une classe représentant la fenêtre principale de l'application Sudoku. + Cette classe étend JFrame et gère l'affichage des différentes pages de l'application.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Window

      +
      public Window()
      +
      Constructeur de la classe Window. + Initialise la fenêtre avec la taille minimale et la couleur de fond.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      setPageTitle

      +
      public void setPageTitle(String title)
      +
      Définit le titre de la page actuelle. + Met à jour le titre de la fenêtre pour inclure le titre de la page et le titre du programme.
      +
      +
      Parameters:
      +
      title - Le titre de la page actuelle.
      +
      +
      +
    • +
    • +
      +

      removeAllComponents

      +
      public static void removeAllComponents(Window window)
      +
      Supprime tous les composants de la fenêtre. + Utilisé pour effacer le contenu de la fenêtre.
      +
      +
      Parameters:
      +
      window - La fenêtre à nettoyer.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/doc/allclasses-index.html b/doc/allclasses-index.html new file mode 100644 index 0000000..a2277cf --- /dev/null +++ b/doc/allclasses-index.html @@ -0,0 +1,213 @@ + + + + +All Classes and Interfaces + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
+
+
+
Class
+
Description
+ +
+
Class containing custom settings for JButtons.
+
+ +
+
CongratulationsDialog permet de crée une boîte de dialogue de félicitations pour afficher le temps de résolution d'un Sudoku.
+
+ +
+
Interface containing definition to showDialog box.
+
+ +
+
GMCase représente une case dans une grille éditable.
+
+ +
+
GMCaseKeyListener est un KeyListener utilisé pour écouter les événements de touche dans GMCase.
+
+ +
 
+ +
+
GMChecker est utilisée pour vérifier la cohérence de la grille.
+
+ +
+
A custom JPanel class representing a Sudoku grid.
+
+ +
+
La classe GMHowToCreateController est un contrôleur qui gère l'affichage de la fenêtre de création de grille.
+
+ +
+
La classe GMHowToCreateDialogManager est un gestionnaire de dialogue qui affiche des instructions + sur la manière de créer une grille dans une boîte de dialogue.
+
+ +
+
La classe GMHowToCreateView est une vue qui affiche les instructions pour créer une grille dans une boîte de dialogue.
+
+ +
+
La classe GMImport est utilisée pour importer une grille à partir d'un fichier.
+
+ +
+
La classe GMResetGrid sert à crée une nouvelle grille de 0.
+
+ +
+
GMRules gère les actions liées aux règles du jeu.
+
+ +
+
Cette classe implémente un gestionnaire d'enregistrement de grille de jeu.
+
+ +
 
+ +
 
+ +
+
La classe GMUserInterfaceView représente la vue de l'interface utilisateur pour le créateur de grille.
+
+ +
 
+ +
 
+ +
+
GSCase représente une case dans une grille de jeu.
+
+ +
+
Classe GSCaseMouseListener implémente l'interface MouseListener + pour gérer les événements de la souris sur un GSCase.
+
+ +
+
Cette classe représente la grille de jeu pour le Sudoku.
+
+ +
+
La classe GSImport est utilisée pour importer une grille à partir d'un fichier.
+
+ +
+
La classe GSMenu représente le menu jouer du jeu Sudoku.
+
+ +
+
La classe GSMenuController gère les actions déclenchées par les boutons du menu.
+
+ +
+
Classe GSPlay pour jouer au Sudoku.
+
+ +
+
Le contrôleur pour le jeu de la grille.
+
+ +
+
La classe GSSolver résout une grille de Sudoku et affiche le résultat dans une fenêtre.
+
+ +
+
La classe GSTest contient les méthodes pour tester la validité d'une grille de Sudoku.
+
+ +
+
GSWin gère l'affichage d'une fenêtre de félicitations pour avoir résolu le Sudoku.
+
+ +
+
Listener pour les clics sur les boutons dans le menu.
+
+ +
+
HomeView représente la vue de la page d'accueil de l'application Sudoku.
+
+ +
+
Fournit un bouton qui bascule entre la lecture et l'arrêt de la musique lorsqu'il est cliqué.
+
+ +
+
Classe contenant un lecteur de musique simple qui permet de jouer et d'arrêter la musique.
+
+ +
+
RulesDialogManager gère l'affichage de la boîte de dialogue des règles.
+
+ +
+
RulesSudoku représente le panneau affichant les règles du Sudoku.
+
+ +
+
Title est une étiquette Swing personnalisée utilisée pour afficher un titre centré avec une police et une couleur spécifiées.
+
+ +
+
Window est une classe représentant la fenêtre principale de l'application Sudoku.
+
+
+
+
+
+
+
+ + diff --git a/doc/allpackages-index.html b/doc/allpackages-index.html new file mode 100644 index 0000000..78fbd3e --- /dev/null +++ b/doc/allpackages-index.html @@ -0,0 +1,63 @@ + + + + +All Packages + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
 
+
+
+
+
+ + diff --git a/doc/copy.svg b/doc/copy.svg new file mode 100644 index 0000000..d435f6c --- /dev/null +++ b/doc/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/doc/element-list b/doc/element-list new file mode 100644 index 0000000..147af06 --- /dev/null +++ b/doc/element-list @@ -0,0 +1 @@ +unnamed package diff --git a/doc/help-doc.html b/doc/help-doc.html new file mode 100644 index 0000000..525ede2 --- /dev/null +++ b/doc/help-doc.html @@ -0,0 +1,182 @@ + + + + +API Help + + + + + + + + + + + + + + +
+ +
+
+

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 + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

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.
  • +
+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

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.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+ + diff --git a/doc/index-all.html b/doc/index-all.html new file mode 100644 index 0000000..fdd762c --- /dev/null +++ b/doc/index-all.html @@ -0,0 +1,751 @@ + + + + +Index + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E G H I K L M P R S T U V W 
All Classes and Interfaces|All Packages|Serialized Form +

A

+
+
actionPerformed(ActionEvent) - Method in class GMHowToCreateController
+
+
Méthode invoquée lorsqu'un événement d'action est déclenché, comme un clic sur un bouton.
+
+
actionPerformed(ActionEvent) - Method in class GMImport
+
+
Méthode invoquée lorsqu'un événement d'action est déclenché, comme un clic sur un bouton.
+
+
actionPerformed(ActionEvent) - Method in class GMResetGrid
+
+
Lance la réinitialisation de la grille lors du clic sur le bouton Reset.
+
+
actionPerformed(ActionEvent) - Method in class GMRules
+
+
Méthode appelée lorsqu'une action est effectuée, comme un clic sur un bouton.
+
+
actionPerformed(ActionEvent) - Method in class GMSaverActionListener
+
 
+
actionPerformed(ActionEvent) - Method in class GMUserInterfaceController
+
 
+
actionPerformed(ActionEvent) - Method in class GSMenuController
+
+
Méthode appelée lorsqu'une action est effectuée (clic sur un bouton).
+
+
actionPerformed(ActionEvent) - Method in class GSPlayController
+
+
Gère les actions lorsqu'un événement se produit.
+
+
actionPerformed(ActionEvent) - Method in class HomeButtonClickListener
+
+
Effectue une action en fonction du bouton cliqué.
+
+
addComponentsToWindow() - Method in class HomeView
+
+
Ajoute les composants créés à la fenêtre parente.
+
+
+

B

+
+
Button - Class in Unnamed Package
+
+
Class containing custom settings for JButtons.
+
+
Button(String) - Constructor for class Button
+
+
Constructor
+
+
Button(String, Color) - Constructor for class Button
+
+
Constructor
+
+
Button(String, Dimension) - Constructor for class Button
+
+
Constructor
+
+
Button(String, Dimension, Font) - Constructor for class Button
+
+
Constructor
+
+
Button(String, Dimension, Font, Color) - Constructor for class Button
+
+
Constructor
+
+
+

C

+
+
checkGrid() - Method in class GMChecker
+
+
Vérifie si la grille est correcte.
+
+
checkGridMessage() - Method in class GMChecker
+
+
Vérifie si la grille est correcte et envoie un message.
+
+
checkInputValue(int) - Method in class GSCase
+
+
Vérifie si la valeur entrée est valide pour la case.
+
+
CongratulationsDialog - Class in Unnamed Package
+
+
CongratulationsDialog permet de crée une boîte de dialogue de félicitations pour afficher le temps de résolution d'un Sudoku.
+
+
CongratulationsDialog(long) - Constructor for class CongratulationsDialog
+
+
Constructeur de la classe CongratulationsDialog.
+
+
+

D

+
+
deactivateCell() - Method in class GSCase
+
+
Désactive la case.
+
+
DialogManager - Interface in Unnamed Package
+
+
Interface containing definition to showDialog box.
+
+
+

E

+
+
enablePlayOptions() - Method in class GSMenu
+
+
Active les options de jeu dans le menu.
+
+
exportGrid() - Method in class GMGrid
+
+
Exports the current Sudoku grid values.
+
+
+

G

+
+
getActivity() - Method in class GSCase
+
+
Obtient l'état d'activité de la case.
+
+
getAutoSolveButton() - Method in class GSMenu
+
+
Renvoie le bouton pour résoudre automatiquement la grille.
+
+
getBoutonValider() - Method in class GSPlay
+
+
Méthode pour obtenir le bouton valider.
+
+
getCellValue() - Method in class GMCase
+
+
Récupère la valeur actuelle de la case.
+
+
getCellValue(int, int) - Method in class GSGrid
+
+
Récupère la valeur d'une case à une position spécifique dans la grille.
+
+
getCellValueAt(int, int) - Method in class GMGrid
+
+
Retrieves the value of a cell in the Sudoku grid.
+
+
getDigitCount() - Method in class GSCase
+
+
Obtient le nombre de valeurs insérées dans la case.
+
+
getFirstButton() - Method in class HomeView
+
+
Récupère le premier bouton créé.
+
+
getImportedValues() - Method in class GSImport
+
+
Récupère le tableau des valeurs importées.
+
+
getImporterButton() - Method in class GSMenu
+
+
Renvoie le bouton pour l'importation.
+
+
getJouerButton() - Method in class GSMenu
+
+
Renvoie le bouton pour démarrer le jeu.
+
+
getKeyValue(KeyEvent) - Method in class GSPlay
+
+
Méthode pour obtenir la valeur associée à une touche.
+
+
getMaGrille() - Method in class GSPlay
+
+
Méthode pour obtenir la grille jouer
+
+
getMode() - Method in class GSGrid
+
 
+
getSecondButton() - Method in class HomeView
+
+
Récupère le deuxième bouton créé.
+
+
getStartTime() - Method in class GSPlay
+
+
Méthode pour obtenir le temps de démarrage du jeu.
+
+
getThirdButton() - Method in class HomeView
+
+
Récupère le troisième bouton créé.
+
+
getValue() - Method in class GSCase
+
+
Obtient la valeur de la case.
+
+
GMCase - Class in Unnamed Package
+
+
GMCase représente une case dans une grille éditable.
+
+
GMCase(GMGrid, int, int) - Constructor for class GMCase
+
+
Constructeur par défaut de GMCase.
+
+
GMCaseKeyListener - Class in Unnamed Package
+
+
GMCaseKeyListener est un KeyListener utilisé pour écouter les événements de touche dans GMCase.
+
+
GMCaseKeyListener(GMCase, GMGrid, int, int) - Constructor for class GMCaseKeyListener
+
+
Constructeur de GridMakerCaseListener.
+
+
GMCaseMouseListener - Class in Unnamed Package
+
 
+
GMCaseMouseListener() - Constructor for class GMCaseMouseListener
+
 
+
GMChecker - Class in Unnamed Package
+
+
GMChecker est utilisée pour vérifier la cohérence de la grille.
+
+
GMChecker(GMGrid) - Constructor for class GMChecker
+
+
Constructeur pour créer une instance de GMChecker.
+
+
GMGrid - Class in Unnamed Package
+
+
A custom JPanel class representing a Sudoku grid.
+
+
GMGrid() - Constructor for class GMGrid
+
+
Constructs a new GMGrid object and initializes the grid.
+
+
GMHowToCreateController - Class in Unnamed Package
+
+
La classe GMHowToCreateController est un contrôleur qui gère l'affichage de la fenêtre de création de grille.
+
+
GMHowToCreateController() - Constructor for class GMHowToCreateController
+
+
Constructeur pour créer une instance de GMHowToCreateController.
+
+
GMHowToCreateDialogManager - Class in Unnamed Package
+
+
La classe GMHowToCreateDialogManager est un gestionnaire de dialogue qui affiche des instructions + sur la manière de créer une grille dans une boîte de dialogue.
+
+
GMHowToCreateDialogManager() - Constructor for class GMHowToCreateDialogManager
+
 
+
GMHowToCreateView - Class in Unnamed Package
+
+
La classe GMHowToCreateView est une vue qui affiche les instructions pour créer une grille dans une boîte de dialogue.
+
+
GMHowToCreateView() - Constructor for class GMHowToCreateView
+
+
Constructeur pour créer une instance de GMHowToCreateView.
+
+
GMImport - Class in Unnamed Package
+
+
La classe GMImport est utilisée pour importer une grille à partir d'un fichier.
+
+
GMImport(JFrame, GMGrid) - Constructor for class GMImport
+
+
Constructeur pour créer une instance de GMImport.
+
+
GMResetGrid - Class in Unnamed Package
+
+
La classe GMResetGrid sert à crée une nouvelle grille de 0.
+
+
GMResetGrid(GMGrid) - Constructor for class GMResetGrid
+
+
Constructeur pour créer une instance de GMResetGrid.
+
+
GMRules - Class in Unnamed Package
+
+
GMRules gère les actions liées aux règles du jeu.
+
+
GMRules() - Constructor for class GMRules
+
+
Constructeur de GMRules.
+
+
GMSaver - Class in Unnamed Package
+
+
Cette classe implémente un gestionnaire d'enregistrement de grille de jeu.
+
+
GMSaver(JFrame, GMGrid) - Constructor for class GMSaver
+
+
Constructeur de la classe GMSaver.
+
+
GMSaverActionListener - Class in Unnamed Package
+
 
+
GMSaverActionListener(Window, GMGrid) - Constructor for class GMSaverActionListener
+
 
+
GMUserInterfaceController - Class in Unnamed Package
+
 
+
GMUserInterfaceController(Window) - Constructor for class GMUserInterfaceController
+
 
+
GMUserInterfaceView - Class in Unnamed Package
+
+
La classe GMUserInterfaceView représente la vue de l'interface utilisateur pour le créateur de grille.
+
+
GMUserInterfaceView(Window) - Constructor for class GMUserInterfaceView
+
+
Constructeur de la classe GMUserInterfaceView.
+
+
GridMaker - Class in Unnamed Package
+
 
+
GridMaker() - Constructor for class GridMaker
+
 
+
GridSolver - Class in Unnamed Package
+
 
+
GridSolver() - Constructor for class GridSolver
+
 
+
GSCase - Class in Unnamed Package
+
+
GSCase représente une case dans une grille de jeu.
+
+
GSCase(GSGrid, int, int) - Constructor for class GSCase
+
+
Constructeur de la classe GSCase.
+
+
GSCaseMouseListener - Class in Unnamed Package
+
+
Classe GSCaseMouseListener implémente l'interface MouseListener + pour gérer les événements de la souris sur un GSCase.
+
+
GSCaseMouseListener(GSCase) - Constructor for class GSCaseMouseListener
+
+
Constructeur prenant un GSCase en paramètre.
+
+
GSGrid - Class in Unnamed Package
+
+
Cette classe représente la grille de jeu pour le Sudoku.
+
+
GSGrid(GSMenu) - Constructor for class GSGrid
+
+
Constructeur de la classe GSGrid.
+
+
GSImport - Class in Unnamed Package
+
+
La classe GSImport est utilisée pour importer une grille à partir d'un fichier.
+
+
GSImport(Window) - Constructor for class GSImport
+
+
Constructeur pour créer une instance de GridMakerImport.
+
+
GSMenu - Class in Unnamed Package
+
+
La classe GSMenu représente le menu jouer du jeu Sudoku.
+
+
GSMenu(Window) - Constructor for class GSMenu
+
+
Constructeur de la classe GSMenu.
+
+
GSMenuController - Class in Unnamed Package
+
+
La classe GSMenuController gère les actions déclenchées par les boutons du menu.
+
+
GSMenuController(GSMenu, Window) - Constructor for class GSMenuController
+
+
Constructeur de la classe GSMenuController.
+
+
GSPlay - Class in Unnamed Package
+
+
Classe GSPlay pour jouer au Sudoku.
+
+
GSPlay(Window, GSGrid) - Constructor for class GSPlay
+
+
Constructeur de la classe GSPlay.
+
+
GSPlayController - Class in Unnamed Package
+
+
Le contrôleur pour le jeu de la grille.
+
+
GSPlayController(GSPlay) - Constructor for class GSPlayController
+
+
Constructeur du contrôleur du jeu de la grille.
+
+
GSSolver - Class in Unnamed Package
+
+
La classe GSSolver résout une grille de Sudoku et affiche le résultat dans une fenêtre.
+
+
GSSolver(GSGrid, Window) - Constructor for class GSSolver
+
+
Constructeur de la classe GSSolver.
+
+
GSTest - Class in Unnamed Package
+
+
La classe GSTest contient les méthodes pour tester la validité d'une grille de Sudoku.
+
+
GSTest(GSGrid) - Constructor for class GSTest
+
+
Constructeur de la classe GSTest.
+
+
GSWin - Class in Unnamed Package
+
+
GSWin gère l'affichage d'une fenêtre de félicitations pour avoir résolu le Sudoku.
+
+
GSWin(long) - Constructor for class GSWin
+
+
Constructeur de la classe GSWin.
+
+
+

H

+
+
HomeButtonClickListener - Class in Unnamed Package
+
+
Listener pour les clics sur les boutons dans le menu.
+
+
HomeButtonClickListener(Window) - Constructor for class HomeButtonClickListener
+
+
Construit un ButtonClickListener avec la fenêtre spécifiée.
+
+
HomeView - Class in Unnamed Package
+
+
HomeView représente la vue de la page d'accueil de l'application Sudoku.
+
+
HomeView(Window, String, String, String[]) - Constructor for class HomeView
+
+
Constructeur de la classe HomeView.
+
+
+

I

+
+
importGrid() - Method in class GMImport
+
+
Affiche une boîte de dialogue de sélection de fichier et importe la grille à partir du fichier sélectionné.
+
+
importGrid() - Method in class GSImport
+
+
Affiche une boîte de dialogue de sélection de fichier et importe la grille à partir du fichier sélectionné.
+
+
importGrid(int[]) - Method in class GMGrid
+
+
Imports values to populate the Sudoku grid.
+
+
importGrid(int[]) - Method in class GSGrid
+
+
Importe les données du Sudoku dans la grille.
+
+
initializeCell() - Method in class GSCase
+
+
Initialise la case avec une valeur initiale.
+
+
insertValue(int) - Method in class GSCase
+
+
Insère une valeur dans la case.
+
+
isAccessible() - Method in class GSImport
+
+
Permet de savoir si le fichier est accessible
+
+
isActive - Variable in class GMCase
+
+
Statut de la case
+
+
isActive - Variable in class GSCase
+
 
+
isComplete() - Method in class GSGrid
+
 
+
isCorrect() - Method in class GMChecker
+
+
Vérifie si la grille est correcte.
+
+
isGameOver() - Method in class GSPlay
+
+
Méthode pour vérifier si le jeu est terminé.
+
+
isInitial - Variable in class GSCase
+
 
+
isPlaying() - Method in class MusicPlayer
+
+
Vérifie si la musique est en train de jouer actuellement.
+
+
isPlaying(Boolean) - Method in class GSGrid
+
 
+
isValid(int, int) - Method in class GSTest
+
+
Vérifie si une cellule spécifique de la grille est valide.
+
+
+

K

+
+
keyPressed(KeyEvent) - Method in class GMCaseKeyListener
+
+
Méthode appelée lorsqu'une touche est enfoncée.
+
+
keyPressed(KeyEvent) - Method in class GSPlayController
+
+
Gère les événements lorsque la touche est enfoncée.
+
+
keyReleased(KeyEvent) - Method in class GMCaseKeyListener
+
+
Méthode appelée lorsqu'une touche est relâchée.
+
+
keyReleased(KeyEvent) - Method in class GSPlayController
+
+
Gère les événements lorsque la touche est relâchée.
+
+
keyTyped(KeyEvent) - Method in class GMCaseKeyListener
+
+
Méthode appelée lorsqu'une touche est tapée (enfoncée puis relâchée).
+
+
keyTyped(KeyEvent) - Method in class GSPlayController
+
+
Gère les événements lorsque la touche est tapée.
+
+
+

L

+
+
layoutSetup() - Method in class GSCase
+
+
Configure l'apparence initiale de la case.
+
+
+

M

+
+
main(String[]) - Static method in class GridMaker
+
 
+
main(String[]) - Static method in class GridSolver
+
 
+
mouseClicked(MouseEvent) - Method in class GMCaseMouseListener
+
 
+
mouseClicked(MouseEvent) - Method in class GSCaseMouseListener
+
+
Gère l'événement de clic de la souris.
+
+
mouseEntered(MouseEvent) - Method in class GSCaseMouseListener
+
+
Gère l'événement de survol de la souris.
+
+
mouseExited(MouseEvent) - Method in class GSCaseMouseListener
+
+
Gère l'événement de sortie de la souris.
+
+
mousePressed(MouseEvent) - Method in class GSCaseMouseListener
+
+
Gère l'événement de pression de la souris.
+
+
mouseReleased(MouseEvent) - Method in class GSCaseMouseListener
+
+
Gère l'événement de relâchement de la souris.
+
+
MusicButton - Class in Unnamed Package
+
+
Fournit un bouton qui bascule entre la lecture et l'arrêt de la musique lorsqu'il est cliqué.
+
+
MusicButton(String, String, String) - Constructor for class MusicButton
+
+
Constructeur : Construit un MusicButton.
+
+
MusicPlayer - Class in Unnamed Package
+
+
Classe contenant un lecteur de musique simple qui permet de jouer et d'arrêter la musique.
+
+
MusicPlayer(String) - Constructor for class MusicPlayer
+
+
Construit un MusicPlayer avec le chemin de fichier spécifié.
+
+
+

P

+
+
parentGrid - Variable in class GSCase
+
 
+
play() - Method in class MusicPlayer
+
+
Démarre la lecture de la musique.
+
+
positionX - Variable in class GSCase
+
 
+
positionY - Variable in class GSCase
+
 
+
+

R

+
+
readFile() - Method in class GMImport
+
+
Lit les données à partir du fichier sélectionné et les stocke dans un tableau.
+
+
readFile() - Method in class GSImport
+
+
Lit les données à partir du fichier sélectionné et les stocke dans un tableau.
+
+
removeAllComponents(Window) - Static method in class Window
+
+
Supprime tous les composants de la fenêtre.
+
+
ResetGrid() - Method in class GMResetGrid
+
+
Cette méthode crée une grille vide.
+
+
RulesDialogManager - Class in Unnamed Package
+
+
RulesDialogManager gère l'affichage de la boîte de dialogue des règles.
+
+
RulesDialogManager() - Constructor for class RulesDialogManager
+
 
+
RulesSudoku - Class in Unnamed Package
+
+
RulesSudoku représente le panneau affichant les règles du Sudoku.
+
+
RulesSudoku() - Constructor for class RulesSudoku
+
+
Constructeur par défaut de RulesSudoku.
+
+
+

S

+
+
saveGridIfNeeded() - Method in class GMSaver
+
 
+
setActive(boolean) - Method in class GMCase
+
 
+
setCellValue(int) - Method in class GMCase
+
+
Définit la valeur de la case et met à jour son affichage.
+
+
setPageTitle(String) - Method in class Window
+
+
Définit le titre de la page actuelle.
+
+
setValue(int) - Method in class GSCase
+
+
Définit la valeur de la case.
+
+
setValuetoCase(int, int, int) - Method in class GSGrid
+
 
+
showDialog() - Method in interface DialogManager
+
 
+
showDialog() - Method in class GMHowToCreateDialogManager
+
+
Méthode pour afficher la boîte de dialogue avec les instructions de création de grille.
+
+
showDialog() - Method in class GSWin
+
+
Affiche la fenêtre de félicitations pour avoir résolu le Sudoku.
+
+
showDialog() - Method in class RulesDialogManager
+
+
Affiche la boîte de dialogue des règles du Sudoku.
+
+
showGame() - Method in class GSPlay
+
+
Méthode pour afficher la fenêtre de jeu.
+
+
solve() - Method in class GSGrid
+
 
+
stop() - Method in class MusicPlayer
+
+
Arrête la lecture de la musique.
+
+
+

T

+
+
test() - Method in class GSTest
+
+
Vérifie s'il y a des doublons dans la grille de Sudoku.
+
+
testActivity(int, int) - Method in class GSGrid
+
 
+
Title - Class in Unnamed Package
+
+
Title est une étiquette Swing personnalisée utilisée pour afficher un titre centré avec une police et une couleur spécifiées.
+
+
Title(String, Font, Color) - Constructor for class Title
+
+
Constructeur de Title.
+
+
+

U

+
+
updateDisplay() - Method in class GMCase
+
+
Met à jour l'affichage de la case avec la valeur actuelle.
+
+
updateValue(int) - Method in class GSCase
+
+
Met à jour la valeur de la case.
+
+
+

V

+
+
verificationColonne(int) - Method in class GSTest
+
+
Vérifie s'il y a des doublons dans une colonne spécifique de la grille.
+
+
verificationLigne(int) - Method in class GSTest
+
+
Vérifie s'il y a des doublons dans une ligne spécifique de la grille.
+
+
verificationRegion(int, int) - Method in class GSTest
+
+
Vérifie s'il y a des doublons dans une région spécifique de la grille.
+
+
+

W

+
+
whoIsActive_X() - Method in class GSGrid
+
 
+
whoIsActive_Y() - Method in class GSGrid
+
 
+
Window - Class in Unnamed Package
+
+
Window est une classe représentant la fenêtre principale de l'application Sudoku.
+
+
Window() - Constructor for class Window
+
+
Constructeur de la classe Window.
+
+
+A B C D E G H I K L M P R S T U V W 
All Classes and Interfaces|All Packages|Serialized Form
+
+
+ + diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..0a940fe --- /dev/null +++ b/doc/index.html @@ -0,0 +1,26 @@ + + + + +Generated Documentation (Untitled) + + + + + + + + + + + +
+ +

package-summary.html

+
+ + diff --git a/doc/legal/COPYRIGHT b/doc/legal/COPYRIGHT new file mode 100644 index 0000000..945e19c --- /dev/null +++ b/doc/legal/COPYRIGHT @@ -0,0 +1,69 @@ +Copyright © 1993, 2018, Oracle and/or its affiliates. +All rights reserved. + +This software and related documentation are provided under a +license agreement containing restrictions on use and +disclosure and are protected by intellectual property laws. +Except as expressly permitted in your license agreement or +allowed by law, you may not use, copy, reproduce, translate, +broadcast, modify, license, transmit, distribute, exhibit, +perform, publish, or display any part, in any form, or by +any means. Reverse engineering, disassembly, or +decompilation of this software, unless required by law for +interoperability, is prohibited. + +The information contained herein is subject to change +without notice and is not warranted to be error-free. If you +find any errors, please report them to us in writing. + +If this is software or related documentation that is +delivered to the U.S. Government or anyone licensing it on +behalf of the U.S. Government, the following notice is +applicable: + +U.S. GOVERNMENT END USERS: Oracle programs, including any +operating system, integrated software, any programs +installed on the hardware, and/or documentation, delivered +to U.S. Government end users are "commercial computer +software" pursuant to the applicable Federal Acquisition +Regulation and agency-specific supplemental regulations. As +such, use, duplication, disclosure, modification, and +adaptation of the programs, including any operating system, +integrated software, any programs installed on the hardware, +and/or documentation, shall be subject to license terms and +license restrictions applicable to the programs. No other +rights are granted to the U.S. Government. + +This software or hardware is developed for general use in a +variety of information management applications. It is not +developed or intended for use in any inherently dangerous +applications, including applications that may create a risk +of personal injury. If you use this software or hardware in +dangerous applications, then you shall be responsible to +take all appropriate fail-safe, backup, redundancy, and +other measures to ensure its safe use. Oracle Corporation +and its affiliates disclaim any liability for any damages +caused by use of this software or hardware in dangerous +applications. + +Oracle and Java are registered trademarks of Oracle and/or +its affiliates. Other names may be trademarks of their +respective owners. + +Intel and Intel Xeon are trademarks or registered trademarks +of Intel Corporation. All SPARC trademarks are used under +license and are trademarks or registered trademarks of SPARC +International, Inc. AMD, Opteron, the AMD logo, and the AMD +Opteron logo are trademarks or registered trademarks of +Advanced Micro Devices. UNIX is a registered trademark of +The Open Group. + +This software or hardware and documentation may provide +access to or information on content, products, and services +from third parties. Oracle Corporation and its affiliates +are not responsible for and expressly disclaim all +warranties of any kind with respect to third-party content, +products, and services. Oracle Corporation and its +affiliates will not be responsible for any loss, costs, or +damages incurred due to your access to or use of third-party +content, products, or services. diff --git a/doc/legal/LICENSE b/doc/legal/LICENSE new file mode 100644 index 0000000..ee860d3 --- /dev/null +++ b/doc/legal/LICENSE @@ -0,0 +1,118 @@ +Your use of this Program is governed by the No-Fee Terms and Conditions set +forth below, unless you have received this Program (alone or as part of another +Oracle product) under an Oracle license agreement (including but not limited to +the Oracle Master Agreement), in which case your use of this Program is governed +solely by such license agreement with Oracle. + +Oracle No-Fee Terms and Conditions (NFTC) + +Definitions + +"Oracle" refers to Oracle America, Inc. "You" and "Your" refers to (a) a company +or organization (each an "Entity") accessing the Programs, if use of the +Programs will be on behalf of such Entity; or (b) an individual accessing the +Programs, if use of the Programs will not be on behalf of an Entity. +"Program(s)" refers to Oracle software provided by Oracle pursuant to the +following terms and any updates, error corrections, and/or Program Documentation +provided by Oracle. "Program Documentation" refers to Program user manuals and +Program installation manuals, if any. If available, Program Documentation may be +delivered with the Programs and/or may be accessed from +www.oracle.com/documentation. "Separate Terms" refers to separate license terms +that are specified in the Program Documentation, readmes or notice files and +that apply to Separately Licensed Technology. "Separately Licensed Technology" +refers to Oracle or third party technology that is licensed under Separate Terms +and not under the terms of this license. + +Separately Licensed Technology + +Oracle may provide certain notices to You in Program Documentation, readmes or +notice files in connection with Oracle or third party technology provided as or +with the Programs. If specified in the Program Documentation, readmes or notice +files, such technology will be licensed to You under Separate Terms. Your rights +to use Separately Licensed Technology under Separate Terms are not restricted in +any way by the terms herein. For clarity, notwithstanding the existence of a +notice, third party technology that is not Separately Licensed Technology shall +be deemed part of the Programs licensed to You under the terms of this license. + +Source Code for Open Source Software + +For software that You receive from Oracle in binary form that is licensed under +an open source license that gives You the right to receive the source code for +that binary, You can obtain a copy of the applicable source code from +https://oss.oracle.com/sources/ or http://www.oracle.com/goto/opensourcecode. If +the source code for such software was not provided to You with the binary, You +can also receive a copy of the source code on physical media by submitting a +written request pursuant to the instructions in the "Written Offer for Source +Code" section of the latter website. + +------------------------------------------------------------------------------- + +The following license terms apply to those Programs that are not provided to You +under Separate Terms. + +License Rights and Restrictions + +Oracle grants to You, as a recipient of this Program, subject to the conditions +stated herein, a nonexclusive, nontransferable, limited license to: + +(a) internally use the unmodified Programs for the purposes of developing, +testing, prototyping and demonstrating your applications, and running the +Program for Your own personal use or internal business operations; and + +(b) redistribute the unmodified Program and Program Documentation, under the +terms of this License, provided that You do not charge Your licensees any fees +associated with such distribution or use of the Program, including, without +limitation, fees for products that include or are bundled with a copy of the +Program or for services that involve the use of the distributed Program. + +You may make copies of the Programs to the extent reasonably necessary for +exercising the license rights granted herein and for backup purposes. You are +granted the right to use the Programs to provide third party training in the use +of the Programs and associated Separately Licensed Technology only if there is +express authorization of such use by Oracle on the Program's download page or in +the Program Documentation. + +Your license is contingent on compliance with the following conditions: + +- You do not remove markings or notices of either Oracle's or a licensor's + proprietary rights from the Programs or Program Documentation; + +- You comply with all U.S. and applicable export control and economic sanctions + laws and regulations that govern Your use of the Programs (including technical + data); + +- You do not cause or permit reverse engineering, disassembly or decompilation + of the Programs (except as allowed by law) by You nor allow an associated + party to do so. + +For clarity, any source code that may be included in the distribution with the +Programs is provided solely for reference purposes and may not be modified, +unless such source code is under Separate Terms permitting modification. + +Ownership + +Oracle or its licensors retain all ownership and intellectual property rights to +the Programs. + +Information Collection + +The Programs' installation and/or auto-update processes, if any, may transmit a +limited amount of data to Oracle or its service provider about those processes +to help Oracle understand and optimize them. Oracle does not associate the data +with personally identifiable information. Refer to Oracle's Privacy Policy at +www.oracle.com/privacy. + +Disclaimer of Warranties; Limitation of Liability + +THE PROGRAMS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ORACLE FURTHER +DISCLAIMS ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION, ANY +IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR +NONINFRINGEMENT. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL ORACLE 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. diff --git a/doc/legal/jquery.md b/doc/legal/jquery.md new file mode 100644 index 0000000..d468b31 --- /dev/null +++ b/doc/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/doc/legal/jqueryUI.md b/doc/legal/jqueryUI.md new file mode 100644 index 0000000..8bda9d7 --- /dev/null +++ b/doc/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/doc/link.svg b/doc/link.svg new file mode 100644 index 0000000..dadef51 --- /dev/null +++ b/doc/link.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/doc/member-search-index.js b/doc/member-search-index.js new file mode 100644 index 0000000..6ced9bb --- /dev/null +++ b/doc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"","c":"GMHowToCreateController","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"GMImport","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"GMResetGrid","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"GMRules","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"GMSaverActionListener","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"GMUserInterfaceController","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"GSMenuController","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"GSPlayController","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"HomeButtonClickListener","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"","c":"HomeView","l":"addComponentsToWindow()"},{"p":"","c":"Button","l":"Button(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"","c":"Button","l":"Button(String, Color)","u":"%3Cinit%3E(java.lang.String,java.awt.Color)"},{"p":"","c":"Button","l":"Button(String, Dimension)","u":"%3Cinit%3E(java.lang.String,java.awt.Dimension)"},{"p":"","c":"Button","l":"Button(String, Dimension, Font)","u":"%3Cinit%3E(java.lang.String,java.awt.Dimension,java.awt.Font)"},{"p":"","c":"Button","l":"Button(String, Dimension, Font, Color)","u":"%3Cinit%3E(java.lang.String,java.awt.Dimension,java.awt.Font,java.awt.Color)"},{"p":"","c":"GMChecker","l":"checkGrid()"},{"p":"","c":"GMChecker","l":"checkGridMessage()"},{"p":"","c":"GSCase","l":"checkInputValue(int)"},{"p":"","c":"CongratulationsDialog","l":"CongratulationsDialog(long)","u":"%3Cinit%3E(long)"},{"p":"","c":"GSCase","l":"deactivateCell()"},{"p":"","c":"GSMenu","l":"enablePlayOptions()"},{"p":"","c":"GMGrid","l":"exportGrid()"},{"p":"","c":"GSCase","l":"getActivity()"},{"p":"","c":"GSMenu","l":"getAutoSolveButton()"},{"p":"","c":"GSPlay","l":"getBoutonValider()"},{"p":"","c":"GMCase","l":"getCellValue()"},{"p":"","c":"GSGrid","l":"getCellValue(int, int)","u":"getCellValue(int,int)"},{"p":"","c":"GMGrid","l":"getCellValueAt(int, int)","u":"getCellValueAt(int,int)"},{"p":"","c":"GSCase","l":"getDigitCount()"},{"p":"","c":"HomeView","l":"getFirstButton()"},{"p":"","c":"GSImport","l":"getImportedValues()"},{"p":"","c":"GSMenu","l":"getImporterButton()"},{"p":"","c":"GSMenu","l":"getJouerButton()"},{"p":"","c":"GSPlay","l":"getKeyValue(KeyEvent)","u":"getKeyValue(java.awt.event.KeyEvent)"},{"p":"","c":"GSPlay","l":"getMaGrille()"},{"p":"","c":"GSGrid","l":"getMode()"},{"p":"","c":"HomeView","l":"getSecondButton()"},{"p":"","c":"GSPlay","l":"getStartTime()"},{"p":"","c":"HomeView","l":"getThirdButton()"},{"p":"","c":"GSCase","l":"getValue()"},{"p":"","c":"GMCase","l":"GMCase(GMGrid, int, int)","u":"%3Cinit%3E(GMGrid,int,int)"},{"p":"","c":"GMCaseKeyListener","l":"GMCaseKeyListener(GMCase, GMGrid, int, int)","u":"%3Cinit%3E(GMCase,GMGrid,int,int)"},{"p":"","c":"GMCaseMouseListener","l":"GMCaseMouseListener()","u":"%3Cinit%3E()"},{"p":"","c":"GMChecker","l":"GMChecker(GMGrid)","u":"%3Cinit%3E(GMGrid)"},{"p":"","c":"GMGrid","l":"GMGrid()","u":"%3Cinit%3E()"},{"p":"","c":"GMHowToCreateController","l":"GMHowToCreateController()","u":"%3Cinit%3E()"},{"p":"","c":"GMHowToCreateDialogManager","l":"GMHowToCreateDialogManager()","u":"%3Cinit%3E()"},{"p":"","c":"GMHowToCreateView","l":"GMHowToCreateView()","u":"%3Cinit%3E()"},{"p":"","c":"GMImport","l":"GMImport(JFrame, GMGrid)","u":"%3Cinit%3E(javax.swing.JFrame,GMGrid)"},{"p":"","c":"GMResetGrid","l":"GMResetGrid(GMGrid)","u":"%3Cinit%3E(GMGrid)"},{"p":"","c":"GMRules","l":"GMRules()","u":"%3Cinit%3E()"},{"p":"","c":"GMSaver","l":"GMSaver(JFrame, GMGrid)","u":"%3Cinit%3E(javax.swing.JFrame,GMGrid)"},{"p":"","c":"GMSaverActionListener","l":"GMSaverActionListener(Window, GMGrid)","u":"%3Cinit%3E(Window,GMGrid)"},{"p":"","c":"GMUserInterfaceController","l":"GMUserInterfaceController(Window)","u":"%3Cinit%3E(Window)"},{"p":"","c":"GMUserInterfaceView","l":"GMUserInterfaceView(Window)","u":"%3Cinit%3E(Window)"},{"p":"","c":"GridMaker","l":"GridMaker()","u":"%3Cinit%3E()"},{"p":"","c":"GridSolver","l":"GridSolver()","u":"%3Cinit%3E()"},{"p":"","c":"GSCase","l":"GSCase(GSGrid, int, int)","u":"%3Cinit%3E(GSGrid,int,int)"},{"p":"","c":"GSCaseMouseListener","l":"GSCaseMouseListener(GSCase)","u":"%3Cinit%3E(GSCase)"},{"p":"","c":"GSGrid","l":"GSGrid(GSMenu)","u":"%3Cinit%3E(GSMenu)"},{"p":"","c":"GSImport","l":"GSImport(Window)","u":"%3Cinit%3E(Window)"},{"p":"","c":"GSMenu","l":"GSMenu(Window)","u":"%3Cinit%3E(Window)"},{"p":"","c":"GSMenuController","l":"GSMenuController(GSMenu, Window)","u":"%3Cinit%3E(GSMenu,Window)"},{"p":"","c":"GSPlay","l":"GSPlay(Window, GSGrid)","u":"%3Cinit%3E(Window,GSGrid)"},{"p":"","c":"GSPlayController","l":"GSPlayController(GSPlay)","u":"%3Cinit%3E(GSPlay)"},{"p":"","c":"GSSolver","l":"GSSolver(GSGrid, Window)","u":"%3Cinit%3E(GSGrid,Window)"},{"p":"","c":"GSTest","l":"GSTest(GSGrid)","u":"%3Cinit%3E(GSGrid)"},{"p":"","c":"GSWin","l":"GSWin(long)","u":"%3Cinit%3E(long)"},{"p":"","c":"HomeButtonClickListener","l":"HomeButtonClickListener(Window)","u":"%3Cinit%3E(Window)"},{"p":"","c":"HomeView","l":"HomeView(Window, String, String, String[])","u":"%3Cinit%3E(Window,java.lang.String,java.lang.String,java.lang.String[])"},{"p":"","c":"GMImport","l":"importGrid()"},{"p":"","c":"GSImport","l":"importGrid()"},{"p":"","c":"GMGrid","l":"importGrid(int[])"},{"p":"","c":"GSGrid","l":"importGrid(int[])"},{"p":"","c":"GSCase","l":"initializeCell()"},{"p":"","c":"GSCase","l":"insertValue(int)"},{"p":"","c":"GSImport","l":"isAccessible()"},{"p":"","c":"GMCase","l":"isActive"},{"p":"","c":"GSCase","l":"isActive"},{"p":"","c":"GSGrid","l":"isComplete()"},{"p":"","c":"GMChecker","l":"isCorrect()"},{"p":"","c":"GSPlay","l":"isGameOver()"},{"p":"","c":"GSCase","l":"isInitial"},{"p":"","c":"MusicPlayer","l":"isPlaying()"},{"p":"","c":"GSGrid","l":"isPlaying(Boolean)","u":"isPlaying(java.lang.Boolean)"},{"p":"","c":"GSTest","l":"isValid(int, int)","u":"isValid(int,int)"},{"p":"","c":"GMCaseKeyListener","l":"keyPressed(KeyEvent)","u":"keyPressed(java.awt.event.KeyEvent)"},{"p":"","c":"GSPlayController","l":"keyPressed(KeyEvent)","u":"keyPressed(java.awt.event.KeyEvent)"},{"p":"","c":"GMCaseKeyListener","l":"keyReleased(KeyEvent)","u":"keyReleased(java.awt.event.KeyEvent)"},{"p":"","c":"GSPlayController","l":"keyReleased(KeyEvent)","u":"keyReleased(java.awt.event.KeyEvent)"},{"p":"","c":"GMCaseKeyListener","l":"keyTyped(KeyEvent)","u":"keyTyped(java.awt.event.KeyEvent)"},{"p":"","c":"GSPlayController","l":"keyTyped(KeyEvent)","u":"keyTyped(java.awt.event.KeyEvent)"},{"p":"","c":"GSCase","l":"layoutSetup()"},{"p":"","c":"GridMaker","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"","c":"GridSolver","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"","c":"GMCaseMouseListener","l":"mouseClicked(MouseEvent)","u":"mouseClicked(java.awt.event.MouseEvent)"},{"p":"","c":"GSCaseMouseListener","l":"mouseClicked(MouseEvent)","u":"mouseClicked(java.awt.event.MouseEvent)"},{"p":"","c":"GSCaseMouseListener","l":"mouseEntered(MouseEvent)","u":"mouseEntered(java.awt.event.MouseEvent)"},{"p":"","c":"GSCaseMouseListener","l":"mouseExited(MouseEvent)","u":"mouseExited(java.awt.event.MouseEvent)"},{"p":"","c":"GSCaseMouseListener","l":"mousePressed(MouseEvent)","u":"mousePressed(java.awt.event.MouseEvent)"},{"p":"","c":"GSCaseMouseListener","l":"mouseReleased(MouseEvent)","u":"mouseReleased(java.awt.event.MouseEvent)"},{"p":"","c":"MusicButton","l":"MusicButton(String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.lang.String)"},{"p":"","c":"MusicPlayer","l":"MusicPlayer(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"","c":"GSCase","l":"parentGrid"},{"p":"","c":"MusicPlayer","l":"play()"},{"p":"","c":"GSCase","l":"positionX"},{"p":"","c":"GSCase","l":"positionY"},{"p":"","c":"GMImport","l":"readFile()"},{"p":"","c":"GSImport","l":"readFile()"},{"p":"","c":"Window","l":"removeAllComponents(Window)"},{"p":"","c":"GMResetGrid","l":"ResetGrid()"},{"p":"","c":"RulesDialogManager","l":"RulesDialogManager()","u":"%3Cinit%3E()"},{"p":"","c":"RulesSudoku","l":"RulesSudoku()","u":"%3Cinit%3E()"},{"p":"","c":"GMSaver","l":"saveGridIfNeeded()"},{"p":"","c":"GMCase","l":"setActive(boolean)"},{"p":"","c":"GMCase","l":"setCellValue(int)"},{"p":"","c":"Window","l":"setPageTitle(String)","u":"setPageTitle(java.lang.String)"},{"p":"","c":"GSCase","l":"setValue(int)"},{"p":"","c":"GSGrid","l":"setValuetoCase(int, int, int)","u":"setValuetoCase(int,int,int)"},{"p":"","c":"DialogManager","l":"showDialog()"},{"p":"","c":"GMHowToCreateDialogManager","l":"showDialog()"},{"p":"","c":"GSWin","l":"showDialog()"},{"p":"","c":"RulesDialogManager","l":"showDialog()"},{"p":"","c":"GSPlay","l":"showGame()"},{"p":"","c":"GSGrid","l":"solve()"},{"p":"","c":"MusicPlayer","l":"stop()"},{"p":"","c":"GSTest","l":"test()"},{"p":"","c":"GSGrid","l":"testActivity(int, int)","u":"testActivity(int,int)"},{"p":"","c":"Title","l":"Title(String, Font, Color)","u":"%3Cinit%3E(java.lang.String,java.awt.Font,java.awt.Color)"},{"p":"","c":"GMCase","l":"updateDisplay()"},{"p":"","c":"GSCase","l":"updateValue(int)"},{"p":"","c":"GSTest","l":"verificationColonne(int)"},{"p":"","c":"GSTest","l":"verificationLigne(int)"},{"p":"","c":"GSTest","l":"verificationRegion(int, int)","u":"verificationRegion(int,int)"},{"p":"","c":"GSGrid","l":"whoIsActive_X()"},{"p":"","c":"GSGrid","l":"whoIsActive_Y()"},{"p":"","c":"Window","l":"Window()","u":"%3Cinit%3E()"}];updateSearchResults(); \ No newline at end of file diff --git a/doc/module-search-index.js b/doc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/doc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/doc/overview-tree.html b/doc/overview-tree.html new file mode 100644 index 0000000..56cfa52 --- /dev/null +++ b/doc/overview-tree.html @@ -0,0 +1,157 @@ + + + + +Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+
+
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+
+
+ + diff --git a/doc/package-search-index.js b/doc/package-search-index.js new file mode 100644 index 0000000..747229e --- /dev/null +++ b/doc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"}];updateSearchResults(); \ No newline at end of file diff --git a/doc/package-summary.html b/doc/package-summary.html new file mode 100644 index 0000000..8201171 --- /dev/null +++ b/doc/package-summary.html @@ -0,0 +1,237 @@ + + + + +Unnamed Package + + + + + + + + + + + + + + +
+ +
+
+
+

Unnamed Package

+
+
+
+
    +
  • +
    +
    +
    +
    +
    Class
    +
    Description
    + +
    +
    Class containing custom settings for JButtons.
    +
    + +
    +
    CongratulationsDialog permet de crée une boîte de dialogue de félicitations pour afficher le temps de résolution d'un Sudoku.
    +
    + +
    +
    Interface containing definition to showDialog box.
    +
    + +
    +
    GMCase représente une case dans une grille éditable.
    +
    + +
    +
    GMCaseKeyListener est un KeyListener utilisé pour écouter les événements de touche dans GMCase.
    +
    + +
     
    + +
    +
    GMChecker est utilisée pour vérifier la cohérence de la grille.
    +
    + +
    +
    A custom JPanel class representing a Sudoku grid.
    +
    + +
    +
    La classe GMHowToCreateController est un contrôleur qui gère l'affichage de la fenêtre de création de grille.
    +
    + +
    +
    La classe GMHowToCreateDialogManager est un gestionnaire de dialogue qui affiche des instructions + sur la manière de créer une grille dans une boîte de dialogue.
    +
    + +
    +
    La classe GMHowToCreateView est une vue qui affiche les instructions pour créer une grille dans une boîte de dialogue.
    +
    + +
    +
    La classe GMImport est utilisée pour importer une grille à partir d'un fichier.
    +
    + +
    +
    La classe GMResetGrid sert à crée une nouvelle grille de 0.
    +
    + +
    +
    GMRules gère les actions liées aux règles du jeu.
    +
    + +
    +
    Cette classe implémente un gestionnaire d'enregistrement de grille de jeu.
    +
    + +
     
    + +
     
    + +
    +
    La classe GMUserInterfaceView représente la vue de l'interface utilisateur pour le créateur de grille.
    +
    + +
     
    + +
     
    + +
    +
    GSCase représente une case dans une grille de jeu.
    +
    + +
    +
    Classe GSCaseMouseListener implémente l'interface MouseListener + pour gérer les événements de la souris sur un GSCase.
    +
    + +
    +
    Cette classe représente la grille de jeu pour le Sudoku.
    +
    + +
    +
    La classe GSImport est utilisée pour importer une grille à partir d'un fichier.
    +
    + +
    +
    La classe GSMenu représente le menu jouer du jeu Sudoku.
    +
    + +
    +
    La classe GSMenuController gère les actions déclenchées par les boutons du menu.
    +
    + +
    +
    Classe GSPlay pour jouer au Sudoku.
    +
    + +
    +
    Le contrôleur pour le jeu de la grille.
    +
    + +
    +
    La classe GSSolver résout une grille de Sudoku et affiche le résultat dans une fenêtre.
    +
    + +
    +
    La classe GSTest contient les méthodes pour tester la validité d'une grille de Sudoku.
    +
    + +
    +
    GSWin gère l'affichage d'une fenêtre de félicitations pour avoir résolu le Sudoku.
    +
    + +
    +
    Listener pour les clics sur les boutons dans le menu.
    +
    + +
    +
    HomeView représente la vue de la page d'accueil de l'application Sudoku.
    +
    + +
    +
    Fournit un bouton qui bascule entre la lecture et l'arrêt de la musique lorsqu'il est cliqué.
    +
    + +
    +
    Classe contenant un lecteur de musique simple qui permet de jouer et d'arrêter la musique.
    +
    + +
    +
    RulesDialogManager gère l'affichage de la boîte de dialogue des règles.
    +
    + +
    +
    RulesSudoku représente le panneau affichant les règles du Sudoku.
    +
    + +
    +
    Title est une étiquette Swing personnalisée utilisée pour afficher un titre centré avec une police et une couleur spécifiées.
    +
    + +
    +
    Window est une classe représentant la fenêtre principale de l'application Sudoku.
    +
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/doc/package-tree.html b/doc/package-tree.html new file mode 100644 index 0000000..5c630f1 --- /dev/null +++ b/doc/package-tree.html @@ -0,0 +1,157 @@ + + + + + Class Hierarchy + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Unnamed Package

+
+
+

Class Hierarchy

+ +
+
+

Interface Hierarchy

+ +
+
+
+
+ + diff --git a/doc/resources/glass.png b/doc/resources/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f591f467a1c0c949bbc510156a0c1afb860a6e GIT binary patch literal 499 zcmVJoRsvExf%rEN>jUL}qZ_~k#FbE+Q;{`;0FZwVNX2n-^JoI; zP;4#$8DIy*Yk-P>VN(DUKmPse7mx+ExD4O|;?E5D0Z5($mjO3`*anwQU^s{ZDK#Lz zj>~{qyaIx5K!t%=G&2IJNzg!ChRpyLkO7}Ry!QaotAHAMpbB3AF(}|_f!G-oI|uK6 z`id_dumai5K%C3Y$;tKS_iqMPHg<*|-@e`liWLAggVM!zAP#@l;=c>S03;{#04Z~5 zN_+ss=Yg6*hTr59mzMwZ@+l~q!+?ft!fF66AXT#wWavHt30bZWFCK%!BNk}LN?0Hg z1VF_nfs`Lm^DjYZ1(1uD0u4CSIr)XAaqW6IT{!St5~1{i=i}zAy76p%_|w8rh@@c0Axr!ns=D-X+|*sY6!@wacG9%)Qn*O zl0sa739kT-&_?#oVxXF6tOnqTD)cZ}2vi$`ZU8RLAlo8=_z#*P3xI~i!lEh+Pdu-L zx{d*wgjtXbnGX_Yf@Tc7Q3YhLhPvc8noGJs2DA~1DySiA&6V{5JzFt ojAY1KXm~va;tU{v7C?Xj0BHw!K;2aXV*mgE07*qoM6N<$f;4TDA^-pY literal 0 HcmV?d00001 diff --git a/doc/script-dir/jquery-3.6.1.min.js b/doc/script-dir/jquery-3.6.1.min.js new file mode 100644 index 0000000..2c69bc9 --- /dev/null +++ b/doc/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/doc/script.js b/doc/script.js new file mode 100644 index 0000000..f1a0f25 --- /dev/null +++ b/doc/script.js @@ -0,0 +1,253 @@ +/* + * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +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.querySelector('div#' + tableId +' .summary-table') + .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/doc/search-page.js b/doc/search-page.js new file mode 100644 index 0000000..e4da097 --- /dev/null +++ b/doc/search-page.js @@ -0,0 +1,284 @@ +/* + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +"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 { + $("" + categories[key] + + " (" + count + ")").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"; + } + $("
    " + col1 + "
    ").appendTo(table); + if (category !== "modules") { + $("
    " + col2 + "
    ").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/doc/search.html b/doc/search.html new file mode 100644 index 0000000..2211552 --- /dev/null +++ b/doc/search.html @@ -0,0 +1,71 @@ + + + + +Search + + + + + + + + + + + + + + +
    + +
    +
    +

    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 +

    + +

    +
    +

    Loading search index...

    + +
    +
    +
    + + diff --git a/doc/search.js b/doc/search.js new file mode 100644 index 0000000..4ca9557 --- /dev/null +++ b/doc/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +"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(""); + }, + _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(" " + messages.linkIcon +""); + } + }); + $(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/doc/serialized-form.html b/doc/serialized-form.html new file mode 100644 index 0000000..867922b --- /dev/null +++ b/doc/serialized-form.html @@ -0,0 +1,468 @@ + + + + +Serialized Form + + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Serialized Form

    +
    +
      +
    • +
      +

      Package <Unnamed>

      +
        +
      • +
        +

        Class Button

        +
        class Button extends JButton implements Serializable
        +
        +
      • +
      • +
        +

        Class CongratulationsDialog

        +
        class CongratulationsDialog extends JOptionPane implements Serializable
        +
        +
      • +
      • +
        +

        Class GMCase

        +
        class GMCase extends JPanel implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            actionButton
            +
            JButton actionButton
            +
            Bouton pour afficher le texte
            +
          • +
          • +
            cellValue
            +
            int cellValue
            +
            Valeur actuelle de la case
            +
          • +
          • +
            col
            +
            int col
            +
          • +
          • +
            displayText
            +
            String displayText
            +
            Texte à afficher dans la case
            +
          • +
          • +
            grille
            +
            GMGrid grille
            +
          • +
          • +
            isActive
            +
            boolean isActive
            +
            Statut de la case
            +
          • +
          • +
            row
            +
            int row
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class GMGrid

        +
        class GMGrid extends JPanel implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            exportedGrid
            +
            int[] exportedGrid
            +
          • +
          • +
            gridCases
            +
            GMCase[][] gridCases
            +
          • +
          • +
            gridValues
            +
            int[][] gridValues
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class GMHowToCreateView

        +
        class GMHowToCreateView extends JPanel implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            BACKGROUND_COLOR
            +
            Color BACKGROUND_COLOR
            +
          • +
          • +
            FRAME_SIZE
            +
            Dimension FRAME_SIZE
            +
          • +
          • +
            TEXT
            +
            String TEXT
            +
          • +
          • +
            TEXT_COLOR
            +
            Color TEXT_COLOR
            +
          • +
          • +
            TEXT_FONT
            +
            Font TEXT_FONT
            +
          • +
          • +
            TITLE
            +
            String TITLE
            +
          • +
          • +
            TITLE_COLOR
            +
            Color TITLE_COLOR
            +
          • +
          • +
            TITLE_FONT
            +
            Font TITLE_FONT
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class GSCase

        +
        class GSCase extends JPanel implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            digitCount
            +
            byte digitCount
            +
          • +
          • +
            isActive
            +
            boolean isActive
            +
          • +
          • +
            isInitial
            +
            boolean isInitial
            +
          • +
          • +
            label
            +
            JLabel label
            +
          • +
          • +
            mouseListener
            +
            GSCaseMouseListener mouseListener
            +
          • +
          • +
            parentGrid
            +
            GSGrid parentGrid
            +
          • +
          • +
            positionX
            +
            int positionX
            +
          • +
          • +
            positionY
            +
            int positionY
            +
          • +
          • +
            primaryValue
            +
            int primaryValue
            +
          • +
          • +
            quaternaryValue
            +
            int quaternaryValue
            +
          • +
          • +
            secondaryValue
            +
            int secondaryValue
            +
          • +
          • +
            tertiaryValue
            +
            int tertiaryValue
            +
          • +
          • +
            text
            +
            String text
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class GSGrid

        +
        class GSGrid extends JLabel implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            activeX
            +
            int activeX
            +
          • +
          • +
            activeY
            +
            int activeY
            +
          • +
          • +
            cases
            +
            GSCase[][] cases
            +
          • +
          • +
            isPlaying
            +
            Boolean isPlaying
            +
          • +
          • +
            menu
            +
            GSMenu menu
            +
          • +
          • +
            tableauGrille
            +
            int[][] tableauGrille
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class HomeView

        +
        class HomeView extends JPanel implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            AUDIO_OFF
            +
            String AUDIO_OFF
            +
          • +
          • +
            AUDIO_ON
            +
            String AUDIO_ON
            +
          • +
          • +
            BACKGROUND_COLOR
            +
            Color BACKGROUND_COLOR
            +
          • +
          • +
            BUTTON_FONT
            +
            Font BUTTON_FONT
            +
          • +
          • +
            BUTTON_SIZE
            +
            Dimension BUTTON_SIZE
            +
          • +
          • +
            BUTTON_TEXTS
            +
            String[] BUTTON_TEXTS
            +
          • +
          • +
            buttonPanel
            +
            JPanel buttonPanel
            +
          • +
          • +
            buttonsList
            +
            List<Button> buttonsList
            +
          • +
          • +
            imageLabel
            +
            JLabel imageLabel
            +
          • +
          • +
            labels
            +
            Title[] labels
            +
          • +
          • +
            MUSIC_FILE
            +
            String MUSIC_FILE
            +
          • +
          • +
            musicButton
            +
            MusicButton musicButton
            +
          • +
          • +
            SUBTITLE_FONT
            +
            Font SUBTITLE_FONT
            +
          • +
          • +
            TITLE_FONT
            +
            Font TITLE_FONT
            +
          • +
          • +
            TITLE_TEXT_COLOR
            +
            Color TITLE_TEXT_COLOR
            +
          • +
          • +
            titlePanel
            +
            JPanel titlePanel
            +
          • +
          • +
            window
            +
            Window window
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class MusicButton

        +
        class MusicButton extends JButton implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            iconOff
            +
            ImageIcon iconOff
            +
            L'icône à afficher lorsque la musique est désactivée.
            +
          • +
          • +
            iconOn
            +
            ImageIcon iconOn
            +
            L'icône à afficher lorsque la musique est activée.
            +
          • +
          • +
            musicPlayer
            +
            MusicPlayer musicPlayer
            +
            Le lecteur de musique associé à ce bouton.
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class RulesSudoku

        +
        class RulesSudoku extends JPanel implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            BACKGROUND_COLOR
            +
            Color BACKGROUND_COLOR
            +
            Couleur d'arrière-plan du panneau
            +
          • +
          • +
            FRAME_SIZE
            +
            Dimension FRAME_SIZE
            +
            Taille de la fenêtre des règles
            +
          • +
          +
          +
        • +
        +
        +
      • +
      • +
        +

        Class Title

        +
        class Title extends JLabel implements Serializable
        +
        +
      • +
      • +
        +

        Class Window

        +
        class Window extends JFrame implements Serializable
        +
          +
        • +
          +

          Serialized Fields

          +
            +
          • +
            PAGE_TITLE
            +
            String PAGE_TITLE
            +
            Le titre de la page actuelle.
            +
          • +
          +
          +
        • +
        +
        +
      • +
      +
      +
    • +
    +
    +
    +
    + + diff --git a/doc/stylesheet.css b/doc/stylesheet.css new file mode 100644 index 0000000..f71489f --- /dev/null +++ b/doc/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/doc/tag-search-index.js b/doc/tag-search-index.js new file mode 100644 index 0000000..f38b3cb --- /dev/null +++ b/doc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults(); \ No newline at end of file diff --git a/doc/type-search-index.js b/doc/type-search-index.js new file mode 100644 index 0000000..6d22e86 --- /dev/null +++ b/doc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"","l":"Button"},{"p":"","l":"CongratulationsDialog"},{"p":"","l":"DialogManager"},{"p":"","l":"GMCase"},{"p":"","l":"GMCaseKeyListener"},{"p":"","l":"GMCaseMouseListener"},{"p":"","l":"GMChecker"},{"p":"","l":"GMGrid"},{"p":"","l":"GMHowToCreateController"},{"p":"","l":"GMHowToCreateDialogManager"},{"p":"","l":"GMHowToCreateView"},{"p":"","l":"GMImport"},{"p":"","l":"GMResetGrid"},{"p":"","l":"GMRules"},{"p":"","l":"GMSaver"},{"p":"","l":"GMSaverActionListener"},{"p":"","l":"GMUserInterfaceController"},{"p":"","l":"GMUserInterfaceView"},{"p":"","l":"GridMaker"},{"p":"","l":"GridSolver"},{"p":"","l":"GSCase"},{"p":"","l":"GSCaseMouseListener"},{"p":"","l":"GSGrid"},{"p":"","l":"GSImport"},{"p":"","l":"GSMenu"},{"p":"","l":"GSMenuController"},{"p":"","l":"GSPlay"},{"p":"","l":"GSPlayController"},{"p":"","l":"GSSolver"},{"p":"","l":"GSTest"},{"p":"","l":"GSWin"},{"p":"","l":"HomeButtonClickListener"},{"p":"","l":"HomeView"},{"p":"","l":"MusicButton"},{"p":"","l":"MusicPlayer"},{"p":"","l":"RulesDialogManager"},{"p":"","l":"RulesSudoku"},{"p":"","l":"Title"},{"p":"","l":"Window"}];updateSearchResults(); \ No newline at end of file diff --git a/src/GMChecker.java b/src/GMChecker.java index 5a7ef15..620cbbb 100755 --- a/src/GMChecker.java +++ b/src/GMChecker.java @@ -1,14 +1,16 @@ import javax.swing.*; /** - * La classe GMChecker est utilisée pour vérifier la cohérence de la grille. + * GMChecker est utilisée pour vérifier la cohérence de la grille. * Elle vérifie si les lignes, les colonnes et les régions de la grille respectent les règles du jeu. * @version 1.0 * @author Moncef STITI * @author Marco ORFAO */ public class GMChecker { - + /** + * La grille + */ private GMGrid grid; /** diff --git a/src/GMHomeButtonClickListener.java b/src/GMHomeButtonClickListener.java deleted file mode 100644 index f00c48b..0000000 --- a/src/GMHomeButtonClickListener.java +++ /dev/null @@ -1,46 +0,0 @@ -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -/** - * Listener for button clicks in the menu. - * It performs different actions based on the button clicked. - * @version 1.0 - * @author Moncef STITI - * @author Marco ORFAO - */ -class GMHomeButtonClickListener implements ActionListener { - private Window window; - private DialogManager rulesDialogManager; - - /** - * Constructs a ButtonClickListener with the specified window. - * @param window The window where the actions will be performed. - */ - public GMHomeButtonClickListener(Window window) { - this.window = window; - this.rulesDialogManager = new RulesDialogManager(); - } - - /** - * Performs an action based on the button clicked. - * @param e The ActionEvent representing the button click. - */ - @Override - public void actionPerformed(ActionEvent e) { - String buttonText = ((Button) e.getSource()).getText(); - switch (buttonText) { - case "Générer une grille": - Window.removeAllComponents(this.window); - GMUserInterfaceView vueCreationGrille = new GMUserInterfaceView(this.window); // Lancer le créateur de grille - break; - case "Règles": - rulesDialogManager.showDialog(); // Afficher les règles - break; - case "Quitter": - System.exit(0); // Quitter le programme - break; - default: - break; - } - } -} diff --git a/src/GSCase.java b/src/GSCase.java index 0601c6c..97194d7 100755 --- a/src/GSCase.java +++ b/src/GSCase.java @@ -17,7 +17,7 @@ public class GSCase extends JPanel { private String text = ""; // Texte affiché dans la case protected boolean isInitial = false; // Indique si la valeur de la case est initiale - protected boolean isActive; // Indique si la case est active + protected boolean isActive = true; // Indique si la case est active private JLabel label = new JLabel(); // Étiquette pour afficher le texte private byte digitCount = 0; // Compteur du nombre de valeurs insérées dans la case protected int positionX; // Position X de la case dans la grille diff --git a/src/GSHomeButtonClickListener.java b/src/GSHomeButtonClickListener.java deleted file mode 100644 index 661434c..0000000 --- a/src/GSHomeButtonClickListener.java +++ /dev/null @@ -1,48 +0,0 @@ -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -/** - * Listener pour les clics sur les boutons dans le menu. - * Il effectue différentes actions en fonction du bouton cliqué. - * @version 1.0 - * @author Moncef STITI - * @author Marco ORFAO - */ -class GSHomeButtonClickListener implements ActionListener { - private Window window; - private DialogManager rulesDialogManager; - private GSMenu menuJeu; - - /** - * Construit un ButtonClickListener avec la fenêtre spécifiée. - * @param window La fenêtre où les actions seront effectuées. - */ - public GSHomeButtonClickListener(Window window) { - this.window = window; - this.rulesDialogManager = new RulesDialogManager(); - } - - /** - * Effectue une action en fonction du bouton cliqué. - * @param e L'ActionEvent représentant le clic sur le bouton. - */ - @Override - public void actionPerformed(ActionEvent e) { - String buttonText = ((Button) e.getSource()).getText(); - switch (buttonText) { - case "Jouer": - Window.removeAllComponents(this.window); - this.menuJeu = new GSMenu(this.window); - GSMenuController menuController = new GSMenuController(this.menuJeu, this.window); - break; - case "Règles": - rulesDialogManager.showDialog(); // Afficher les règles - break; - case "Quitter": - System.exit(0); // Quitter le programme - break; - default: - break; - } - } -} diff --git a/src/GSHomeView.java b/src/GSHomeView.java deleted file mode 100644 index c9c04e7..0000000 --- a/src/GSHomeView.java +++ /dev/null @@ -1,103 +0,0 @@ -import javax.swing.*; -import java.awt.*; - -/** - * HomeView représente la vue de la page d'accueil de l'application Sudoku. - * Cette classe étend JPanel et affiche les éléments de la page d'accueil, y compris le titre, les boutons et les contrôles audio. - * Elle utilise également les classes Title, Button, et MusicButton. - * - * @version 1.0 - * @author Moncef STITI - * @author Marco ORFAO - */ -public class GSHomeView extends JPanel { - - // Constantes pour les chemins des icônes et des fichiers audio, ainsi que pour les dimensions et les couleurs - private final String AUDIO_ON = "img/iconeAudio.png"; - private final String AUDIO_OFF = "img/iconeAudioMuted.png"; - private final String MUSIC_FILE = "audio/musiqueDeFond.wav"; - private final Dimension BUTTON_SIZE = new Dimension(300, 60); - private final Color BACKGROUND_COLOR = new Color(54, 91, 109); - private final Color TITLE_TEXT_COLOR = Color.WHITE; - private final Font TITLE_FONT = new Font("Copperplate", Font.BOLD, 75); - private final Font SUBTITLE_FONT = new Font("Copperplate", Font.PLAIN, 24); - private final Font BUTTON_FONT = new Font("Copperplate", Font.BOLD, 24); - private final String[] BUTTON_TEXTS = {"Jouer", "Règles", "Quitter"}; - - // Tableau de titres pour le titre principal et le sous-titre - private final Title[] labels = { - new Title("Sudoku Game", TITLE_FONT, TITLE_TEXT_COLOR), - new Title("Par Moncef & Marco", SUBTITLE_FONT, TITLE_TEXT_COLOR) - }; - - private MusicButton musicButton; // Bouton pour contrôler la musique - private final Window window; // Fenêtre parente - private JPanel titlePanel; // Panneau pour le titre - private JPanel buttonPanel; // Panneau pour les boutons - private JLabel imageLabel; // Étiquette pour l'image - - /** - * Constructeur de la classe HomeView. - * Initialise la fenêtre parente et crée les composants de la page d'accueil. - * @param window La fenêtre parente. - */ - public GSHomeView(Window window) { - this.window = window; - createComponents(); - addComponentsToWindow(); - } - - /** - * Crée les composants de la page d'accueil, y compris les panneaux de titre et de boutons. - */ - private void createComponents() { - titlePanel = new JPanel(); - buttonPanel = new JPanel(); - ImageIcon iconeSudoku = new ImageIcon("img/sudoku.png"); - imageLabel = new JLabel(iconeSudoku); - - // Configuration du panneau de titre - GridLayout titleLayout = new GridLayout(2, 1); - titlePanel.setLayout(titleLayout); - titlePanel.setBackground(BACKGROUND_COLOR); - // Utilisation de la classe Title pour le titre et le sous-titre - for (Title label : labels) { - titlePanel.add(label); - } - - // Configuration du panneau de boutons - GridLayout buttonLayout = new GridLayout(BUTTON_TEXTS.length, 1, 0, 10); - buttonPanel.setLayout(buttonLayout); - buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); - buttonPanel.setBackground(BACKGROUND_COLOR); - GSHomeButtonClickListener listenerButton = new GSHomeButtonClickListener(window); - for (String text : BUTTON_TEXTS) { - Button button = new Button(text, BUTTON_SIZE, BUTTON_FONT, Color.white); - button.addActionListener(listenerButton); - buttonPanel.add(button); - } - - musicButton = new MusicButton(AUDIO_ON, AUDIO_OFF, MUSIC_FILE); // Bouton pour contrôler la musique - } - - /** - * Ajoute les composants créés à la fenêtre parente. - */ - public void addComponentsToWindow() { - BorderLayout layout = new BorderLayout(); - window.getContentPane().setLayout(layout); - window.add(titlePanel, BorderLayout.NORTH); - window.add(buttonPanel, BorderLayout.WEST); - window.add(imageLabel, BorderLayout.EAST); - window.setPageTitle("Menu principal"); // Définit le titre de la page dans la fenêtre - - FlowLayout controlPanelLayout = new FlowLayout(FlowLayout.RIGHT); - JPanel controlPanel = new JPanel(controlPanelLayout); // Panneau pour les contrôles audio - controlPanel.setBackground(BACKGROUND_COLOR); - controlPanel.add(musicButton); // Ajoute le bouton de contrôle audio - window.add(controlPanel, BorderLayout.SOUTH); // Ajoute le panneau de contrôles à la fenêtre - - window.pack(); // Ajuste la taille de la fenêtre pour s'adapter à son contenu - window.setVisible(true); // Rend la fenêtre visible - } -} diff --git a/src/GSImport.java b/src/GSImport.java index e6cc767..866a97d 100755 --- a/src/GSImport.java +++ b/src/GSImport.java @@ -9,10 +9,25 @@ import java.io.*; * @author Marco ORFAO */ public class GSImport { - + + /** + * Fenêtre précédente + */ private Window previousFrame; + + /** + * Indique si le fichier est accessible + */ private boolean accessible; + + /** + * Fichier sélectionné pour l'importation + */ private File file; + + /** + * Tableau des valeurs importées + */ private int[] importedValues = new int[9]; /** @@ -69,14 +84,17 @@ public class GSImport { } } - + /** + * Permet de savoir si le fichier est accessible + * @return le booleen accessible + */ public boolean isAccessible() { return accessible; } /** - * Gets the array of imported values. - * @return the array of imported values + * Récupère le tableau des valeurs importées. + * @return le tableau des valeurs importées */ public int[] getImportedValues() { return importedValues; diff --git a/src/GSMenu.java b/src/GSMenu.java index 6f5fe59..21bb59e 100755 --- a/src/GSMenu.java +++ b/src/GSMenu.java @@ -8,14 +8,40 @@ import java.awt.*; * @author Marco ORFAO */ public class GSMenu { + /** + * Fenêtre dans laquelle le menu est affiché + */ + private Window window; - private Window window; // Fenêtre dans laquelle le menu est affiché - private JPanel titlePanel; // Panneau pour le titre - private JPanel buttonPanel; // Panneau pour les boutons - private Title titleLabel; // Étiquette pour le titre - private Button importerButton; // Bouton pour importer une grille - private Button jouerButton; // Bouton pour commencer à jouer - private Button autoSolveButton; // Bouton pour résoudre automatiquement la grille + /** + * Panneau pour le titre + */ + private JPanel titlePanel; + + /** + * Panneau pour les boutons + */ + private JPanel buttonPanel; + + /** + * Étiquette pour le titre + */ + private Title titleLabel; + + /** + * Bouton pour importer une grille + */ + private Button importerButton; + + /** + * Bouton pour commencer à jouer + */ + private Button jouerButton; + + /** + * Bouton pour résoudre automatiquement la grille + */ + private Button autoSolveButton; /** * Constructeur de la classe GSMenu. @@ -73,15 +99,26 @@ public class GSMenu { this.autoSolveButton.setEnabled(true); // Active le bouton "Résolution automatique" } - // Méthodes getters pour les composants + /** + * Renvoie le bouton pour l'importation. + * @return Le bouton pour l'importation. + */ public Button getImporterButton() { return this.importerButton; } + /** + * Renvoie le bouton pour démarrer le jeu. + * @return Le bouton pour démarrer le jeu. + */ public Button getJouerButton() { return this.jouerButton; } - + + /** + * Renvoie le bouton pour résoudre automatiquement la grille. + * @return Le bouton pour résoudre automatiquement la grille. + */ public Button getAutoSolveButton() { return this.autoSolveButton; } diff --git a/src/GSMenuController.java b/src/GSMenuController.java index 79c69ab..fab07cb 100644 --- a/src/GSMenuController.java +++ b/src/GSMenuController.java @@ -8,9 +8,20 @@ import java.awt.event.ActionListener; * @author Marco ORFAO */ public class GSMenuController implements ActionListener { - private GSMenu gsMenu; // Menu Sudoku - private Window mainWindow; // Fenêtre principale - private GSGrid sudokuGrid; // Grille de Sudoku + /** + * Menu Sudoku + */ + private GSMenu gsMenu; + + /** + * Fenêtre principale + */ + private Window mainWindow; + + /** + * Grille de Sudoku + */ + private GSGrid sudokuGrid; /** * Constructeur de la classe GSMenuController. diff --git a/src/GSPlay.java b/src/GSPlay.java index 2fc8582..f3d659a 100755 --- a/src/GSPlay.java +++ b/src/GSPlay.java @@ -9,26 +9,61 @@ import java.awt.event.*; */ public class GSPlay { - // Valeur représentant une case vide + /** + * Valeur représentant une case vide + */ private static final int EMPTY_VALUE = 0; - // Codes des touches numériques du pavé numérique + /** + * Codes des touches numériques du pavé numérique + */ private static final int[] NUM_KEYS = {KeyEvent.VK_NUMPAD1, KeyEvent.VK_NUMPAD2, KeyEvent.VK_NUMPAD3, KeyEvent.VK_NUMPAD4, KeyEvent.VK_NUMPAD5, KeyEvent.VK_NUMPAD6, KeyEvent.VK_NUMPAD7, KeyEvent.VK_NUMPAD8, KeyEvent.VK_NUMPAD9}; - // Codes des touches numériques du clavier + /** + * Codes des touches numériques du clavier + */ private static final int[] KEY_NUMBERS = {KeyEvent.VK_1, KeyEvent.VK_2, KeyEvent.VK_3, KeyEvent.VK_4, KeyEvent.VK_5, KeyEvent.VK_6, KeyEvent.VK_7, KeyEvent.VK_8, KeyEvent.VK_9}; - // Code de la touche de suppression + /** + * Code de la touche de suppression + */ private static final int DELETE_KEY = KeyEvent.VK_BACK_SPACE; + /** + * Container pour le contenu de la fenêtre + */ private Container content; + + /** + * Grille de Sudoku + */ private GSGrid ma_Grille; - private Button boutonValider = new Button("Valider",Color.lightGray); + + /** + * Bouton "Valider" pour valider la grille + */ + private Button boutonValider; + + /** + * Temps de démarrage du jeu + */ private long startTime; + + /** + * Temps écoulé depuis le démarrage du jeu + */ private long vraiTime; + + /** + * Fenêtre de jeu + */ private Window gameplay; + + /** + * Contrôleur pour gérer les événements de jeu + */ private GSPlayController gsPlayController; /** @@ -40,6 +75,7 @@ public class GSPlay { this.ma_Grille = grille; this.gameplay = window; this.gsPlayController = new GSPlayController(this); + this.boutonValider = new Button("Valider",Color.lightGray); } /** @@ -98,7 +134,7 @@ public class GSPlay { } /** - * Méthode pour obtenir la grille + * Méthode pour obtenir la grille jouer * @return la grille */ public GSGrid getMaGrille() { diff --git a/src/GSPlayController.java b/src/GSPlayController.java index de44857..73fa4a5 100644 --- a/src/GSPlayController.java +++ b/src/GSPlayController.java @@ -10,6 +10,9 @@ import java.awt.event.KeyListener; * @author Marco ORFAO */ public class GSPlayController implements KeyListener, ActionListener { + /** + * Le jeu de la grille + */ private GSPlay gsPlay; /** @@ -56,6 +59,7 @@ public class GSPlayController implements KeyListener, ActionListener { */ @Override public void keyReleased(KeyEvent e) { + // Non utilisé } /** diff --git a/src/GSSolver.java b/src/GSSolver.java index e74be62..ea6f5c9 100755 --- a/src/GSSolver.java +++ b/src/GSSolver.java @@ -8,11 +8,25 @@ import java.awt.*; * @author Marco ORFAO */ public class GSSolver { + /** + * Grille de Sudoku à résoudre + */ + private GSGrid grid; - private GSGrid grid; // Grille de Sudoku à résoudre - private Window window; // Fenêtre dans laquelle afficher la résolution - private JLabel label = new JLabel("Resolution en cours..."); // Étiquette pour afficher le statut de la résolution - private long startTime; // Temps de début de la résolution + /** + * Fenêtre dans laquelle afficher la résolution + */ + private Window window; + + /** + * Étiquette pour afficher le statut de la résolution + */ + private JLabel label = new JLabel("Resolution en cours..."); + + /** + * Temps de début de la résolution + */ + private long startTime; /** * Constructeur de la classe GSSolver. diff --git a/src/GSTest.java b/src/GSTest.java index d506064..1b8fbbb 100755 --- a/src/GSTest.java +++ b/src/GSTest.java @@ -5,8 +5,10 @@ * @author Marco ORFAO */ public class GSTest { - - private GSGrid ma_Grille; + /** + * La grille + */ + private GSGrid ma_Grille; /** * Constructeur de la classe GSTest. diff --git a/src/GSWin.java b/src/GSWin.java index d1b207b..ebd4cac 100755 --- a/src/GSWin.java +++ b/src/GSWin.java @@ -1,12 +1,14 @@ /** - * La classe GSWin gère l'affichage d'une fenêtre de félicitations pour avoir résolu le Sudoku. + * GSWin gère l'affichage d'une fenêtre de félicitations pour avoir résolu le Sudoku. * @version 1.0 * @author Moncef STITI * @author Marco ORFAO */ public class GSWin implements DialogManager { - - private long solvingTime; // Temps de résolution du Sudoku + /** + * Temps de résolution du Sudoku + */ + private long solvingTime; /** * Constructeur de la classe GSWin. diff --git a/src/GridMaker.java b/src/GridMaker.java index f28266c..2c91938 100644 --- a/src/GridMaker.java +++ b/src/GridMaker.java @@ -1,6 +1,7 @@ public class GridMaker{ public static void main(String[] args) { Window fenetre = new Window(); // Création d'une fenêtre - GMHomeView menu = new GMHomeView(fenetre); // Création du menu sur la fenêtre + String[] gmButtonTexts = {"Générer une grille", "Règles", "Quitter"}; // Texte des boutons pour le menu du GridMaker + HomeView gmHomeView = new HomeView(fenetre, "Sudoku Grid Creator", "Par Moncef & Marco", gmButtonTexts); } } \ No newline at end of file diff --git a/src/GridSolver.java b/src/GridSolver.java index e4935ad..14ddff5 100644 --- a/src/GridSolver.java +++ b/src/GridSolver.java @@ -1,6 +1,7 @@ public class GridSolver{ public static void main(String[] args) { Window fenetre = new Window(); // Création d'une fenêtre - GSHomeView menu = new GSHomeView(fenetre); // Création du menu sur la fenêtre + String[] gsButtonTexts = {"Jouer", "Règles", "Quitter"}; // Texte des boutons pour le menu du GridSolver + HomeView gsHomeView = new HomeView(fenetre, "Sudoku Game", "Par Moncef & Marco", gsButtonTexts); } } \ No newline at end of file diff --git a/src/HomeButtonClickListener.java b/src/HomeButtonClickListener.java new file mode 100644 index 0000000..3916b5a --- /dev/null +++ b/src/HomeButtonClickListener.java @@ -0,0 +1,53 @@ +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * Listener pour les clics sur les boutons dans le menu. + * Il effectue différentes actions en fonction du bouton cliqué. + * @version 1.0 + * @author Moncef STITI + * @author Marco ORFAO + */ + public class HomeButtonClickListener implements ActionListener { + /** + * La fenêtre + */ + private Window window; + + /** + * Construit un ButtonClickListener avec la fenêtre spécifiée. + * @param window La fenêtre où les actions seront effectuées. + */ + public HomeButtonClickListener(Window window) { + this.window = window; + } + + /** + * Effectue une action en fonction du bouton cliqué. + * @param e L'ActionEvent représentant le clic sur le bouton. + */ + @Override + public void actionPerformed(ActionEvent e) { + String buttonText = ((Button) e.getSource()).getText(); + switch (buttonText) { + case "Jouer": + Window.removeAllComponents(this.window); + GSMenu menuJeu = new GSMenu(this.window); + GSMenuController menuController = new GSMenuController(menuJeu, this.window); + break; + case "Générer une grille": + Window.removeAllComponents(this.window); + GMUserInterfaceView vueCreationGrille = new GMUserInterfaceView(this.window); + break; + case "Règles": + DialogManager rulesDialogManager = new RulesDialogManager(); + rulesDialogManager.showDialog(); // Afficher les règles + break; + case "Quitter": + System.exit(0); // Quitter le programme + break; + default: + break; + } + } + } \ No newline at end of file diff --git a/src/GMHomeView.java b/src/HomeView.java similarity index 72% rename from src/GMHomeView.java rename to src/HomeView.java index 0981c72..ba831bd 100644 --- a/src/GMHomeView.java +++ b/src/HomeView.java @@ -1,5 +1,7 @@ import javax.swing.*; import java.awt.*; +import java.util.ArrayList; +import java.util.List; /** * HomeView représente la vue de la page d'accueil de l'application Sudoku. @@ -10,7 +12,7 @@ import java.awt.*; * @author Moncef STITI * @author Marco ORFAO */ -public class GMHomeView extends JPanel { +public class HomeView extends JPanel { // Constantes pour les chemins des icônes et des fichiers audio, ainsi que pour les dimensions et les couleurs private final String AUDIO_ON = "img/iconeAudio.png"; @@ -22,27 +24,31 @@ public class GMHomeView extends JPanel { private final Font TITLE_FONT = new Font("Copperplate", Font.BOLD, 75); private final Font SUBTITLE_FONT = new Font("Copperplate", Font.PLAIN, 24); private final Font BUTTON_FONT = new Font("Copperplate", Font.BOLD, 24); - private final String[] BUTTON_TEXTS = {"Générer une grille", "Règles", "Quitter"}; - - // Tableau de titres pour le titre principal et le sous-titre - private final Title[] labels = { - new Title("Sudoku Grid Creator", TITLE_FONT, TITLE_TEXT_COLOR), - new Title("Par Moncef & Marco", SUBTITLE_FONT, TITLE_TEXT_COLOR) - }; + private final String[] BUTTON_TEXTS; // Textes des boutons + private final Title[] labels; // Tableau de titres pour le titre principal et le sous-titre private MusicButton musicButton; // Bouton pour contrôler la musique private final Window window; // Fenêtre parente private JPanel titlePanel; // Panneau pour le titre private JPanel buttonPanel; // Panneau pour les boutons private JLabel imageLabel; // Étiquette pour l'image + private List