package gui;
import game.Exporter;
import game.GameCoordinator;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;
/**
* Klasse, die das aktuelle Spiel im PGN-Format anzeigt.
*
* @author Tabea
*
*/
public class ShowPGNFormat extends JFrame implements ActionListener
{
private static ShowPGNFormat instance = null;
private JPanel forText = new JPanel(),
forButton = new JPanel();
private JTextArea text = new JTextArea(20, 30);
private JButton okButton = new JButton("OK");
/**
* Privater Konstruktor, der nur ein Objekt der Klasse ShowPGNFormat
* erstellt, den Titel setzt und alle nötigen Fenstereinstellungen aufruft.
*/
private ShowPGNFormat() {
this.setTitle("PGN-Format");
this.initWindow();
this.makeLayout();
}
/**
* Gibt die ShowPGNFormat-Instanz zurück.
* @return ShowOGNFormat-Instanz
*/
public static ShowPGNFormat getInstance() {
if (instance == null) {
instance = new ShowPGNFormat();
}
return instance;
}
public void makeVisibile() {
this.setVisible(true);
}
/**
* Methode, die die Einstellungen des Fensters initialisiert.
*/
public void initWindow() {
this.setIconImage(new ImageIcon("gui/gui/checkerboard.png").getImage());
this.setSize(450, 450);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
/**
* Methode, die das gesamt FensterLayout erstellt.
*/
public void makeLayout() {
this.setContentPane(new BackgroundPanel());
this.setLayout(new BorderLayout());
this.text.setBorder(new EmptyBorder(5, 10, 0, 10));
this.text.setLineWrap(true);
this.text.setEditable(false);
this.text.setEnabled(false);
this.text.setDisabledTextColor(Color.black);
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("dd.MM.yyyy");
// Abfrage, wer gewonnen hat, um entsprechendes auszugeben
String result;
if (Checkerboard.getInstance().hasBlackWon()) {
result = "0-1";
} else {
result = "1-0";
}
this.text.setText(Exporter.exportMovesToPGN("Teamprojekt", "Legolabor",
sdf.format(new Date()),
StartWindow.getInstance().getUsername(), "Legoroboter", result,
GameCoordinator.getInstance(false).getAllMoves()));
this.text.setCaretPosition(0);
JScrollPane scrollPane = new JScrollPane(this.text);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
this.forText.setOpaque(false);
scrollPane.setOpaque(false);
scrollPane.getViewport().setOpaque(false);
this.forButton.setOpaque(false);
this.text.setBackground(new Color(251, 225, 172));
scrollPane.setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2,
new Color(41, 15, 5)));
this.forText.setBorder(new EmptyBorder(20, 0, 0, 0));
this.forText.add(scrollPane);
this.forButton.add(this.okButton);
this.forButton.setBorder(new EmptyBorder(0, 0, 15, 0));
this.okButton.addActionListener(this);
this.okButton.setActionCommand("okButton");
this.getRootPane().setDefaultButton(this.okButton);
this.getContentPane().add(this.forText, BorderLayout.CENTER);
this.getContentPane().add(this.forButton, BorderLayout.SOUTH);
}
/**
* Methode, die angemessen auf die unterschiedlichen Events reagiert.
* @param e auslösendes ActionEvent
*/
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "okButton") {
this.setVisible(false);
this.dispose();
}
}
}