import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.Encoder;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.util.ArrayList;
public class Layout extends JFrame {
private Container c;
private JPanel panelNorth, panelSouth, panelWest, panelEast, panelCenter;
private JButton reservieren, resRueck, speichern, laden, bSpeicherort;
public JButton[] button;
private JTextField eingabe;
private JLabel namensausgabe;
private String speicherort;
public Platz[] platz;
private int i, ir, is, butNumber, reihe;
private boolean setR = false;
private boolean setSpeicher = true;
private boolean isCancel=true;
private ArrayList<Platz> speicherListe;
private Dimension screen,dButton;
public Layout() {
// --------------------Fenster erstellung---------------------------
// ---------------------Grund-Layout--------------------------------
c = new Container();
screen=Toolkit.getDefaultToolkit().getScreenSize();
setSize(screen);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
setTitle("Platzreservierung");
Toolkit.getDefaultToolkit().setDynamicLayout(true);
panelNorth = new JPanel();
panelSouth = new JPanel();
panelWest = new JPanel();
panelEast = new JPanel();
panelCenter = new JPanel();
c = getContentPane();
c.setLayout(new BorderLayout());
panelCenter.setLayout(new FlowLayout());
panelEast.setLayout(new GridLayout(14, 0));
platz = new Platz[287];
namensausgabe = new JLabel("Keine Angabe");
panelNorth.add(namensausgabe);
eingabe = new JTextField(20); // Textfeld wird erstellt und panelNorth
// hinzugefügt
panelNorth.add(eingabe);
reservieren = new JButton("Reservieren"); // Reservierungs-Button wird
// erstellt
reservieren.setPreferredSize(new Dimension(140, 30));
panelNorth.add(reservieren);
resRueck = new JButton("Res. Löschen"); // Reservierung Löschen-Button
// wird erstellt
resRueck.setPreferredSize(new Dimension(140, 30));
panelNorth.add(resRueck);
speichern = new JButton("Speichern"); // Speichern-Button wird erstellt
speichern.setPreferredSize(new Dimension(140, 30));
panelNorth.add(speichern);
laden = new JButton("Laden"); // Laden-Button wird erstellt
laden.setPreferredSize(new Dimension(140, 30));
panelNorth.add(laden);
bSpeicherort = new JButton("Speichern unter..."); // Speichern Unter
// Button wird
// erstetllt
bSpeicherort.setPreferredSize(new Dimension(140, 30));
panelNorth.add(bSpeicherort);
// ---------------------------------------------------------------
button = new JButton[287]; // Buttonstellung
dButton=new Dimension(55,55);
for (i = 0; i < 286; i++) {
button[i] = new JButton();
button[i].setPreferredSize(dButton);
platz[i] = new Platz();
// button[i].setText(""+i);
panelCenter.add(button[i]);
}
FileSystems.getDefault().getRootDirectories();
reihe = 13; // Platzbelegung
butNumber = 0;
for (ir = 0; ir < 14; ir++) {
switch (reihe) {
case 13:
if (reihe == 13) {
for (is = 0; is < 18; is++) {
button[is + 1].setText("" + (is + 1));
platz[is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 12:
if (reihe == 12) {
butNumber = 23;
for (is = 0; is < 19; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 11:
if (reihe == 11) {
butNumber = 45;
for (is = 0; is < 19; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 10:
if (reihe == 10) {
butNumber = 67;
for (is = 0; is < 20; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 9:
if (reihe == 9) {
butNumber = 89;
for (is = 0; is < 20; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 8:
if (reihe == 8) {
butNumber = 111;
for (is = 0; is < 20; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 7:
if (reihe == 7) {
butNumber = 133;
for (is = 0; is < 20; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 6:
if (reihe == 6) {
butNumber = 155;
for (is = 0; is < 19; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 5:
if (reihe == 5) {
butNumber = 177;
for (is = 0; is < 18; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 4:
if (reihe == 4) {
butNumber = 198;
for (is = 0; is < 16; is++) {
if (is == 0) {
button[butNumber].setText("RS");
platz[butNumber].setSetRs(true);
butNumber = 199;
}
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 3:
if (reihe == 3) {
butNumber = 220;
for (is = 0; is < 16; is++) {
if (is == 0) {
button[butNumber].setText("RS");
platz[butNumber].setSetRs(true);
butNumber = 221;
}
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 2:
if (reihe == 2) {
butNumber = 242;
for (is = 0; is < 16; is++) {
if (is == 0) {
button[butNumber].setText("RS");
platz[butNumber].setSetRs(true);
butNumber = 243;
}
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
case 1:
if (reihe == 1) {
butNumber = 265;
for (is = 0; is < 16; is++) {
button[butNumber + is].setText("" + (is + 1));
platz[butNumber + is].setPlatzNr(is + 1);
}
}
reihe--;
break;
}
}
button[21].setText("13"); // Reihen-Nummer
button[21].setEnabled(false);
button[43].setText("12");
button[43].setEnabled(false);
button[65].setText("11");
button[65].setEnabled(false);
button[87].setText("10");
button[87].setEnabled(false);
button[109].setText("9");
button[109].setEnabled(false);
button[131].setText("8");
button[131].setEnabled(false);
button[153].setText("7");
button[153].setEnabled(false);
button[175].setText("6");
button[175].setEnabled(false);
button[197].setText("5");
button[197].setEnabled(false);
button[219].setText("4");
button[219].setEnabled(false);
button[241].setText("3");
button[241].setEnabled(false);
button[263].setText("2");
button[263].setEnabled(false);
button[285].setText("1");
button[285].setEnabled(false);
for (i = 0; i < 286; i++) { // Nicht genutzte Buttons entfernen
if (button[i].getText() == "") {
button[i].setEnabled(false);
button[i].setBorder(null);
}
platz[i].setArrayNr(i); // Setzt die ArrayNr
}
MouseListener move = new MouseListner();// Buttons werden MouseListener
// hinzugefügt
for (i = 0; i < 286; i++) {
if (button[i].isEnabled() == true) {
button[i].addMouseListener(move);
}
}
Listener klick = new Listener(); // Buttons werden ActionListener
// hinzugefügt
for (i = 0; i < 286; i++) {
button[i].addActionListener(klick);
}
reservieren.addActionListener(klick);
resRueck.addActionListener(klick);
SpeicherListener saveandreload = new SpeicherListener();
speichern.addActionListener(saveandreload);
laden.addActionListener(saveandreload);
bSpeicherort.addActionListener(saveandreload);
setSize(1200, 850);
c.add(panelNorth, BorderLayout.NORTH); // Add Geschichte
c.add(panelSouth, BorderLayout.SOUTH);
c.add(panelWest, BorderLayout.WEST);
c.add(panelEast, BorderLayout.EAST);
c.add(panelCenter, BorderLayout.CENTER);
setSize(1250, 900);
Aktuallisieren();// Buttons werden Aktuallisiert
speicherListe = new ArrayList<Platz>();// Die Speicherliste wird
// initialisiert
}
// --------------------------------Speicher-Funktion---------------------------------------------
public void speichern() {
for (i = 0; i < platz.length; i++) {
speicherListe.add(platz[i]);
}
try {
XMLEncoder encoder = new XMLEncoder(new FileOutputStream(
speicherort));
encoder.writeObject(speicherListe);
encoder.close();
} catch (Exception e) {
if (speicherort == null) {
JOptionPane
.showMessageDialog(c,
"Bitte mit den Button \"Speichern unter...\" einen Speicherort festlegen");
} else {
JOptionPane.showMessageDialog(c, "Fehler beim Speichern");
}
}
}
// --------------------------------Lese-Funktion-------------------------------------------------
public void lesen() {
try {
XMLDecoder decoder = new XMLDecoder(
new FileInputStream(speicherort));
speicherListe = (ArrayList<Platz>) decoder.readObject();
decoder.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(c,
"Fehler beim Lesen der Datei Speicherliste.xml");
}
for (i = 0; i < platz.length; i++) {
platz[i] = speicherListe.get(i);
}
Aktuallisieren();
}
// --------------------------------Aktualliesieren-----------------------------------------------
public void Aktuallisieren() {
for (i = 0; i < 286; i++) {
if (platz[i].isIstMakiert()) {
button[i].setBackground(Color.yellow);
}
if (platz[i].isIstReserviert()) {
button[i].setBackground(Color.BLUE);
}
}
}
// -------------------------Speicherortbestimmungs-Funktion------------------------------
public void Speicherortbestimmung() {
Speicherort speicherortbestimmung = new Speicherort();
speicherort = speicherortbestimmung.Speicherortbestimmung();
if(speicherort!="7859"){
if(speicherort.endsWith(".xml")==true){
}else{
speicherort=speicherort+".xml";
}
}else{
}
}
// -----------Funktionen für die Mausbewegungen
class MouseListner implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) { // wird ausgeführt wenn die
// Maus geklickt und wieder
// losgelassen wurde
}
@Override
public void mouseEntered(MouseEvent e) { // Maus wird in ein Bereich
// bewegt
for (i = 0; i < platz.length; i++) {
if (e.getSource().equals(button[i])) {
if (platz[i].getName() != null) {
namensausgabe.setText(platz[i].getName());
}
}
}
}
@Override
public void mouseExited(MouseEvent e) { // Maus wird aus einen Bereich
// bewegt
}
@Override
public void mousePressed(MouseEvent e) { // Maustaste wird gedrückt
}
@Override
public void mouseReleased(MouseEvent e) {// Maustaste wird losgelassen
}
}
// --------------------------------Button-Funktionen---------------------------------------------
class Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
setSpeicher = false;// !!!!ACHTUNG!!!!!!Alles andere
// Button-Funktionen erst ab hier schreiben
if (e.getSource().equals(reservieren)) { // Reservieren
for (i = 0; i < 286; i++) {
if (platz[i].isIstMakiert() == true
&& platz[i].isIstReserviert() == false) {
platz[i].setIstReserviert(true);
platz[i].setName(eingabe.getText());
button[i].setBackground(Color.BLUE);
}
}
}
if (e.getSource().equals(resRueck)) { // Reservierung
// rückgänigmachen
if (setR == false) {
resRueck.setBackground(Color.RED);
setR = true;
} else {
if (setR == true) {
resRueck.setBackground(null);
setR = false;
}
}
}
for (i = 0; i < 286; i++) { // Platz makieren
if (e.getSource().equals(button[i])) {
// if (eingabe.getText() != null||eingabe.getText()!="") {
if (setR == true) {
platz[i].setIstMakiert(false);
platz[i].setIstReserviert(false);
button[i].setBackground(null);
platz[i].setName(null);
} else {
if (platz[i].isIstMakiert() == false
&& platz[i].isIstReserviert() == false) {
button[i].setBackground(Color.yellow);
platz[i].setIstMakiert(true);
} else {
if (platz[i].isIstMakiert() == true
&& platz[i].isIstReserviert() == false) {
platz[i].setName("");
button[i].setBackground(null);
platz[i].setIstMakiert(false);
}
}
}
}
}
}
}
class SpeicherListener implements ActionListener { // Button-Funktionen für
// Speichern und Laden
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(speichern)) { // Speichern
speichern();
setSpeicher = true;
}
if (e.getSource().equals(laden)) { // Laden der Daten
if (setSpeicher == true) {
Speicherort speicherortbestimmung = new Speicherort();
speicherort = speicherortbestimmung.Ladeortbestimmung();
if (speicherort != "7859") {
lesen();
Aktuallisieren();
}
} else {
JOptionPane.showMessageDialog(c,
"Sie müssen noch Speichern");
}
}
if (e.getSource().equals(bSpeicherort)) {
Speicherortbestimmung();
speichern();
}
}
}
}