275 lines
9.0 KiB
Java
275 lines
9.0 KiB
Java
/**
|
|
* Zentrale Klassee für das Erstellen des GUI.
|
|
*/
|
|
package gui;
|
|
|
|
import javax.swing.JDesktopPane;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JInternalFrame;
|
|
import javax.swing.JMenu;
|
|
import javax.swing.JMenuBar;
|
|
import javax.swing.JMenuItem;
|
|
import javax.swing.JOptionPane;
|
|
import javax.swing.SwingUtilities;
|
|
|
|
import personen.Angestellter;
|
|
import personen.IKlausurSchreiber;
|
|
import personen.IMitarbeiter;
|
|
import personen.Lehrbeauftragter;
|
|
import personen.studenten.DHStudent;
|
|
import personen.studenten.Student;
|
|
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.event.ComponentAdapter;
|
|
import java.awt.event.ComponentEvent;
|
|
import java.beans.PropertyVetoException;
|
|
|
|
/**
|
|
* Diese Klasse ist die zentrale Klasse zum Erstellen des GUI
|
|
*
|
|
* @author konrad
|
|
*/
|
|
public class Gui extends JFrame {
|
|
|
|
private IMitarbeiter mitarbeiterFeld[];
|
|
private Lehrbeauftragter lehrbeauftragtenFeld[];
|
|
private IKlausurSchreiber prueflinge[];
|
|
private DHStudent dhStudentenFeld[];
|
|
private Student studentenFeld[];
|
|
|
|
private JDesktopPane desktop;
|
|
private JMenuBar menuBar;
|
|
|
|
private AngestellterGui angestellterGui;
|
|
private StudentGui studentGui;
|
|
private DHStudentGui dhStudentGui;
|
|
|
|
// Instanzen der Klasse InternalFrameHilfsklasseZumOeffnen für jeden Fenstertyp
|
|
private InternalFrameHilfsklasseZumOeffnen<StudentGui> studentenOpener;
|
|
private InternalFrameHilfsklasseZumOeffnen<DHStudentGui> dhStudentenOpener;
|
|
private InternalFrameHilfsklasseZumOeffnen<AngestellterGui> angestelltenOpener;
|
|
|
|
/**
|
|
* Konstruktor.
|
|
*
|
|
* @param angestelltenFeld
|
|
* @param mitarbeiterFeld
|
|
* @param lehrbeauftragtenFeld
|
|
* @param prueflinge
|
|
* @param studentenFeld
|
|
* @param dhStudentenFeld
|
|
*/
|
|
public Gui(
|
|
Angestellter angestelltenFeld[],
|
|
IMitarbeiter mitarbeiterFeld[],
|
|
Lehrbeauftragter lehrbeauftragtenFeld[],
|
|
IKlausurSchreiber prueflinge[],
|
|
Student studentenFeld[],
|
|
DHStudent dhStudentenFeld[]) {
|
|
// Konstruktor von JFrame mit Fenstertitel
|
|
super("TINF24CS1");
|
|
|
|
this.mitarbeiterFeld = mitarbeiterFeld;
|
|
this.lehrbeauftragtenFeld = lehrbeauftragtenFeld;
|
|
this.prueflinge = prueflinge;
|
|
this.studentenFeld = studentenFeld;
|
|
this.dhStudentenFeld = dhStudentenFeld;
|
|
|
|
// Erstellen des Fensters
|
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
this.setSize(800, 600);
|
|
|
|
// Erstellen der Menüleiste
|
|
this.menuBar = new JMenuBar();
|
|
|
|
// Erstellen des "Datei"-Menüs
|
|
JMenu fileMenu = new JMenu("Datei");
|
|
JMenuItem newMenuItem = new JMenuItem("Neu");
|
|
JMenuItem openMenuItem = new JMenuItem("Öffnen");
|
|
JMenuItem saveMenuItem = new JMenuItem("Speichern");
|
|
JMenuItem exitMenuItem = new JMenuItem("Beenden");
|
|
|
|
// Hinzufügen der Menüelemente zum "Datei"-Menü
|
|
fileMenu.add(newMenuItem);
|
|
fileMenu.add(openMenuItem);
|
|
fileMenu.add(saveMenuItem);
|
|
fileMenu.addSeparator();
|
|
fileMenu.add(exitMenuItem);
|
|
|
|
// Erstellen des "Bearbeiten"-Menüs
|
|
JMenu editMenu = new JMenu("Bearbeiten");
|
|
JMenuItem cutMenuItem = new JMenuItem("Ausschneiden");
|
|
JMenuItem copyMenuItem = new JMenuItem("Kopieren");
|
|
JMenuItem pasteMenuItem = new JMenuItem("Einfügen");
|
|
|
|
// Hinzufügen der Menüelemente zum "Bearbeiten"-Menü
|
|
editMenu.add(cutMenuItem);
|
|
editMenu.add(copyMenuItem);
|
|
editMenu.add(pasteMenuItem);
|
|
|
|
// Erstellen des "Anzeigen"-Menüs
|
|
JMenu anzeigeMenu = new JMenu("Anzeigen");
|
|
JMenuItem angestelltenMenuItem = new JMenuItem("Angestellte");
|
|
JMenuItem mitarbeiterMenuItem = new JMenuItem("Mitarbeiter");
|
|
JMenuItem lehrbeauftragterMenuItem = new JMenuItem("Lehrbeauftragte");
|
|
JMenuItem prueflingeMenuItem = new JMenuItem("Prüflinge");
|
|
JMenuItem studentenMenuItem = new JMenuItem("Studenten");
|
|
JMenuItem dhStudentenMenuItem = new JMenuItem("DH-Studenten");
|
|
|
|
// Hinzufügen der Menüelemente zum "Anzeigen"-Menü
|
|
anzeigeMenu.add(angestelltenMenuItem);
|
|
anzeigeMenu.add(mitarbeiterMenuItem);
|
|
anzeigeMenu.add(lehrbeauftragterMenuItem);
|
|
anzeigeMenu.add(prueflingeMenuItem);
|
|
anzeigeMenu.add(studentenMenuItem);
|
|
anzeigeMenu.add(dhStudentenMenuItem);
|
|
|
|
// Hinzufügen der Menüs zur Menüleiste
|
|
menuBar.add(fileMenu);
|
|
menuBar.add(editMenu);
|
|
menuBar.add(anzeigeMenu);
|
|
|
|
// Hinzufügen der Menüleiste zum JFrame
|
|
this.setJMenuBar(menuBar);
|
|
|
|
// Desktop-Fläche für die "JInternalFrame"-Fenster erstellen
|
|
this.desktop = new JDesktopPane();
|
|
setContentPane(desktop);
|
|
|
|
// Erzeuge die 3 Instanzen der InternalFrameHilfsklasseZumOeffnen
|
|
|
|
studentenOpener = new InternalFrameHilfsklasseZumOeffnen<>(desktop, this, () -> {
|
|
String title = "Studenten (KEINE DH!)";
|
|
boolean resizable = true;
|
|
boolean closable = true;
|
|
boolean maximizable = true;
|
|
boolean iconifiable = true;
|
|
StudentGui newStudentGui = new StudentGui(
|
|
title, resizable, closable, maximizable,
|
|
iconifiable, studentenFeld, desktop, this);
|
|
// Referenz in Gui.java aktualisieren
|
|
this.studentGui = newStudentGui;
|
|
return newStudentGui;
|
|
});
|
|
|
|
dhStudentenOpener = new InternalFrameHilfsklasseZumOeffnen<>(desktop, this, () -> {
|
|
String title = "DHBW-Studenten";
|
|
boolean resizable = true;
|
|
boolean closable = true;
|
|
boolean maximizable = true;
|
|
boolean iconifiable = true;
|
|
DHStudentGui newDhStudentGui = new DHStudentGui(
|
|
title, resizable, closable, maximizable,
|
|
iconifiable, dhStudentenFeld, desktop, this);
|
|
// Referenz in Gui.java aktualisieren
|
|
this.dhStudentGui = newDhStudentGui;
|
|
return newDhStudentGui;
|
|
});
|
|
|
|
angestelltenOpener = new InternalFrameHilfsklasseZumOeffnen<>(desktop, this, () -> {
|
|
String title = "Angestellte";
|
|
boolean resizable = true;
|
|
boolean closable = true;
|
|
boolean maximizable = true;
|
|
boolean iconifiable = true;
|
|
AngestellterGui newAngestellterGui = new AngestellterGui(
|
|
title, resizable, closable, maximizable,
|
|
iconifiable, angestelltenFeld, desktop, this);
|
|
// Referenz in Gui.java aktualisieren
|
|
this.angestellterGui = newAngestellterGui;
|
|
return newAngestellterGui;
|
|
});
|
|
|
|
// Hinzufügen der ActionListener zu den Menüelementen
|
|
exitMenuItem.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
System.exit(0);
|
|
}
|
|
});
|
|
|
|
newMenuItem.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
JOptionPane.showMessageDialog(Gui.this, "Neu ausgewählt");
|
|
}
|
|
});
|
|
|
|
openMenuItem.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
JOptionPane.showMessageDialog(Gui.this, "Öffnen ausgewählt");
|
|
}
|
|
});
|
|
|
|
saveMenuItem.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
JOptionPane.showMessageDialog(Gui.this, "Speichern ausgewählt");
|
|
}
|
|
});
|
|
|
|
cutMenuItem.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
JOptionPane.showMessageDialog(Gui.this, "Ausschneiden ausgewählt");
|
|
}
|
|
});
|
|
|
|
copyMenuItem.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
JOptionPane.showMessageDialog(Gui.this, "Kopieren ausgewählt");
|
|
}
|
|
});
|
|
|
|
pasteMenuItem.addActionListener(new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
JOptionPane.showMessageDialog(Gui.this, "Einfügen ausgewählt");
|
|
}
|
|
});
|
|
|
|
// Hier ganz kurzer Quelltext dank der Hilfsklassenobjekte!
|
|
angestelltenMenuItem.addActionListener(angestelltenOpener);
|
|
|
|
// Hier ganz kurzer Quelltext dank der Hilfsklassenobjekte!
|
|
studentenMenuItem.addActionListener(studentenOpener);
|
|
|
|
// Hier ganz kurzer Quelltext dank der Hilfsklassenobjekte!
|
|
dhStudentenMenuItem.addActionListener(dhStudentenOpener);
|
|
|
|
// Anzeigen des Fensters
|
|
this.setVisible(true);
|
|
}
|
|
|
|
|
|
/**
|
|
* Dient zum Informieren des Openers.
|
|
*/
|
|
public void setStudentGuiToNull() {
|
|
this.studentGui = null;
|
|
// Sicherstellen, dass der Opener schon initialisiert ist
|
|
if (studentenOpener != null) {
|
|
studentenOpener.clearManagedFrame();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Dient zum Informieren des Openers.
|
|
*/
|
|
public void setDhStudentGuiToNull() {
|
|
this.dhStudentGui = null;
|
|
if (dhStudentenOpener != null) {
|
|
dhStudentenOpener.clearManagedFrame();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Dient zum Informieren des Openers.
|
|
*/
|
|
public void setAngestelltenGuiToNull() {
|
|
this.angestellterGui = null;
|
|
if (angestelltenOpener != null) {
|
|
angestelltenOpener.clearManagedFrame();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|