@startuml class fr.monkhanny.dorfromantik.gui.TutorialPanel { - List steps - int currentStepIndex - Title title - JLabel stepText - JLabel stepImage - JButton nextButton - JButton prevButton - MainMenu mainMenu - JFrame tutorialFrame + <> TutorialPanel(List,MainMenu,JFrame) # void paintComponent(Graphics) - void updateStepDisplay() - void styleButton(JButton) - void showPreviousStep() - void showNextStep() - JButton createReturnButtonWithIcon() - String addLineBreaks(String,int) } class fr.monkhanny.dorfromantik.gui.BarChartPanel { - List groupAverages - int highlightedGroup + <> BarChartPanel(List,int,JPanel) # void paintComponent(Graphics) } class fr.monkhanny.dorfromantik.gui.SettingsPanel { - MainMenu mainMenu - JFrame settingsFrame - JButton returnButton + <> SettingsPanel(MainMenu,JFrame) - void initializeSettingsFrame() - void setupBackground() - void setupTopPanel() + void setReturnButtonVisible(boolean) # void paintComponent(Graphics) - void setupMainPanel() - JPanel createSoundPanel(String,JSlider,ChangeListener,MuteCheckBoxListener) - JPanel createAutoFocusPanel() - JPanel createSliderPanel(JSlider) - GridBagConstraints createGridBagConstraints(int,int,int) - JButton createReturnButtonWithIcon() } class fr.monkhanny.dorfromantik.gui.LeaderboardWorldWide { + <> LeaderboardWorldWide() + void refresh() - JPanel createPlayerPanel(String,int,int) - ImageIcon resizeIcon(String,int,int) - JPanel createTopPlayerPanel(String,int,String,boolean) } class fr.monkhanny.dorfromantik.gui.ButtonHoverAnimator { - JButton button - Color originalColor - {static} Font originalFont - Timer animationTimer + <> ButtonHoverAnimator(JButton) + void startAnimation(boolean) + {static} void updateOriginalFont(float) } class fr.monkhanny.dorfromantik.gui.MainMenu { - Title titleLabel - ButtonPanel buttonPanel - JPanel leaderboardContainer - Leaderboard currentLeaderboard + <> MainMenu() + Title getTitleLabel() + ButtonPanel getButtonPanel() } class fr.monkhanny.dorfromantik.gui.GameOver { - JFrame gameFrame + <> GameOver(JFrame,int,Database,MainMenu) - boolean scoreInGroup(List,int,int,int) - String getFunnyQuote(int) } class fr.monkhanny.dorfromantik.gui.LeaderboardByTier { + <> LeaderboardByTier() + void refresh() } class fr.monkhanny.dorfromantik.gui.Reward { - String name - String description - boolean isUnlocked - ImageIcon icon + <> Reward(String,String,boolean,ImageIcon) + String getName() + String getDescription() + boolean isUnlocked() + ImageIcon getIcon() } class fr.monkhanny.dorfromantik.gui.LeaderboardBarChartPanel { - int totalPlayers - int rank + <> LeaderboardBarChartPanel(int,int) # void paintComponent(Graphics) } class fr.monkhanny.dorfromantik.gui.Step { - String title - String text - String imagePath + <> Step(String,String,String) + String getText() + String getImagePath() + String getTitle() } class fr.monkhanny.dorfromantik.gui.ButtonPanel { - JButton newGameButton - JButton howToPlayButton - JButton settingsButton - JButton exitButton + <> ButtonPanel(float) + JButton getNewGameButton() + JButton getHowToPlayButton() + JButton getSettingsButton() + JButton getExitButton() + List getButtons() + void updateButtonFonts(int) } class fr.monkhanny.dorfromantik.gui.GameControlsMenu { - boolean isVisible - {static} String ICON_PATH + <> GameControlsMenu() - JPanel createPanel(String,String) - JPanel createPanelWithMultipleIcons(String,String) - ImageIcon loadIcon(String) + void toggleVisibility() + void setControlsMenuVisible(boolean) } abstract class fr.monkhanny.dorfromantik.gui.Leaderboard { + <> Leaderboard() + {abstract}void refresh() } class fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel { - JLabel titleLabel - JTextField seedField - JButton startButton - List seriesButtons - Database database - JPanel modePanel - JButton prevButton - JButton nextButton - int currentPage - int itemsPerPage - JLabel pageLabel - JSpinner startDateSpinner - JSpinner endDateSpinner - ActionListener buttonListener - JCheckBox developerSeriesCheckBox + <> GameModeSelectionPanel(ActionListener,JFrame,MainMenu) + void loadSeriesForCurrentPage() - void updatePageLabelAndButtons(int,int) - JPanel createDateFilterPanel() - void stylizeDateSpinner(JSpinner) - JPanel createPaginationPanel() - JPanel createTopPanel(JFrame,MainMenu) - JButton createReturnButtonWithIcon(JFrame,MainMenu) - JPanel createMainPanel() - GridBagConstraints createGridBagConstraints(int,int,int) - JButton createGameModeButton(String,ActionListener) + int getCurrentPage() + void setCurrentPage(int) - JPanel createSeedPanel(ActionListener) + String getStringSeed() + long getLongSeed() } fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.TutorialPanel fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.BarChartPanel fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.SettingsPanel fr.monkhanny.dorfromantik.gui.Leaderboard <|-- fr.monkhanny.dorfromantik.gui.LeaderboardWorldWide fr.monkhanny.dorfromantik.gui.JFrame <|-- fr.monkhanny.dorfromantik.gui.MainMenu fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.GameOver fr.monkhanny.dorfromantik.gui.Leaderboard <|-- fr.monkhanny.dorfromantik.gui.LeaderboardByTier fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.LeaderboardBarChartPanel fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.ButtonPanel fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.GameControlsMenu fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.Leaderboard fr.monkhanny.dorfromantik.gui.JPanel <|-- fr.monkhanny.dorfromantik.gui.GameModeSelectionPanel @enduml