/*
* Created on 04.12.2005
*
*/
package de.hdm.iSchedule.gui;
import java.rmi.RemoteException;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import javax.swing.JTabbedPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSplitPane;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import de.hdm.iSchedule.data.*;
/**
* Hauptklasse des Bank-Interface.
* @author Christian Rathke
*
*/
public class StundenplanGUI implements ActionListener, TreeSelectionListener {
private JFrame frame;
private JTabbedPane tabbedPane;
private InterfaceClient ic = new InterfaceClient();
private Dozentformular df = new Dozentformular();
private Lehrveranstaltungformular lvf = new Lehrveranstaltungformular();
private Raumformular rf = new Raumformular();
private Semesterverbandformular svf = new Semesterverbandformular();
private Stundenplanformular spf = new Stundenplanformular();
private StundenplanUndSemesterverband sus = new StundenplanUndSemesterverband();
private Dozent selectedDozent = null;
private Zeit selectedZeit = null;
private Wochentag selectedWochentag = null;
private Lehrveranstaltung selectedLehrveranstaltung = null;
private Raum selectedRaum = null;
private Semesterverband selectedSemesterverband = null;
private Stundenplan selectedStundenplan = null;
private Studiengang selectedStudiengang = null;
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
StundenplanGUI spg = new StundenplanGUI();
spg.generateComponents();
}
/**
* Erzeugen der sichtbaren Komponenten.
* Das Hauptfenster wird in drei Teile für den Kunden-und-Konten-Baum, die
* Kundenangaben und die Kontoangaben unterteilt. Zusätzlich wird die Menü-
* Erzeugung angestoßen.
*
*/
void generateComponents() {
frame = new JFrame ("iSchedule");
frame.setSize(800, 720);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*
* Für den Kunden-und-Konten-Baum wird zunächst die sichtbare Komponente erzeugt.
* Danach wird diese mit den Inhalten erzeugt, die vom Applikationsserver geliefert
* werden.
*/
Container pane = new Container();
Component treePane = sus.generateComponents(this);
tabbedPane = new JTabbedPane();
tabbedPane.addTab( "Stundenplan", spf.generateComponents(this));
tabbedPane.addTab( "Semesterverband", svf.generateComponents(this));
tabbedPane.addTab( "Raum", rf.generateComponents(this));
tabbedPane.addTab( "Dozent", df.generateComponents(this));
tabbedPane.addTab( "Lehrveranstaltung", lvf.generateComponents(this));
JSplitPane rightPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, tabbedPane, pane);
JSplitPane mainPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,treePane,rightPane);
rightPane.setDividerLocation(300);
mainPane.setDividerLocation(200);
frame.getContentPane().add(mainPane, BorderLayout.CENTER);
/*
* Erzeugen der Menüstrukturen.
*/
JMenuBar menuBar = new JMenuBar();
generateMenus(menuBar);
menuBar.setOpaque(true);
menuBar.setPreferredSize(new Dimension(200, 20));
frame.setJMenuBar(menuBar);
frame.pack();
frame.setVisible(true);
}
protected void generateMenus(JMenuBar menubar) {
JMenu aktionenMenu = new JMenu("Aktionen");
JMenuItem tmpMenuItem = new JMenuItem("Aktualisieren");
tmpMenuItem.setActionCommand("Aktualisieren");
tmpMenuItem.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equalsIgnoreCase("Aktualisieren")){
spf.removeStundenplan();
svf.removeSemesterverband();
sus.update(ic.getAllStundenplanUndSemesterverband());
}
}
});
aktionenMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Beenden");
tmpMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
aktionenMenu.add(tmpMenuItem);
menubar.add(aktionenMenu);
JMenu dozentMenu = new JMenu("Stundenplan");
tmpMenuItem = new JMenuItem("Ändern");
tmpMenuItem.setActionCommand("changeStundenplan");
tmpMenuItem.addActionListener(this);
dozentMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Neu");
tmpMenuItem.setActionCommand("createStundenplan");
tmpMenuItem.addActionListener(this);
dozentMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Löschen");
tmpMenuItem.setActionCommand("deleteStundenplan");
tmpMenuItem.addActionListener(this);
dozentMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Suchen");
tmpMenuItem.setActionCommand("findStundenplan");
tmpMenuItem.addActionListener(this);
dozentMenu.add(tmpMenuItem);
menubar.add(dozentMenu);
JMenu svMenu = new JMenu("Semesterverband");
tmpMenuItem = new JMenuItem("Ändern");
tmpMenuItem.setActionCommand("changeSemesterverband");
tmpMenuItem.addActionListener(this);
svMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Neu");
tmpMenuItem.setActionCommand("createSemesterverband");
tmpMenuItem.addActionListener(this);
svMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Löschen");
tmpMenuItem.setActionCommand("createSemesterverband");
tmpMenuItem.addActionListener(this);
svMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Suchen");
tmpMenuItem.setActionCommand("findSemesterverband");
tmpMenuItem.addActionListener(this);
svMenu.add(tmpMenuItem);
menubar.add(svMenu);
JMenu lvMenu = new JMenu("Lehrveranstaltung");
tmpMenuItem = new JMenuItem("Ändern");
tmpMenuItem.setActionCommand("changeLehrveranstaltung");
tmpMenuItem.addActionListener(this);
lvMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Neu");
tmpMenuItem.setActionCommand("createLehrveranstaltung");
tmpMenuItem.addActionListener(this);
lvMenu.add(tmpMenuItem);
tmpMenuItem = new JMenuItem("Löschen");
tmpMenuItem.setActionCommand("createLehrveranstaltung");
tmpMenuItem.addActionListener(this);
lvMenu.add(tmpMenuItem);
menubar.add(lvMenu);
}
/**
* Das Setzen des ausgewählten Kunden wird an die Unterkomponenten weitergereicht.
* @param c
*/
private void setSelectedStundenplan (Stundenplan sp){
selectedStundenplan = sp;
spf.setStundenplan(sp);
}
/**
* Das Entfernen des ausgewählten Kunden wird an die Unterkomponenten weitergereicht.
*
*/
private void removeSelectedStundenplan () {
spf.removeStundenplan();
sus.removeStundenplanTreeNode(selectedStundenplan);
selectedStundenplan = null;
}
/**
* Das Setzen des ausgewählten Kontos wird an die Unterkomponente weitergereicht.
* @param a
*/
private void setSelectedSemesterverband (Semesterverband sv) {
selectedSemesterverband = sv;
svf.setSemesterverband(sv);
}
/**
* Das Löschen des ausgewählten Kontos wird an die Unterkomponente weitergereicht.
*
*/
private void removeSelectedSemesterverband() {
svf.removeSemesterverband();
sus.removeSemesterverbandTreeNode(selectedSemesterverband);
selectedSemesterverband = null;
}
/**
* Implementierung der vom Interface ActionListener geforderten Methode zur Reaktion
* auf ActionEvents.
*/
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("changeDozent")){
if (selectedDozent != null) {
ic.modifyDozent(selectedDozent, df.getName(), selectedStudiengang, selectedLehrveranstaltung);
}
}
if (e.getActionCommand().equals("createDozent")){
if (selectedDozent != null) {
ic.createDozent(df.getName(), selectedStudiengang, selectedLehrveranstaltung);
}
}
if (e.getActionCommand().equals("deleteDozent")){
if (selectedDozent != null) {
ic.deleteDozent(selectedDozent);
}
}
if (e.getActionCommand().equals("changeLehrveranstaltung")){
if (selectedLehrveranstaltung != null) {
ic.modifyLehrveranstaltung(selectedLehrveranstaltung, lvf.getEdvNr(), lvf.getBezeichnung(), selectedStudiengang, selectedSemesterverband);
}
}
if (e.getActionCommand().equals("createLehrveranstaltung")){
if (selectedLehrveranstaltung != null) {
ic.createLehrveranstaltung(lvf.getEdvNr(), lvf.getBezeichnung(), selectedStudiengang, selectedSemesterverband);
}
}
if (e.getActionCommand().equals("deleteLehrveranstaltung")){
if (selectedLehrveranstaltung != null) {
ic.deleteLehrveranstaltung(selectedLehrveranstaltung);
}
}
if (e.getActionCommand().equals("changeRaum")){
if (selectedRaum != null) {
ic.modifyRaum(selectedRaum, rf.getRaumNr(), rf.getKapazitaet());
}
}
if (e.getActionCommand().equals("createRaum")){
if (selectedRaum != null) {
ic.createRaum(rf.getRaumNr(), rf.getKapazitaet());
}
}
if (e.getActionCommand().equals("deleteRaum")){
if (selectedRaum != null) {
ic.deleteRaum(selectedRaum);
}
}
if (e.getActionCommand().equals("changeStundenplan")){
if (selectedStundenplan != null) {
setSelectedStundenplan(ic.modifyStundenplan(selectedStundenplan, selectedLehrveranstaltung, selectedZeit, selectedWochentag, selectedRaum));
sus.modifyStundenplanTreeNode(selectedStundenplan);
} else {
JOptionPane.showMessageDialog(frame, "Kein Stundenplan ausgewählt!");
}
return;
}
if (e.getActionCommand().equals("createStundenplan")) {
if (selectedStundenplan != null){
System.out.println("Creating Stundenplan");
setSelectedStundenplan(ic.createStundenplan(selectedLehrveranstaltung, selectedZeit, selectedWochentag, selectedRaum));
sus.addStundenplanTreeNode(new StundenplanInfo(selectedStundenplan));
}
} else {
JOptionPane.showMessageDialog(frame, "Kein Stundenplan ausgewählt!");
}
if (e.getActionCommand().equals("deleteStundenplan")) {
if (selectedStundenplan != null) {
if (JOptionPane.showConfirmDialog(frame, "Soll Stundenplan "
+ spf.getId() +
" wirklich gelöscht werden?", "Bestätigung",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
ic.deleteStundenplan(selectedStundenplan);
removeSelectedStundenplan();
}
} else {
JOptionPane.showMessageDialog(frame, "Kein Stundenplan ausgewählt!");
}
return;
}
if (e.getActionCommand().equals("changeSemesterverband")){
if (selectedSemesterverband != null) {
setSelectedSemesterverband(ic.modifySemesterverband(selectedSemesterverband, selectedStudiengang, svf.getStudiengangsem(), svf.getAnzahl()));
sus.modifySemesterverbandTreeNode(selectedSemesterverband);
} else {
JOptionPane.showMessageDialog(frame, "Kein Semesterverband ausgewählt!");
}
return;
}
if (e.getActionCommand().equals("createSemesterverband")) {
if (selectedSemesterverband != null){
System.out.println("Creating Semesterverband");
setSelectedSemesterverband((ic.createSemesterverband(selectedStudiengang, svf.getStudiengangsem(), svf.getAnzahl())));
sus.addSemesterverbandTreeNode(new SemesterverbandInfo(selectedSemesterverband));
}
} else {
JOptionPane.showMessageDialog(frame, "Kein Stundenplan ausgewählt!");
}
if (e.getActionCommand().equals("deleteSemesterverband")) {
if (selectedSemesterverband != null) {
if (JOptionPane.showConfirmDialog(frame, "Soll Semesterverband "
+ svf.getId() +
" wirklich gelöscht werden?", "Bestätigung",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
ic.deleteSemesterverband(selectedSemesterverband);
removeSelectedSemesterverband();
}
} else {
JOptionPane.showMessageDialog(frame, "Kein Semesterverband ausgewählt!");
}
return;
}
}
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = sus.getLastSelectedPathComponent();
if (node != null) {
if (node.getUserObject() instanceof SemesterverbandInfo) {
setSelectedStundenplan(null);
sus.setSelectedStundenplanNode(null);
SemesterverbandInfo svi = (SemesterverbandInfo)node.getUserObject();
setSelectedSemesterverband(svi.getSemesterverband());
sus.setSelectedSemesterverbandNode(node);
} else {
StundenplanInfo si = (StundenplanInfo)node.getUserObject();
setSelectedStundenplan(si.getStundenplan());
sus.setSelectedStundenplanNode(node);
node = (DefaultMutableTreeNode)node.getParent();
SemesterverbandInfo svi = (SemesterverbandInfo)node.getUserObject();
setSelectedSemesterverband(svi.getSemesterverband());
sus.setSelectedSemesterverbandNode(node);
}
}
}
}