diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java index 94d5753..d230a0f 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/main/Main.java @@ -1,4 +1,6 @@ package de.hs_mannheim.informatik.chess.main; +import java.io.IOException; + import de.hs_mannheim.informatik.chess.controller.Controller; import de.hs_mannheim.informatik.chess.model.ChessEngine; import de.hs_mannheim.informatik.chess.view.GameGui; diff --git a/schach/src/main/java/de/hs_mannheim/informatik/chess/view/MainGui.java b/schach/src/main/java/de/hs_mannheim/informatik/chess/view/MainGui.java index f770a47..6fe0ec2 100644 --- a/schach/src/main/java/de/hs_mannheim/informatik/chess/view/MainGui.java +++ b/schach/src/main/java/de/hs_mannheim/informatik/chess/view/MainGui.java @@ -1,12 +1,25 @@ package de.hs_mannheim.informatik.chess.view; +import de.hs_mannheim.informatik.chess.model.ChessEngine; +import com.github.bhlangonijr.chesslib.game.Game; +import java.util.List; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.awt.Cursor; + +import java.io.IOException; -import java.awt.*; import javax.swing.*; public class MainGui { private JFrame frame; private Runnable onStartGame; + private ChessEngine engine = new ChessEngine(); public MainGui(Runnable onStartGame) { this.onStartGame = onStartGame; @@ -74,6 +87,54 @@ public class MainGui { frame.dispose(); // Hauptmenü schließen onStartGame.run(); // **Ruft den Callback auf** }); + + btnLoadGame.addActionListener(e -> { + JFileChooser chooser = new JFileChooser(); + int result = chooser.showOpenDialog(frame); + if (result == JFileChooser.APPROVE_OPTION) { + String path = chooser.getSelectedFile().getAbsolutePath(); + try { + List games = engine.loadGamesFromPgn(path); + zeigeGeladeneSpiele(games); + } catch (IOException ex) { + ex.printStackTrace(); + JOptionPane.showMessageDialog(frame, "Fehler beim Laden der PGN-Datei:\n" + ex.getMessage()); + } + } + }); + + } + + private void zeigeGeladeneSpiele(List games) { + JFrame gameListFrame = new JFrame("Geladene Partien"); + gameListFrame.setSize(600, 800); + gameListFrame.setLocationRelativeTo(null); + + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + JScrollPane scrollPane = new JScrollPane(panel); + + int index = 1; + for (Game game : games) { + String white = game.getWhitePlayer().getName(); + String black = game.getBlackPlayer().getName(); + String title = "Spiel " + index++ + ": " + white + " vs. " + black; + + JButton gameButton = new JButton(title); + gameButton.setAlignmentX(Component.CENTER_ALIGNMENT); + gameButton.addActionListener(e -> { + System.out.println("Ausgewähltes Spiel:\n" + game); + JOptionPane.showMessageDialog(gameListFrame, + "Noch keine Replay-Ansicht.\n" + + "Spiel: " + white + " vs. " + black); + }); + + panel.add(Box.createRigidArea(new Dimension(0, 10))); + panel.add(gameButton); + } + + gameListFrame.add(scrollPane); + gameListFrame.setVisible(true); } // Helper für Button Styling