From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- Bachelor/ERGO/TierheimVerw/thv/thv.java | 470 ++++++++++++++++++++++++++++++++ 1 file changed, 470 insertions(+) create mode 100644 Bachelor/ERGO/TierheimVerw/thv/thv.java (limited to 'Bachelor/ERGO/TierheimVerw/thv/thv.java') 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 -- cgit v1.2.3