387 lines
13 KiB
Java
387 lines
13 KiB
Java
package de.jaujau.gui;
|
|
import java.awt.BorderLayout;
|
|
import java.awt.CardLayout;
|
|
import java.awt.Color;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JTable;
|
|
import javax.swing.table.DefaultTableModel;
|
|
|
|
import de.jaujau.daten.Farbe;
|
|
import de.jaujau.daten.Spieler;
|
|
import de.jaujau.daten.Spielerverwaltung;
|
|
import de.jaujau.daten.Texturenpakete;
|
|
import de.jaujau.spiellogik.Spiel;
|
|
import javax.swing.JLabel;
|
|
import java.awt.Dimension;
|
|
import java.awt.Image;
|
|
import javax.swing.JComboBox;
|
|
import javax.swing.SwingConstants;
|
|
import javax.swing.ImageIcon;
|
|
import java.awt.Rectangle;
|
|
import java.awt.Component;
|
|
import java.awt.FlowLayout;
|
|
import java.awt.ComponentOrientation;
|
|
import java.awt.Cursor;
|
|
import java.awt.event.MouseAdapter;
|
|
import java.awt.event.MouseEvent;
|
|
import javax.swing.UIManager;
|
|
import java.awt.Font;
|
|
import javax.swing.JButton;
|
|
|
|
public class Dashboard_GUI extends JPanel{
|
|
private static final long serialVersionUID = -7380187913989942586L;
|
|
JPanel panelCont = new JPanel();
|
|
JPanel highscore = new JPanel();
|
|
JPanel game = new JPanel();
|
|
JPanel start = new JPanel();
|
|
CardLayout cl = new CardLayout();
|
|
Spielerverwaltung spielerverwaltung = new Spielerverwaltung();
|
|
private final JPanel panel = new JPanel();
|
|
private final JPanel panel_1 = new JPanel();
|
|
private JComboBox<String> comboBox = new JComboBox<String>();
|
|
private final JPanel panel_2 = new JPanel();
|
|
private final JLabel lblNewLabel_1 = new JLabel("Entwickler: Sebastian, Moritz, Fabian, Aladin, Elmar");
|
|
private final JPanel spielfeld = new JPanel();
|
|
private final JPanel player_hand = new JPanel();
|
|
private final JPanel gegner_hand = new JPanel();
|
|
private final JLabel ziehstapel = new JLabel("");
|
|
JPanel spielerkarten = new JPanel();
|
|
JLabel labels[] = new JLabel[32];
|
|
private Spiel aktuellesSpiel;
|
|
private JLabel label_aktuellerSpieler;
|
|
private Texturenpakete texturenpakete;
|
|
private final JPanel spielfeldmitte = new JPanel();
|
|
private final JPanel info_panel = new JPanel();
|
|
private final JPanel rechts = new JPanel();
|
|
private final JPanel mitte = new JPanel();
|
|
JLabel ablagestapel = new JLabel("");
|
|
JButton aussetzen = new JButton("Aussetzen");
|
|
JPanel mitte_unten = new JPanel();
|
|
JPanel mitte_center = new JPanel();
|
|
private JPanel mitte_oben = new JPanel();
|
|
private JButton btnherz = new JButton("Herz");
|
|
private JButton btnpik = new JButton("Pik");
|
|
private JButton btnkaro = new JButton("Karo");
|
|
private JButton btnkreuz = new JButton("Kreuz");
|
|
|
|
public Dashboard_GUI(Spiel Spiel, Texturenpakete texturen) {
|
|
setMinimumSize(new Dimension(1000, 600));
|
|
texturenpakete = texturen;
|
|
texturenpakete.addPaket("StandartTexturenBeta3.zip");
|
|
texturenpakete.setAktivesPaket(0);
|
|
System.out.println(texturenpakete.getAktivesPaket());
|
|
aktuellesSpiel = Spiel;
|
|
setLayout(new BorderLayout(0, 0));
|
|
panelCont.setLayout(cl);
|
|
panelCont.add(highscore, "1");
|
|
panelCont.add(game, "2");
|
|
game.setLayout(new BorderLayout(0, 0));
|
|
spielfeld.setBackground(new Color(128, 128, 128));
|
|
|
|
game.add(spielfeld, BorderLayout.CENTER);
|
|
spielfeld.setLayout(new BorderLayout(0, 0));
|
|
player_hand.setPreferredSize(new Dimension(100, 240));
|
|
player_hand.setForeground(new Color(169, 169, 169));
|
|
player_hand.setBackground(new Color(169, 169, 169));
|
|
|
|
spielfeld.add(player_hand, BorderLayout.SOUTH);
|
|
player_hand.setLayout(new BorderLayout(0, 0));
|
|
|
|
JScrollPane scrollPane_1 = new JScrollPane();
|
|
scrollPane_1.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
|
scrollPane_1.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
|
|
scrollPane_1.setPreferredSize(new Dimension(100, 240));
|
|
player_hand.add(scrollPane_1, BorderLayout.CENTER);
|
|
spielerkarten.setBackground(new Color(169, 169, 169));
|
|
|
|
|
|
spielerkarten.setAutoscrolls(true);
|
|
spielerkarten.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
|
scrollPane_1.setViewportView(spielerkarten);
|
|
spielerkarten.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
|
|
gegner_hand.setBackground(UIManager.getColor("Button.shadow"));
|
|
|
|
spielfeld.add(gegner_hand, BorderLayout.NORTH);
|
|
gegner_hand.setLayout(new BorderLayout(0, 0));
|
|
|
|
spielfeldmitte.setPreferredSize(new Dimension(100, 20));
|
|
spielfeldmitte.setLayout(new BorderLayout(0, 0));
|
|
|
|
JLabel beschreibung_aktuellerSpieler = new JLabel("Aktueller Spieler:");
|
|
beschreibung_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18));
|
|
beschreibung_aktuellerSpieler.setForeground(Color.BLACK);
|
|
info_panel.add(beschreibung_aktuellerSpieler);
|
|
label_aktuellerSpieler = new JLabel("Auswahlphase");
|
|
label_aktuellerSpieler.setForeground(Color.BLACK);
|
|
label_aktuellerSpieler.setFont(new Font("Tahoma", Font.BOLD, 18));
|
|
info_panel.add(label_aktuellerSpieler);
|
|
|
|
|
|
spielfeld.add(spielfeldmitte, BorderLayout.CENTER);
|
|
|
|
spielfeldmitte.add(info_panel, BorderLayout.NORTH);
|
|
rechts.setPreferredSize(new Dimension(250, 10));
|
|
|
|
spielfeldmitte.add(rechts, BorderLayout.EAST);
|
|
rechts.setLayout(new BorderLayout(0, 0));
|
|
ziehstapel.setAlignmentX(Component.CENTER_ALIGNMENT);
|
|
rechts.add(ziehstapel, BorderLayout.CENTER);
|
|
ziehstapel.addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
aktuellesSpiel.karteZiehen();
|
|
aktualisiereGUI();
|
|
}
|
|
});
|
|
ziehstapel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
|
ziehstapel.setPreferredSize(new Dimension(242, 362));
|
|
ziehstapel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
ziehstapel.setIcon(new ImageIcon(texturenpakete.getTextur(32).getScaledInstance(150, 210, Image.SCALE_SMOOTH)));
|
|
|
|
spielfeldmitte.add(mitte, BorderLayout.CENTER);
|
|
aussetzen.setVisible(false);
|
|
aussetzen.addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
aktuellesSpiel.aussetzen();
|
|
aussetzen.setVisible(false);
|
|
}
|
|
});
|
|
mitte.setLayout(new BorderLayout(0, 0));
|
|
mitte_unten.setVisible(false);
|
|
mitte_unten.setPreferredSize(new Dimension(150, 50));
|
|
mitte_unten.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
|
|
btnherz.setVisible(false);
|
|
|
|
|
|
mitte_unten.add(btnherz);
|
|
mitte_unten.add(aussetzen);
|
|
mitte_center.setLayout(new BorderLayout(0, 0));
|
|
ablagestapel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
ablagestapel.setHorizontalTextPosition(SwingConstants.CENTER);
|
|
ablagestapel.setAlignmentX(Component.CENTER_ALIGNMENT);
|
|
|
|
|
|
ablagestapel.setIcon(new ImageIcon(texturenpakete.getTextur(32).getScaledInstance(150, 210, Image.SCALE_SMOOTH)));
|
|
mitte_center.add(ablagestapel, BorderLayout.CENTER);
|
|
|
|
|
|
mitte.add(mitte_center);
|
|
|
|
//Wunschfarben Button Listener
|
|
|
|
mitte.add(mitte_unten, BorderLayout.SOUTH);
|
|
btnpik.setVisible(false);
|
|
btnpik.addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
aktuellesSpiel.getKartensatz().SetWunschfarbe(Farbe.PIK);
|
|
btnpik.setVisible(false);
|
|
}
|
|
});
|
|
|
|
mitte_unten.add(btnpik);
|
|
btnkaro.setVisible(false);
|
|
btnkaro.addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
aktuellesSpiel.getKartensatz().SetWunschfarbe(Farbe.KARO);
|
|
btnkaro.setVisible(false);
|
|
}
|
|
});
|
|
|
|
mitte_unten.add(btnkaro);
|
|
btnkreuz.setVisible(false);
|
|
btnkreuz.addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
aktuellesSpiel.getKartensatz().SetWunschfarbe(Farbe.KREUZ);
|
|
btnkreuz.setVisible(false);
|
|
}
|
|
});
|
|
|
|
btnherz.addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
aktuellesSpiel.getKartensatz().SetWunschfarbe(Farbe.HERZ);
|
|
btnherz.setVisible(false);
|
|
}
|
|
});
|
|
|
|
mitte_unten.add(btnkreuz);
|
|
mitte_oben.setPreferredSize(new Dimension(150, 50));
|
|
|
|
mitte.add(mitte_oben, BorderLayout.NORTH);
|
|
mitte_oben.setLayout(new BorderLayout(0, 0));
|
|
panelCont.add(start, "3");
|
|
start.setLayout(new BorderLayout(0, 0));
|
|
panel.setPreferredSize(new Dimension(10, 30));
|
|
|
|
start.add(panel, BorderLayout.NORTH);
|
|
|
|
JLabel lblNewLabel = new JLabel("Spielername:");
|
|
panel.add(lblNewLabel);
|
|
comboBox.setMinimumSize(new Dimension(60, 22));
|
|
comboBox.setEditable(true);
|
|
panel.add(comboBox);
|
|
start.add(panel_1, BorderLayout.CENTER);
|
|
|
|
start.add(panel_2, BorderLayout.SOUTH);
|
|
|
|
panel_2.add(lblNewLabel_1);
|
|
|
|
highscore.setLayout(new BorderLayout(0, 0));
|
|
|
|
//Erstes Panel wird angezeigt
|
|
cl.show(panelCont, "3");
|
|
add(panelCont);
|
|
renderStart(); //Startseite beim ersten öffnen aktualisieren
|
|
|
|
}
|
|
|
|
//Spiel Panel wird gezeigt
|
|
public void showgame(Spiel Spiel){
|
|
//Neues Spiel wird übergeben
|
|
aktuellesSpiel = Spiel;
|
|
System.out.println("DASHBOARD: Game darstellen");
|
|
cl.show(panelCont, "2");
|
|
aktuellesSpiel.spiel(this);
|
|
aktualisiereGUI();
|
|
}
|
|
|
|
public void showstart(){
|
|
System.out.println("DASHBOARD: Start darstellen");
|
|
cl.show(panelCont, "3");
|
|
renderStart();
|
|
}
|
|
|
|
|
|
public void showhighscore(){
|
|
System.out.println("DASHBOARD: Highscore darstellen");
|
|
renderHighscore();
|
|
cl.show(panelCont, "1");
|
|
repaint();
|
|
revalidate();
|
|
}
|
|
|
|
|
|
|
|
public void renderStart(){
|
|
comboBox.removeAllItems();
|
|
for(int i = 0; i<spielerverwaltung.gethighscoreTabelle().length; i++) {
|
|
comboBox.addItem(spielerverwaltung.gethighscoreTabelle()[i][0]);
|
|
}
|
|
|
|
}
|
|
|
|
// Highscore Tabelle
|
|
public void renderHighscore() {
|
|
|
|
|
|
|
|
String[][] rowData = spielerverwaltung.gethighscoreTabelle(); //Bsp. Datensatz muss noch entfernt werden.
|
|
|
|
String[] columnNames = {"Name", "Punkte"};
|
|
highscore.setLayout(new BorderLayout(0, 0));
|
|
JTable table = new JTable(); //Leere Tabelle
|
|
DefaultTableModel tableModel = new DefaultTableModel(rowData, columnNames) { //Tabelle formatieren und Zellen nicht bearbeitbar machen
|
|
private static final long serialVersionUID = 838285314713L;
|
|
public boolean isCellEditable(int row, int column) {
|
|
//all cells false
|
|
return false;
|
|
}
|
|
};
|
|
table.setAutoCreateRowSorter(true); //Tabelle Sortierbar durch Tabellenkopf
|
|
table.getTableHeader().setReorderingAllowed(false); //Tabelle nicht mehr drag and drop
|
|
table.setModel(tableModel);
|
|
highscore.add( new JScrollPane( table ) );
|
|
|
|
|
|
}
|
|
|
|
public void aktualisiereHand() {
|
|
|
|
//Alle Elemente entfernen
|
|
for(Component c : spielerkarten.getComponents()){
|
|
spielerkarten.remove(c);
|
|
spielerkarten.revalidate();
|
|
}
|
|
|
|
//Alle Karten auf der Hand darstellen
|
|
for(int i = 0; i< aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).size(); i++){
|
|
labels[i] = new JLabel();
|
|
labels[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
|
labels[i].setAlignmentY(Component.TOP_ALIGNMENT);
|
|
labels[i].setBounds(new Rectangle(0, 0, 120, 180));
|
|
labels[i].setSize(new Dimension(120, 180));
|
|
labels[i].setHorizontalTextPosition(SwingConstants.CENTER);
|
|
labels[i].setHorizontalAlignment(SwingConstants.CENTER);
|
|
labels[i].setName(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i).toString());
|
|
labels[i].addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
aktuellesSpiel.karteLegen(Integer.parseInt(e.getComponent().getName()));
|
|
System.out.println("Karte: " + e.getComponent().getName() + " ausgewählt.");
|
|
aktualisiereGUI();
|
|
}
|
|
});
|
|
labels[i].setIcon(new ImageIcon(texturenpakete.getTextur(aktuellesSpiel.getKartensatz().getHand(Spieler.SPIELER).get(i)).getScaledInstance(150, 210, Image.SCALE_SMOOTH)));
|
|
spielerkarten.add(labels[i]);
|
|
spielerkarten.updateUI(); //Panel erneuern
|
|
}
|
|
}
|
|
|
|
|
|
public void aktualisiereAblage(){
|
|
int sum = 0;
|
|
synchronized (this) {
|
|
int i = 0;
|
|
while (i < 100000) {
|
|
sum += i;
|
|
i++;
|
|
}
|
|
notify();
|
|
}
|
|
ablagestapel.setIcon(new ImageIcon(texturenpakete.getTextur(aktuellesSpiel.getKartensatz().getletzteKarte()).getScaledInstance(150, 210, Image.SCALE_SMOOTH)));
|
|
ablagestapel.revalidate();
|
|
ablagestapel.repaint();
|
|
}
|
|
|
|
public void aktualisiereSpieleranzeige() {
|
|
if(aktuellesSpiel.getamZug() == Spieler.COMPUTER) {
|
|
label_aktuellerSpieler.setText("Gegner");
|
|
label_aktuellerSpieler.setForeground(Color.RED);
|
|
}
|
|
if(aktuellesSpiel.getamZug() == Spieler.SPIELER) {
|
|
label_aktuellerSpieler.setText("Spieler");
|
|
label_aktuellerSpieler.setForeground(Color.GREEN);
|
|
}
|
|
|
|
if(aktuellesSpiel.getamZug() == null) {
|
|
label_aktuellerSpieler.setText("Auswahlphase");
|
|
label_aktuellerSpieler.setForeground(Color.WHITE);
|
|
}
|
|
}
|
|
|
|
|
|
public void showaussetzen() {
|
|
aussetzen.setVisible(true);
|
|
}
|
|
|
|
public void aktualisiereGUI(){
|
|
aktualisiereSpieleranzeige();
|
|
aktualisiereAblage();
|
|
aktualisiereHand();
|
|
}
|
|
|
|
public void showwunsch(){
|
|
btnpik.setVisible(true);
|
|
btnherz.setVisible(true);
|
|
btnkaro.setVisible(true);
|
|
btnkreuz.setVisible(true);
|
|
}
|
|
}
|
|
|
|
|