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/ChgUserDlg.java | 144 +++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 Bachelor/ERGO/TierheimVerw/thv/ChgUserDlg.java (limited to 'Bachelor/ERGO/TierheimVerw/thv/ChgUserDlg.java') diff --git a/Bachelor/ERGO/TierheimVerw/thv/ChgUserDlg.java b/Bachelor/ERGO/TierheimVerw/thv/ChgUserDlg.java new file mode 100644 index 0000000..482a2c4 --- /dev/null +++ b/Bachelor/ERGO/TierheimVerw/thv/ChgUserDlg.java @@ -0,0 +1,144 @@ +import java.io.*; +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import javax.swing.table.*; + +/** + * @author Andreas Spirka, Sven Eisenhauer + * Dialog zum Ändern und Löschen von Benutzern + */ +public class ChgUserDlg extends AbstractMyJDlg implements ListSelectionListener +{ + Container c; + JPanel contentPane; + BorderLayout borderLayout1 = new BorderLayout(); + int counter = 0; + + UserCon users = new UserCon(); // Objekt-Container und TableModel + JScrollPane scrollPane = new JScrollPane(); // Scroll-Pane + JTable table = new JTable(); // Tabelle + + JPanel jPanelSouth = new JPanel(); + JLabel jLabelSelection = new JLabel(); + JTextField jTextFieldAuswahl = new JTextField(); + String fName = new String ("user.dat"); + JButton delB = new JButton("Löschen"); + JButton saveB = new JButton("Speichern"); + JButton abbrB = new JButton("Abbrechen"); + JComboBox comboBox = new JComboBox(User.sRole); + JTextField tf = new JTextField(); + DefaultCellEditor cellEd = new DefaultCellEditor(tf); + DefaultCellEditor comboEd = new DefaultCellEditor(comboBox); + + ChgUserDlg() { + ButtonListener2 bl = new ButtonListener2(this); + c = getContentPane(); + setModal(true); + c.setLayout(borderLayout1); + setSize(new Dimension(600, 300)); + setTitle("Benutzer ändern / löschen"); + jPanelSouth.setBorder(BorderFactory.createEtchedBorder()); + jLabelSelection.setText("Auswahl"); + jTextFieldAuswahl.setText("kein Benutzer ausgewählt"); + + + c.add( scrollPane, java.awt.BorderLayout.CENTER ); + scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED ); + scrollPane.getViewport().add( table ); // Table in Scroll-Pane + c.add(jPanelSouth, java.awt.BorderLayout.SOUTH); + jPanelSouth.add(delB); + jPanelSouth.add(saveB); + jPanelSouth.add(abbrB); + delB.addActionListener(bl); + abbrB.addActionListener(bl); + saveB.addActionListener(bl); + saveB.setActionCommand("Speichern"); + delB.setActionCommand("Löschen"); + abbrB.setActionCommand("Abbrechen"); + + try { + FileInputStream fis = new FileInputStream(fName); + ObjectInputStream ois = new ObjectInputStream(fis); + users = (UserCon) ois.readObject(); + ois.close(); + fis.close(); + } catch (Exception exception) { exception.printStackTrace(); } + table.setModel( users ); // Model für Tabelle setzen + // Einzelauswahl + table.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); + ListSelectionModel lsm = table.getSelectionModel(); + lsm.addListSelectionListener( this ); // TableModelListener regitrieren + table.setCellSelectionEnabled(true); + TableColumn loginColumn = table.getColumnModel().getColumn(0); + TableColumn pwColumn = table.getColumnModel().getColumn(1); + TableColumn fullNamColumn = table.getColumnModel().getColumn(2); + TableColumn uidColumn = table.getColumnModel().getColumn(3); + TableColumn roleColumn = table.getColumnModel().getColumn(4); + loginColumn.setCellEditor(cellEd); + pwColumn.setCellEditor(cellEd); + fullNamColumn.setCellEditor(cellEd); + uidColumn.setCellEditor(cellEd); + roleColumn.setCellEditor(comboEd); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + Dimension frameSize = getSize(); + setLocation((screenSize.width/2)-(frameSize.width/2),(screenSize.height/2)-(frameSize.height/2)); + setVisible(true); + } + + /* (non-Javadoc) + * @see AbstractMyJDlg#buttonActionPerformed(java.awt.event.ActionEvent) + */ + public void buttonActionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("Abbrechen")) + { + setVisible(false); + } + else if(e.getActionCommand().equals("Löschen")) + { + table.removeEditor(); + users.removeUser((User) users.elementAt(table.getSelectedRow())); + try { + FileOutputStream fos = new FileOutputStream(fName); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(users); + oos.close(); + fos.close(); + } catch (Exception exception) { exception.printStackTrace(); } + } + else if(e.getActionCommand().equals("Speichern")) + { + if (table.isEditing()) { + table.getCellEditor().stopCellEditing(); + } + table.removeEditor(); + table.clearSelection(); + try { + FileOutputStream fos = new FileOutputStream(fName); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(users); + oos.close(); + fos.close(); + } catch (Exception exception) { exception.printStackTrace(); } + } + } + /* (non-Javadoc) + * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent) + */ + public void valueChanged( ListSelectionEvent e ) + { + /* in der Hörsaalübung kam es hier zum Crash, wenn eine Zeile + * ausgewählt war und eine neue hinzugefügt wurde. In diesem + * Fall ist die erste und zuletzt ausgewählte Zeile identisch. + * Das wir hier abgefangen. + */ + /*if ( e.getFirstIndex() == e.getLastIndex() ) { + jTextFieldAuswahl.setText( "kein Benutzer ausgewählt"); + return; + } + String login = (String) table.getValueAt(table.getSelectedRow(), 0); + String nam = (String) table.getValueAt(table.getSelectedRow(), 2); + this.jTextFieldAuswahl.setText( login + " (" + nam + ")" );*/ + } +} \ No newline at end of file -- cgit v1.2.3