diff --git a/src/main/java/de/mannheim/th/chess/controller/ButtonMovePieceListener.java b/src/main/java/de/mannheim/th/chess/controller/ButtonMovePieceListener.java index 35322cf..d22e7fd 100644 --- a/src/main/java/de/mannheim/th/chess/controller/ButtonMovePieceListener.java +++ b/src/main/java/de/mannheim/th/chess/controller/ButtonMovePieceListener.java @@ -30,12 +30,14 @@ public class ButtonMovePieceListener implements ActionListener { if (this.game.isDraw()) { this.game.stopClock(); this.sf.setBoardMode(BoardMode.finished); - this.sf.setViewPointer(this.game.getMoveList().size() - 1); + this.game.setViewPointer(this.game.getMoveList().size() - 1); + this.sf.enableControlPanelButtons(); this.sf.showDraw(); } else if (this.game.isMate()) { this.game.stopClock(); this.sf.setBoardMode(BoardMode.finished); - this.sf.setViewPointer(this.game.getMoveList().size() - 1); + this.game.setViewPointer(this.game.getMoveList().size() - 1); + this.sf.enableControlPanelButtons(); this.sf.showWin(game.getActivePlayer()); } else { this.sf.setBoardMode(BoardMode.normal); diff --git a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewBackListener.java b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewBackListener.java index 8d64c5c..b4850c3 100644 --- a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewBackListener.java +++ b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewBackListener.java @@ -4,18 +4,26 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import de.mannheim.th.chess.domain.Game; +import de.mannheim.th.chess.ui.SpielFrame; public class ButtonViewBackListener implements ActionListener { private Game game; + private SpielFrame sf; - public ButtonViewBackListener(Game game) { + public ButtonViewBackListener(Game game, SpielFrame sf) { this.game = game; + this.sf = sf; } @Override public void actionPerformed(ActionEvent e) { - this.game.setViewPointer(this.game.getViewPointer() - 1); - // TODO Auto-generated method stub + if (this.game.getViewPointer() > 0) { + this.game.setViewPointer(this.game.getViewPointer() - 1); + this.game.loadView(); + this.sf.setDefaultButtons(); + this.sf.applyBoardButtons(); + this.sf.ladeBrett(); + } } diff --git a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewFirstListener.java b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewFirstListener.java index 2a6777c..b13cc66 100644 --- a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewFirstListener.java +++ b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewFirstListener.java @@ -4,19 +4,24 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import de.mannheim.th.chess.domain.Game; +import de.mannheim.th.chess.ui.SpielFrame; public class ButtonViewFirstListener implements ActionListener { private Game game; + private SpielFrame sf; - public ButtonViewFirstListener(Game game) { + public ButtonViewFirstListener(Game game, SpielFrame sf) { this.game = game; + this.sf = sf; } @Override public void actionPerformed(ActionEvent e) { this.game.setViewPointer(0); - // TODO Auto-generated method stub - + this.game.loadView(); + this.sf.setDefaultButtons(); + this.sf.applyBoardButtons(); + this.sf.ladeBrett(); } } diff --git a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewForwardListener.java b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewForwardListener.java index 99302a5..82240a8 100644 --- a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewForwardListener.java +++ b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewForwardListener.java @@ -4,18 +4,26 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import de.mannheim.th.chess.domain.Game; +import de.mannheim.th.chess.ui.SpielFrame; public class ButtonViewForwardListener implements ActionListener { private Game game; + private SpielFrame sf; - public ButtonViewForwardListener(Game game) { + public ButtonViewForwardListener(Game game, SpielFrame sf) { this.game = game; + this.sf = sf; } @Override public void actionPerformed(ActionEvent e) { - this.game.setViewPointer(this.game.getViewPointer() + 1); - // TODO Auto-generated method stub + if (this.game.getMoveList().size() > this.game.getViewPointer()) { + this.game.setViewPointer(this.game.getViewPointer() + 1); + this.game.loadView(); + this.sf.setDefaultButtons(); + this.sf.applyBoardButtons(); + this.sf.ladeBrett(); + } } diff --git a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewLastListener.java b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewLastListener.java index 97f1d82..4c34944 100644 --- a/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewLastListener.java +++ b/src/main/java/de/mannheim/th/chess/controller/controlPanel/ButtonViewLastListener.java @@ -5,19 +5,24 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import de.mannheim.th.chess.domain.Game; +import de.mannheim.th.chess.ui.SpielFrame; public class ButtonViewLastListener implements ActionListener { private Game game; + private SpielFrame sf; - public ButtonViewLastListener(Game game) { + public ButtonViewLastListener(Game game, SpielFrame sf) { this.game = game; + this.sf = sf; } @Override public void actionPerformed(ActionEvent e) { - this.game.setViewPointer(this.game.getMoveList().size() - 1); - // TODO Auto-generated method stub - + this.game.setViewPointer(this.game.getMoveList().size()); + this.game.loadView(); + this.sf.setDefaultButtons(); + this.sf.applyBoardButtons(); + this.sf.ladeBrett(); } } diff --git a/src/main/java/de/mannheim/th/chess/domain/Game.java b/src/main/java/de/mannheim/th/chess/domain/Game.java index a8725c0..9329aee 100644 --- a/src/main/java/de/mannheim/th/chess/domain/Game.java +++ b/src/main/java/de/mannheim/th/chess/domain/Game.java @@ -329,6 +329,10 @@ public class Game { } public void loadView() { - // TODO: add functionality + this.board = new Board(); + this.board.loadFromFen(this.startPosFen); + for (int i = 0; i < this.viewPointer; i++) { + this.board.doMove(this.movelist.get(i)); + } } } diff --git a/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java b/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java index f229230..9b0dd2b 100644 --- a/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java +++ b/src/main/java/de/mannheim/th/chess/ui/SpielFrame.java @@ -14,11 +14,13 @@ import de.mannheim.th.chess.utl.Clock; import de.mannheim.th.chess.controller.ButtonAufgebenListener; import de.mannheim.th.chess.controller.ButtonFileSaverListener; import de.mannheim.th.chess.controller.ButtonMovePieceListener; -import de.mannheim.th.chess.controller.ButtonQuickloadListener; -import de.mannheim.th.chess.controller.ButtonQuicksaveListener; import de.mannheim.th.chess.controller.ButtonSelectPieceListener; import de.mannheim.th.chess.controller.ButtonToNormalListener; import de.mannheim.th.chess.controller.ButtonUndoMoveListener; +import de.mannheim.th.chess.controller.controlPanel.ButtonViewBackListener; +import de.mannheim.th.chess.controller.controlPanel.ButtonViewFirstListener; +import de.mannheim.th.chess.controller.controlPanel.ButtonViewForwardListener; +import de.mannheim.th.chess.controller.controlPanel.ButtonViewLastListener; import java.awt.Font; @@ -62,8 +64,6 @@ public class SpielFrame extends JFrame { private BoardMode mode; private Square selectedSquare; - private int viewPointer; - public enum BoardMode { normal, pieceSelected, finished } @@ -126,15 +126,12 @@ public class SpielFrame extends JFrame { */ public void erstelleBrett() { - this.clearButtons(); - this.setDefaultBackground(); + this.setDefaultButtons(); this.setButtonsActions(); + this.applyBoardButtons(); this.ladeBrett(); - panelLinks.revalidate(); - panelLinks.repaint(); - } private int mirrowedGrid(int i) { @@ -144,7 +141,7 @@ public class SpielFrame extends JFrame { /** * holt sich FEN-Zeichenkette und extrahiert daraus die Positionen der Figuren */ - private void ladeBrett() { + public void ladeBrett() { // System.out.println(game.toFEN()); char[] fen = game.toFEN().replaceAll("/", "").split(" ")[0].toCharArray(); @@ -172,6 +169,10 @@ public class SpielFrame extends JFrame { i++; } + + panelLinks.revalidate(); + panelLinks.repaint(); + } /** @@ -215,6 +216,11 @@ public class SpielFrame extends JFrame { } } + public void setDefaultButtons() { + this.clearButtons(); + this.setDefaultBackground(); + } + /* * Switches the button actions depending on the boardmode */ @@ -262,9 +268,6 @@ public class SpielFrame extends JFrame { } - for (JButton b : buttons) { - panelLinks.add(b); - } } public void showDraw() { @@ -338,6 +341,11 @@ public class SpielFrame extends JFrame { viewForwardButton.setEnabled(false); viewLastButton.setEnabled(false); + viewFirstButton.addActionListener(new ButtonViewFirstListener(this.game, this)); + viewBackButton.addActionListener(new ButtonViewBackListener(this.game, this)); + viewForwardButton.addActionListener(new ButtonViewForwardListener(this.game, this)); + viewLastButton.addActionListener(new ButtonViewLastListener(this.game, this)); + this.controlPanel.add(viewFirstButton); this.controlPanel.add(viewBackButton); this.controlPanel.add(viewForwardButton); @@ -435,17 +443,6 @@ public class SpielFrame extends JFrame { statistik.add(scrollPane); - // TODO: Buttons should be somewhere else - JButton quicksave = new JButton(); - quicksave.addActionListener(new ButtonQuicksaveListener(this.game)); - quicksave.setText("Quicksave"); - statistik.add(quicksave); - - JButton quickload = new JButton(); - quickload.addActionListener(new ButtonQuickloadListener(this.game, this)); - quickload.setText("Quickload"); - statistik.add(quickload); - return statistik; } @@ -576,7 +573,7 @@ public class SpielFrame extends JFrame { return clock; } - private void enableControlPanelButtons() { + public void enableControlPanelButtons() { for (Component c : this.controlPanel.getComponents()) { if (c instanceof JButton) { c.setEnabled(!c.isEnabled()); @@ -584,12 +581,10 @@ public class SpielFrame extends JFrame { } } - public void setViewPointer(int i) { - this.viewPointer = i; - } - - public int getViewPointer() { - return this.viewPointer; + public void applyBoardButtons() { + for (JButton b : buttons) { + panelLinks.add(b); + } } }