diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Bachelor/ERGO/TierheimVerw/thv/thv.java | |
| download | Studium-master.tar.gz Studium-master.tar.bz2 | |
Diffstat (limited to 'Bachelor/ERGO/TierheimVerw/thv/thv.java')
| -rw-r--r-- | Bachelor/ERGO/TierheimVerw/thv/thv.java | 470 |
1 files changed, 470 insertions, 0 deletions
diff --git a/Bachelor/ERGO/TierheimVerw/thv/thv.java b/Bachelor/ERGO/TierheimVerw/thv/thv.java new file mode 100644 index 0000000..b249c25 --- /dev/null +++ b/Bachelor/ERGO/TierheimVerw/thv/thv.java @@ -0,0 +1,470 @@ +import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import java.util.*;
+import javax.swing.border.Border;
+import javax.swing.BorderFactory;
+import javax.swing.border.EtchedBorder;
+import java.io.FileOutputStream;
+import java.io.ObjectOutputStream;
+import java.io.FileInputStream;
+import java.io.ObjectInputStream;
+import java.io.File;
+
+/**
+ * @author Andreas Spirka, Sven Eisenhauer
+ *
+ */
+
+public class thv extends AbstractMyJFrame implements Observer,WindowListener
+{
+ static boolean unsaved = false;
+ boolean tiercon_exists = false;
+ Container c;
+ JPanel pTop = new JPanel();
+ JMenuBar menuBar = new JMenuBar();
+ JMenu menuDatei = new JMenu("Datei");
+ JMenu menuBearbeiten = new JMenu("Bearbeiten");
+ JMenu menuAnmeldung = new JMenu ("Anmeldung");
+ JMenu menuAdmin = new JMenu ("Administration");
+ JMenuItem dateiNeu = new JMenuItem("Neu");
+ JMenuItem dateiOeffnen = new JMenuItem("Oeffnen");
+ JMenuItem dateiSpeichern = new JMenuItem("Speichern");
+ JMenuItem beenden = new JMenuItem("Beenden");
+ JMenuItem bearbeitenNeu = new JMenuItem("Tier anlegen/bearbeiten");
+ JMenuItem bearbeitenAnzeigen = new JMenuItem("Tier anzeigen");
+ JMenuItem bearbeitenAlleAnzeigen = new JMenuItem("Alle Tiere anzeigen");
+ JMenuItem bearbeitenAlleNFAnzeigen = new JMenuItem("Nicht freigegebenen Tiere anzeigen");
+ JMenuItem bearbeitenAlleFAnzeigen = new JMenuItem("Freigegebenen Tiere anzeigen");
+ JMenuItem anmeldAuth = new JMenuItem("Anmelden");
+ JMenuItem abmelden = new JMenuItem("Abmelden");
+ JMenuItem adminNeu = new JMenuItem("Benutzer anlegen");
+ JMenuItem adminLoeschen = new JMenuItem("Benutzer ändern/löschen");
+ JPanel statusBar = new JPanel(new BorderLayout());
+ JLabel statusLabel = new JLabel();
+ User gastUser = new User("Gast","Gast","Gast",-1,User.ROLE_GUEST);
+ static User actUser = new User();
+
+ Border loweredetched = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
+ JTree tree = new JTree();
+ JScrollPane spane = new JScrollPane();
+ static TierCon tiercon = new TierCon();
+ protected transient JFileChooser chooser;
+ TierDialog tierDialog = new TierDialog(0);
+
+ /**
+ * Konstruktor
+ */
+
+ public thv()
+ {
+ newCon();
+ actUser.addObserver(this);
+ actUser.setUser(gastUser);
+ addWindowListener(this);
+ c = getContentPane();
+ c.setLayout( new BorderLayout() );
+ c.add(pTop);
+ ButtonListener bl = new ButtonListener( this );
+ //***MNEMONICS***
+ menuDatei.setMnemonic(KeyEvent.VK_D);
+ menuBearbeiten.setMnemonic(KeyEvent.VK_B);
+ bearbeitenNeu.setMnemonic(KeyEvent.VK_N);
+ beenden.setMnemonic(KeyEvent.VK_B);
+ bearbeitenNeu.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
+ dateiNeu.setMnemonic(KeyEvent.VK_N);
+ dateiOeffnen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
+ dateiOeffnen.setMnemonic(KeyEvent.VK_O);
+ dateiSpeichern.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
+ dateiSpeichern.setMnemonic(KeyEvent.VK_S);
+ anmeldAuth.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
+ anmeldAuth.setMnemonic(KeyEvent.VK_A);
+ abmelden.setMnemonic(KeyEvent.VK_B);
+ //Datei Items
+ dateiOeffnen.addActionListener( bl );
+ dateiOeffnen.setActionCommand("dateiOeffnen");
+ dateiNeu.addActionListener( bl );
+ dateiNeu.setActionCommand("dateiNeu");
+ dateiSpeichern.addActionListener( bl );
+ dateiSpeichern.setActionCommand("dateiSpeichern");
+ beenden.addActionListener( bl );
+ beenden.setActionCommand("beenden");
+ // Anmeldung Items
+ anmeldAuth.addActionListener( bl );
+ anmeldAuth.setActionCommand("auth");
+ abmelden.addActionListener( bl );
+ abmelden.setActionCommand("logout");
+ // Bearbeiten Items
+ bearbeitenNeu.addActionListener( bl );
+ bearbeitenNeu.setActionCommand("bearbeitenNeu");
+ bearbeitenAnzeigen.addActionListener( bl );
+ bearbeitenAnzeigen.setActionCommand("bearbeitenAnzeigen");
+ bearbeitenAlleAnzeigen.addActionListener( bl );
+ bearbeitenAlleAnzeigen.setActionCommand("bearbeitenAlleAnzeigen");
+ bearbeitenAlleNFAnzeigen.addActionListener( bl );
+ bearbeitenAlleNFAnzeigen.setActionCommand("bearbeitenAlleNFAnzeigen");
+ bearbeitenAlleFAnzeigen.addActionListener( bl );
+ bearbeitenAlleFAnzeigen.setActionCommand("bearbeitenAlleFAnzeigen");
+ // Admin Items
+ adminNeu.addActionListener( bl );
+ adminNeu.setActionCommand("adminNeu");
+ adminLoeschen.setActionCommand("adminLoeschen");
+ adminLoeschen.addActionListener( bl );
+ // MenuBar
+ menuBar.add(menuDatei);
+ menuBar.add(menuBearbeiten);
+ menuBar.add(menuAnmeldung);
+ menuBar.add(menuAdmin);
+ // Menus
+ menuAdmin.add(adminNeu);
+ menuAdmin.add(adminLoeschen);
+ menuAdmin.setVisible(false);
+ menuAnmeldung.add(anmeldAuth);
+ menuAnmeldung.add(abmelden);
+ menuDatei.add( dateiNeu);
+ menuDatei.add( dateiOeffnen);
+ menuDatei.add( dateiSpeichern);
+ menuDatei.addSeparator();
+ menuDatei.add( beenden );
+ menuBearbeiten.add(bearbeitenNeu);
+ menuBearbeiten.add(bearbeitenAnzeigen);
+ menuBearbeiten.add(bearbeitenAlleAnzeigen);
+ menuBearbeiten.add(bearbeitenAlleNFAnzeigen);
+ menuBearbeiten.add(bearbeitenAlleFAnzeigen);
+ setJMenuBar(menuBar);
+ // statusbar
+ statusLabel.setText("Benutzer: "+actUser.getUserName()+" Rolle: "+actUser.getRoleAsString());
+ statusLabel.setHorizontalAlignment(JLabel.LEFT);
+ statusBar.add(statusLabel,BorderLayout.WEST);
+ statusBar.setBorder(loweredetched);
+ c.add(statusBar, BorderLayout.SOUTH);
+ }
+
+ /**
+ * Öffnet Benutzerauthentifizierungsdialog
+ * und setzt aktuellen Benutzer
+ */
+ public void validateUser() {
+ PwDialog pwDialog = new PwDialog(this,"Benutzerauthentifizierung",true);
+ actUser.setUser(pwDialog.getUser());
+ }
+
+ /**
+ * Öffnet Dialog zum öffnen einer Datei
+ * @return Dateiname
+ */
+ public String openFileDialog()
+ {
+ String path = new File("").getAbsolutePath();
+ chooser = new JFileChooser(path);
+ JOptionPane pane = new JOptionPane();
+ JDialog dod = pane.createDialog(this,"Datei öffnen...");
+ String retVal = "";
+
+ ThvFilter filter = new ThvFilter();
+ chooser.setFileFilter(filter);
+ int returnVal = chooser.showOpenDialog(dod);
+ if(returnVal == JFileChooser.APPROVE_OPTION) {
+ retVal= chooser.getSelectedFile().getPath();
+ }
+ dod.dispose();
+ return retVal;
+ }
+
+ /**
+ * Öffnet Dialog zum speichern einer Datei
+ * @return Dateiname
+ */
+ public String saveFileDialog() {
+ String path = new File("").getAbsolutePath();
+ chooser = new JFileChooser(path);
+ JOptionPane pane = new JOptionPane();
+ JDialog dod = pane.createDialog(this,"Datei speichern...");
+ String retVal = "";
+
+ ThvFilter filter = new ThvFilter();
+ chooser.setFileFilter(filter);
+ int returnVal = chooser.showSaveDialog(dod);
+ if(returnVal == JFileChooser.APPROVE_OPTION) {
+ //retVal= chooser.getSelectedFile().getName();
+ retVal= chooser.getSelectedFile().getPath();
+ dod.dispose();
+ }
+ return retVal;
+ }
+
+ /**
+ * Lädt Container aus Default-Datei oder legt neuen Container an
+ */
+ public void newCon()
+ {
+ File file = new File("Tierheim1.thv");
+ if (file.exists())
+ {
+ try {
+ FileInputStream fis = new FileInputStream(file);
+ ObjectInputStream ois = new ObjectInputStream(fis);
+ tiercon = (TierCon) ois.readObject();
+ ois.close();
+ tiercon_exists = true;
+ } catch (Exception exception) { exception.printStackTrace(); }
+ }
+ else
+ {
+ tiercon=new TierCon();
+ tiercon_exists = true;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see AbstractMyJFrame#buttonActionPerformed(java.awt.event.ActionEvent)
+ */
+public void buttonActionPerformed( ActionEvent e )
+ {
+ String ac = e.getActionCommand();
+ if (ac.equals("dateiOeffnen") ) {
+ String selectedFile = openFileDialog();
+ //JOptionPane.showMessageDialog(this,selectedFile,"Gewählte Datei",JOptionPane.INFORMATION_MESSAGE);
+ if (!selectedFile.equals(""))
+ {
+ try {
+ FileInputStream fis = new FileInputStream(selectedFile);
+ ObjectInputStream ois = new ObjectInputStream(fis);
+ tiercon = (TierCon) ois.readObject();
+ ois.close();
+ tiercon_exists = true;
+ } catch (Exception exception) { exception.printStackTrace(); }
+ /*tiercon.loadFromFile( selectedFile );
+ * tiercon_exists = true;*/
+ }
+ }
+ else if (ac.equals("dateiNeu") ) {
+ newCon();
+ }
+ else if (ac.equals("dateiSpeichern") ) {
+ String saveFile = saveFileDialog();
+ if (!saveFile.equals(""))
+ {
+ try {
+ FileOutputStream fos = new FileOutputStream(saveFile);
+ ObjectOutputStream oos = new ObjectOutputStream(fos);
+ oos.writeObject(tiercon);
+ oos.close();
+ setDataChanged(false);
+ } catch (Exception exception) { exception.printStackTrace(); }
+ }
+ }
+ else if (ac.equals("beenden") ) {
+ exitThv();
+ }
+ else if (ac.equals("auth") ) {
+ validateUser();
+ }
+ else if (ac.equals("logout"))
+ {
+ if (unsaved == false) {
+ actUser.setUser(gastUser);
+ }
+ else {
+ int retVal = JOptionPane.showConfirmDialog(this,
+ "Nicht gespeicherte Änderungen\nÄnderungen gehen verloren!",
+ "Abmelden ohne speichern?",
+ JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
+ if (retVal == JOptionPane.YES_OPTION) {
+ actUser.setUser(gastUser);
+ }
+ }
+ }
+ else if (ac.equals("adminNeu") ) {
+ new AdminDlg();
+ }
+ else if (ac.equals("adminLoeschen") ) {
+ new ChgUserDlg();
+ }
+ else if (ac.equals("bearbeitenNeu")) {
+ if (tiercon_exists == true) {
+ new TierVerDialog();
+ }
+ }
+ else if (ac.equals("bearbeitenAnzeigen")) {
+ if (tiercon_exists == true) {
+ tierDialog.updateTc();
+ tierDialog.setVisible(true);
+ }
+ }
+ else if (ac.equals("bearbeitenAlleAnzeigen")) {
+ if (tiercon_exists == true) {
+ new AlleTiereDlg();
+ }
+ }
+ else if (ac.equals("bearbeitenAlleNFAnzeigen")) {
+ if (tiercon_exists == true) {
+ new AlleNFTiereDlg();
+ }
+ }
+ else if (ac.equals("bearbeitenAlleFAnzeigen")) {
+ if (tiercon_exists == true) {
+ new AlleFTiereDlg();
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
+ */
+ public void update(Observable o, Object arg) {
+ statusLabel.setText("Benutzer: "+actUser.getUserName()+" Rolle: "+actUser.getRoleAsString());
+ tierDialog.updateTc();
+ if(actUser.getRole() == User.ROLE_GUEST) {
+ adminNeu.setVisible(false);
+ adminLoeschen.setVisible(false);
+ dateiNeu.setVisible(false);
+ dateiSpeichern.setVisible(false);
+ bearbeitenNeu.setVisible(false);
+ bearbeitenAlleNFAnzeigen.setVisible(false);
+ bearbeitenAlleAnzeigen.setVisible(false);
+ tierDialog.setVisible(true);
+ menuAdmin.setVisible(false);
+ }
+ else if (actUser.getRole() == User.ROLE_ADMIN) {
+ adminNeu.setEnabled(true);
+ adminLoeschen.setEnabled(true);
+ dateiNeu.setEnabled(true);
+ dateiOeffnen.setEnabled(true);
+ dateiSpeichern.setEnabled(true);
+ bearbeitenNeu.setEnabled(true);
+ adminNeu.setVisible(true);
+ adminLoeschen.setVisible(true);
+ dateiNeu.setVisible(true);
+ dateiSpeichern.setVisible(true);
+ bearbeitenNeu.setVisible(true);
+ bearbeitenAlleNFAnzeigen.setVisible(true);
+ bearbeitenAlleAnzeigen.setVisible(true);
+ tierDialog.setVisible(false);
+ menuAdmin.setVisible(true);
+ new ChgUserDlg();
+ }
+ else if (actUser.getRole() == User.ROLE_WORKER) {
+ adminNeu.setEnabled(false);
+ adminLoeschen.setEnabled(false);
+ dateiNeu.setEnabled(true);
+ dateiOeffnen.setEnabled(true);
+ dateiSpeichern.setEnabled(true);
+ bearbeitenNeu.setEnabled(true);
+ adminNeu.setVisible(true);
+ adminLoeschen.setVisible(true);
+ dateiNeu.setVisible(true);
+ dateiSpeichern.setVisible(true);
+ bearbeitenNeu.setVisible(true);
+ bearbeitenAlleNFAnzeigen.setVisible(true);
+ bearbeitenAlleAnzeigen.setVisible(true);
+ tierDialog.setVisible(false);
+ menuAdmin.setVisible(false);
+ new TierVerDialog();
+ }
+ else if ( actUser.getRole() == User.ROLE_VET ) {
+ adminNeu.setEnabled(false);
+ adminLoeschen.setEnabled(false);
+ dateiNeu.setEnabled(false);
+ //bearbeitenNeu.setEnabled(true);
+ //bearbeitenAlleNFAnzeigen.setEnabled(true);
+ adminNeu.setVisible(true);
+ adminLoeschen.setVisible(true);
+ dateiNeu.setVisible(true);
+ dateiSpeichern.setVisible(true);
+ bearbeitenNeu.setVisible(true);
+ bearbeitenAlleNFAnzeigen.setVisible(true);
+ bearbeitenAlleAnzeigen.setVisible(true);
+ tierDialog.setVisible(false);
+ menuAdmin.setVisible(false);
+ new AlleNFTiereDlg();
+ }
+ }
+ /**
+ * prüft, ob Daten nicht gespeichert sind und beendet dann die Anwendung
+ */
+ private void exitThv() {
+ if (unsaved == false) {
+ System.exit(0);
+ }
+ else {
+ int retVal = JOptionPane.showConfirmDialog(this,
+ "Beenden ohne speichern?",
+ "Nicht gespeicherte Änderungen",
+ JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
+ if (retVal == JOptionPane.YES_OPTION) {
+ System.exit(0);
+ }
+ }
+ }
+ /**
+ * Wird von anderen Dialogen verwendet, um zu signalisieren,
+ * ob Daten geändert wurden
+ * @param status
+ */
+ public static void setDataChanged(boolean status) {
+ unsaved=status;
+ }
+ /**
+ * Gibt an aktuell angemeldeten User zurück
+ * @return User
+ */
+ public static User getActUser() {return actUser; }
+ /**
+ * Gibt den aktuellen Tiercontainer zurück
+ * @return TierCon
+ */
+ public static TierCon getTierCon() {return tiercon;}
+ //WindowsListener methods
+ public void windowClosing(WindowEvent e) {
+ exitThv();
+ }
+ public void windowClosed(WindowEvent e) {
+ }
+ public void windowOpened(WindowEvent e) {
+ }
+ public void windowIconified(WindowEvent e) {
+ }
+ public void windowDeiconified(WindowEvent e) {
+ }
+ public void windowActivated(WindowEvent e) {
+ }
+ public void windowDeactivated(WindowEvent e) {
+ }
+ public void windowGainedFocus(WindowEvent e) {
+ }
+ public void windowLostFocus(WindowEvent e) {
+ }
+ public void windowStateChanged(WindowEvent e) {
+ }
+ /**
+ * Öffnet den ersten Dialog, wenn die Anwendung startet
+ */
+public void initDlg() {
+ tierDialog.toFront();
+ }
+
+ /**
+ * main-Methode.
+ */
+
+ public static void main( String[] argv )
+ {
+ try {
+ //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ }
+ catch (Exception exception) {
+ exception.printStackTrace();
+ }
+ thv fenster = new thv();
+ fenster.setTitle( "Tierheimverwaltung" );
+ fenster.setSize(new Dimension(800,600));
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ Dimension frameSize = fenster.getSize();
+ fenster.setLocation((screenSize.width/2)-(frameSize.width/2),(screenSize.height/2)-(frameSize.height/2));
+ fenster.setVisible( true );
+ //fenster.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
+ fenster.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
+ fenster.initDlg();
+ }
+}
\ No newline at end of file |
