forked from IF-LK-2020/stundenplan
Sortieren nach Fächern und Räumen hinzugefügt
This commit is contained in:
@@ -38,26 +38,43 @@ public class Stundenplan implements SelectionListener {
|
|||||||
|
|
||||||
// Lehrer abfragen und ein Auswahlfeld erstellen, dass in der
|
// Lehrer abfragen und ein Auswahlfeld erstellen, dass in der
|
||||||
// GUI angezeigt wird, um den angezeigten Stundenplan anzupassen
|
// GUI angezeigt wird, um den angezeigten Stundenplan anzupassen
|
||||||
dbc.executeStatement("SELECT kuerzel FROM lehrer");
|
dbc.executeStatement("SELECT kuerzel FROM lehrer ORDER BY kuerzel");
|
||||||
r = dbc.getCurrentQueryResult();
|
r = dbc.getCurrentQueryResult();
|
||||||
String[] teachers = new String[r.getRowCount()];
|
String[] lehrer = new String[r.getRowCount()];
|
||||||
for (int i = 0; i < r.getRowCount(); i++) {
|
for (int i = 0; i < r.getRowCount(); i++) {
|
||||||
teachers[i] = r.getData()[i][0];
|
lehrer[i] = r.getData()[i][0];
|
||||||
}
|
}
|
||||||
gui.addFilter("Lehrer", teachers);
|
gui.addFilter("Lehrer", lehrer);
|
||||||
// Das gleiche für die klassen
|
// Das gleiche für die klassen
|
||||||
dbc.executeStatement("SELECT bezeichner FROM klassen");
|
dbc.executeStatement("SELECT bezeichner FROM klassen ORDER BY bezeichner");
|
||||||
r = dbc.getCurrentQueryResult();
|
r = dbc.getCurrentQueryResult();
|
||||||
String[] klassen = new String[r.getRowCount()];
|
String[] klassen = new String[r.getRowCount()];
|
||||||
for (int i = 0; i < r.getRowCount(); i++) {
|
for (int i = 0; i < r.getRowCount(); i++) {
|
||||||
klassen[i] = r.getData()[i][0];
|
klassen[i] = r.getData()[i][0];
|
||||||
}
|
}
|
||||||
gui.addFilter("Klassen", klassen);
|
gui.addFilter("Klassen", klassen);
|
||||||
|
// Und für die Räume:
|
||||||
|
dbc.executeStatement("SELECT DISTINCT Raum FROM Unterrichtsstunden ORDER BY Raum");
|
||||||
|
r = dbc.getCurrentQueryResult();
|
||||||
|
String[] räume = new String[r.getRowCount()];
|
||||||
|
for (int i = 0; i < r.getRowCount(); i++) {
|
||||||
|
räume[i] = r.getData()[i][0];
|
||||||
|
}
|
||||||
|
gui.addFilter("Räume", räume);
|
||||||
|
// Und die Fächer:
|
||||||
|
dbc.executeStatement("SELECT DISTINCT Fach FROM Unterrichtsstunden ORDER BY Fach");
|
||||||
|
r = dbc.getCurrentQueryResult();
|
||||||
|
String[] fächer = new String[r.getRowCount()];
|
||||||
|
for (int i = 0; i < r.getRowCount(); i++) {
|
||||||
|
fächer[i] = r.getData()[i][0];
|
||||||
|
}
|
||||||
|
gui.addFilter("Fächer", fächer);
|
||||||
// GUI anzeigen und Verhalten bei Interaktion festlegen
|
// GUI anzeigen und Verhalten bei Interaktion festlegen
|
||||||
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
gui.addSelectionListener(this); // GUI ruft Methode selectionChanged auf, wenn sich eine Auswahlbox ändert.
|
gui.addSelectionListener(this); // GUI ruft Methode selectionChanged auf, wenn sich eine Auswahlbox ändert.
|
||||||
gui.setLocationRelativeTo(null);
|
gui.setLocationRelativeTo(null);
|
||||||
gui.setVisible(true);
|
gui.setVisible(true);
|
||||||
|
selectionChanged("Lehrer", lehrer[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -95,7 +112,7 @@ public class Stundenplan implements SelectionListener {
|
|||||||
"Raum " + data[i][1], // Untertitel
|
"Raum " + data[i][1], // Untertitel
|
||||||
data[i][2], // Beschreibungstext
|
data[i][2], // Beschreibungstext
|
||||||
pNewValue, // Fußzeile
|
pNewValue, // Fußzeile
|
||||||
new Color(-16711936) // Farbe (Objekt der Klasse Color)
|
new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +125,10 @@ public class Stundenplan implements SelectionListener {
|
|||||||
gui.removeAllLessons();
|
gui.removeAllLessons();
|
||||||
|
|
||||||
// Neue Daten aus der Datenbank abfragen.
|
// Neue Daten aus der Datenbank abfragen.
|
||||||
dbc.executeStatement("");
|
dbc.executeStatement(
|
||||||
|
"SELECT Fach,Raum,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden"
|
||||||
|
+ " WHERE sind_in_Unterrichtsstunden.Stunden_ID = Unterrichtsstunden.StundenId AND sind_in_Unterrichtsstunden.Klassen_Bezeichner LIKE \""
|
||||||
|
+ pNewValue + "\"");
|
||||||
QueryResult r = dbc.getCurrentQueryResult();
|
QueryResult r = dbc.getCurrentQueryResult();
|
||||||
|
|
||||||
// Falls es ein Ergebnis gibt ...
|
// Falls es ein Ergebnis gibt ...
|
||||||
@@ -121,12 +141,74 @@ public class Stundenplan implements SelectionListener {
|
|||||||
Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
|
Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
|
||||||
data[i][0], // Titel
|
data[i][0], // Titel
|
||||||
"Raum " + data[i][1], // Untertitel
|
"Raum " + data[i][1], // Untertitel
|
||||||
data[i][2], // Beschreibungstext
|
pNewValue, // Beschreibungstext
|
||||||
pNewValue, // Fußzeile
|
data[i][2], // Fußzeile
|
||||||
new Color(-16711936) // Farbe (Objekt der Klasse Color)
|
new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
|
||||||
|
gui.revalidate();
|
||||||
|
gui.repaint();
|
||||||
|
}
|
||||||
|
} else if (pList == "Räume") {
|
||||||
|
// Zuerst alle bisherigen Stunden aus der GUI entfernen
|
||||||
|
gui.removeAllLessons();
|
||||||
|
|
||||||
|
// Neue Daten aus der Datenbank abfragen.
|
||||||
|
dbc.executeStatement(
|
||||||
|
"SELECT Fach,Klassen_bezeichner,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden "
|
||||||
|
+ "WHERE Unterrichtsstunden.StundenID = sind_in_Unterrichtsstunden.Stunden_ID AND Raum LIKE \""
|
||||||
|
+ pNewValue + "\"");
|
||||||
|
QueryResult r = dbc.getCurrentQueryResult();
|
||||||
|
|
||||||
|
// Falls es ein Ergebnis gibt ...
|
||||||
|
if (r != null) {
|
||||||
|
String[][] data = r.getData();
|
||||||
|
|
||||||
|
// Neue Stunden in die GUI schreiben
|
||||||
|
for (int i = 0; i < data.length; i++) {
|
||||||
|
gui.addLesson(bestimmeSpalte(data[i][3]), // Spalte im Plan (0=Montag, ... ,4=Freitag)
|
||||||
|
Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
|
||||||
|
data[i][0], // Titel
|
||||||
|
"Raum " + pNewValue, // Untertitel
|
||||||
|
data[i][1], // Beschreibungstext
|
||||||
|
data[i][2], // Fußzeile
|
||||||
|
new Color(bestimmeFarbe(data[i][0])) // Farbe (Objekt der Klasse Color)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
|
||||||
|
gui.revalidate();
|
||||||
|
gui.repaint();
|
||||||
|
}
|
||||||
|
} else if (pList == "Fächer") {
|
||||||
|
// Zuerst alle bisherigen Stunden aus der GUI entfernen
|
||||||
|
gui.removeAllLessons();
|
||||||
|
|
||||||
|
// Neue Daten aus der Datenbank abfragen.
|
||||||
|
dbc.executeStatement(
|
||||||
|
"SELECT Raum,Klassen_bezeichner,Lehrer_Kürzel,Tag,Stunde FROM Unterrichtsstunden LEFT OUTER JOIN sind_in_Unterrichtsstunden "
|
||||||
|
+ "WHERE Unterrichtsstunden.StundenID = sind_in_Unterrichtsstunden.Stunden_ID AND Fach LIKE \""
|
||||||
|
+ pNewValue + "\"");
|
||||||
|
QueryResult r = dbc.getCurrentQueryResult();
|
||||||
|
|
||||||
|
// Falls es ein Ergebnis gibt ...
|
||||||
|
if (r != null) {
|
||||||
|
String[][] data = r.getData();
|
||||||
|
|
||||||
|
// Neue Stunden in die GUI schreiben
|
||||||
|
for (int i = 0; i < data.length; i++) {
|
||||||
|
gui.addLesson(bestimmeSpalte(data[i][3]), // Spalte im Plan (0=Montag, ... ,4=Freitag)
|
||||||
|
Integer.parseInt(data[i][4]) - 1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
|
||||||
|
pNewValue, // Titel
|
||||||
|
"Raum " + data[i][0], // Untertitel
|
||||||
|
data[i][1], // Beschreibungstext
|
||||||
|
data[i][2], // Fußzeile
|
||||||
|
new Color(bestimmeFarbe(pNewValue) // Farbe (Objekt der Klasse Color)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
|
// GUI-Fenster neu zeichnen, um neue Elemente anzuzeigen.
|
||||||
gui.revalidate();
|
gui.revalidate();
|
||||||
gui.repaint();
|
gui.repaint();
|
||||||
@@ -150,4 +232,43 @@ public class Stundenplan implements SelectionListener {
|
|||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int bestimmeFarbe(String pFach) {
|
||||||
|
switch (pFach) {
|
||||||
|
case "Biologie":
|
||||||
|
return 0x00FF77;
|
||||||
|
case "Mathematik":
|
||||||
|
return 0x5000FF;
|
||||||
|
case "Latein":
|
||||||
|
return 0xFFBF00;
|
||||||
|
case "Französisch":
|
||||||
|
return 0xFF00E9;
|
||||||
|
case "Informatik":
|
||||||
|
return 0x000000;
|
||||||
|
case "Englisch":
|
||||||
|
return 0xFF0000;
|
||||||
|
case "Kunst":
|
||||||
|
return 0xFFFFFF;
|
||||||
|
case "Deutsch":
|
||||||
|
return 0x0055FF;
|
||||||
|
case "Musik":
|
||||||
|
return 0xFFD000;
|
||||||
|
case "Sport":
|
||||||
|
return 0x00FFE9;
|
||||||
|
case "Philosophie":
|
||||||
|
return 0x9800FF;
|
||||||
|
case "Religion":
|
||||||
|
return 0x632B00;
|
||||||
|
case "Chemie":
|
||||||
|
return 0xB600FF;
|
||||||
|
case "Physik":
|
||||||
|
return 0xFFE100;
|
||||||
|
case "Erdkunde":
|
||||||
|
return 0x00871F;
|
||||||
|
case "Geschichte":
|
||||||
|
return 0x844000;
|
||||||
|
default:
|
||||||
|
return 0xFFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ public class StundenplanGUI extends JFrame implements ActionListener {
|
|||||||
*/
|
*/
|
||||||
public void removeAllLessons() {
|
public void removeAllLessons() {
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
for (int j = 0; j < 10; j++) {
|
for (int j = 0; j < 12; j++) {
|
||||||
removeLesson(i, j);
|
removeLesson(i, j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -235,7 +235,7 @@ public class StundenplanGUI extends JFrame implements ActionListener {
|
|||||||
c.fill = GridBagConstraints.NONE;
|
c.fill = GridBagConstraints.NONE;
|
||||||
c.weightx = 0.2;
|
c.weightx = 0.2;
|
||||||
c.weighty = 0.5;
|
c.weighty = 0.5;
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 12; i++) {
|
||||||
c.gridy = i + 1;
|
c.gridy = i + 1;
|
||||||
jpPlan.add(makeLabel((i + 1) + ". Stunde", fHeader), c);
|
jpPlan.add(makeLabel((i + 1) + ". Stunde", fHeader), c);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user