package cz.cvut.fel.restauracefel.manager.manager_gui; import cz.cvut.fel.restauracefel.manager.ManagerController.UserFormResult; import java.io.FileNotFoundException; import java.rmi.NotBoundException; import java.rmi.RemoteException; import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import cz.cvut.fel.restauracefel.manager_service.ResultTableModel; import cz.cvut.fel.restauracefel.library.service.Validator; /** * Trida reprezentujici GUI formular pro editaci uzivatelu systemu. * * @author Jarda */ public class UserForm extends AbstractForm { private ManagerViewController view; private JTable table = null; private UserRoleDialog userRoleDialog = null; private StatusBar statusBar = null; private int row = -1; private JFrame parent = null; /** * Konstruktor tridy UserForm. * * @param parent * @param bar * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ public UserForm(JFrame parent, StatusBar bar) { this.parent = parent; this.statusBar = bar; view = ManagerViewController.getInstance(); initComponents(); initTable(); refresh(); clearFields(); } /** * Metoda provadi aktualizaci tabulky. * Zaroven prenastavuje statusBar. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ public void refresh() { refreshTable(); statusBar.setMessage("Tento formulář slouží k editaci a úpravě záznamů o zaměstnancích."); } /** * Metoda inicializujici tabulku. */ protected void initTable(){ table = new JTable(); table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); table.setRowSelectionAllowed(true); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { row = table.getSelectedRow(); if (row == -1){ clearFields(); } else { jTextFieldName.setText((String)table.getModel().getValueAt(row, 1)); jTextFieldSurname.setText((String)table.getModel().getValueAt(row, 2)); jTextFieldRoles.setText((String)table.getModel().getValueAt(row, 3)); jTextFieldPIN.setText((String)table.getModel().getValueAt(row, 4)); jTextFieldLogin.setText((String)table.getModel().getValueAt(row, 5)); jTextFieldOwnPasswd.setText((String)table.getModel().getValueAt(row, 6)); jButtonDelete.setEnabled(true); jButtonRole.setEnabled(true); jButtonInsert.setText("Změnit záznam o zaměstnanci"); statusBar.setMessage("Zaměstnanec ID: "+table.getValueAt(row, 0)+", \""+table.getValueAt(row, 2)+", "+table.getModel().getValueAt(row, 1)+"\""); } } }); //refreshTable(); } /** * Metoda aktualizuje tabulku. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ protected void refreshTable() { ResultTableModel rtm = new ResultTableModel(); Object[][] users = view.getUsers(); rtm.setColumnData(ResultTableModel.namesUser); rtm.setTableData(users); table.setModel(rtm); } /** * Metoda navraci tabulku (instanci tridy JTable). * * @return instance tridy JTable */ public JTable getTable() { return table; } /** * Metoda cisti vsechny vstupni formulare, formular pro datum nastavuje na * aktualni datum a u comboBoxu nastavuje aktualni vybranou polozku na * prvni polozku daneho comboBoxu. */ protected void clearFields(){ Validator.clearTextField(jTextFieldName); Validator.clearTextField(jTextFieldSurname); Validator.clearTextField(jTextFieldPIN); Validator.clearTextField(jTextFieldLogin); jTextFieldPasswd.setText(view.getDefaultPassword()); Validator.clearTextField(jTextFieldRoles); jButtonDelete.setEnabled(false); jButtonRole.setEnabled(false); jButtonInsert.setText("Vložit záznam o zaměstnanci"); statusBar.setMessage("Vložit nový záznam o zaměstnanci."); table.clearSelection(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jLabelName = new javax.swing.JLabel(); jLabelSurname = new javax.swing.JLabel(); jLabelPIN = new javax.swing.JLabel(); jLabelLogin = new javax.swing.JLabel(); jLabelPasswd = new javax.swing.JLabel(); jTextFieldLogin = new javax.swing.JTextField(); jTextFieldName = new javax.swing.JTextField(); jTextFieldSurname = new javax.swing.JTextField(); jTextFieldPIN = new javax.swing.JTextField(); jButtonInsert = new javax.swing.JButton(); jButtonClear = new javax.swing.JButton(); jButtonDelete = new javax.swing.JButton(); jLabelRoles = new javax.swing.JLabel(); jTextFieldRoles = new javax.swing.JTextField(); jButtonRole = new javax.swing.JButton(); jTextFieldPasswd = new javax.swing.JTextField(); jLabel1 = new javax.swing.JLabel(); jTextFieldOwnPasswd = new javax.swing.JTextField(); jLabelName.setText("Jméno"); jLabelSurname.setText("Příjmení"); jLabelPIN.setText("PIN"); jLabelLogin.setText("Uživatelské jméno"); jLabelPasswd.setText("Výchozí heslo"); jLabelPasswd.setToolTipText("Výchozí heslo, které se uživateli nastaví\n při vytváření jeho uživatelského záznamu."); jButtonInsert.setText("Vložit záznam o zaměstnanci"); jButtonInsert.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInsertActionPerformed(evt); } }); jButtonClear.setText("Vyčistit formulář"); jButtonClear.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonClearActionPerformed(evt); } }); jButtonDelete.setText("Smazat záznam"); jButtonDelete.setEnabled(false); jButtonDelete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonDeleteActionPerformed(evt); } }); jLabelRoles.setText("Uživatelské role"); jTextFieldRoles.setEditable(false); jButtonRole.setText("Upravit uživatelské role"); jButtonRole.setEnabled(false); jButtonRole.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonRoleActionPerformed(evt); } }); jTextFieldPasswd.setEditable(false); jTextFieldPasswd.setText("1234"); jTextFieldPasswd.setToolTipText("Výchozí heslo, které se uživateli nastaví při vytváření jeho uživatelského záznamu."); jLabel1.setText("Vlastní heslo"); jLabel1.setToolTipText("Změnil si již daný uživatel výchozí heslo na svoje tajné heslo?"); jTextFieldOwnPasswd.setEditable(false); jTextFieldOwnPasswd.setToolTipText("Změnil si již daný uživatel výchozí heslo na svoje tajné heslo?"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabelLogin) .addComponent(jLabelSurname) .addComponent(jLabelPIN) .addComponent(jLabelPasswd) .addComponent(jLabelName) .addComponent(jLabelRoles)) .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jTextFieldPasswd, javax.swing.GroupLayout.PREFERRED_SIZE, 195, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextFieldRoles, javax.swing.GroupLayout.PREFERRED_SIZE, 195, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextFieldName, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE) .addComponent(jTextFieldSurname, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE) .addComponent(jTextFieldPIN, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE) .addComponent(jTextFieldLogin, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE)) .addGap(37, 37, 37) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addGap(18, 18, 18) .addComponent(jTextFieldOwnPasswd)) .addComponent(jButtonDelete, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE) .addComponent(jButtonClear, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE) .addComponent(jButtonInsert, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonRole, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(35, 35, 35)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(14, 14, 14) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelName) .addComponent(jTextFieldName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonInsert)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelSurname) .addComponent(jTextFieldSurname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonClear)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelPIN) .addComponent(jTextFieldPIN, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonDelete)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelLogin) .addComponent(jTextFieldLogin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelPasswd) .addComponent(jTextFieldPasswd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jTextFieldOwnPasswd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabelRoles) .addComponent(jTextFieldRoles, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonRole)) .addGap(39, 39, 39)) ); }// </editor-fold>//GEN-END:initComponents private void jButtonClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonClearActionPerformed clearFields(); }//GEN-LAST:event_jButtonClearActionPerformed private void jButtonInsertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInsertActionPerformed String name = jTextFieldName.getText(); String surname = jTextFieldSurname.getText(); String pin = jTextFieldPIN.getText(); String username = jTextFieldLogin.getText(); String passwd = jTextFieldPasswd.getText(); int userId = -1; if(row != -1){ userId = (Integer)table.getModel().getValueAt(row, 0); } if(view.insertUser(name, surname, pin, username, passwd, userId) == UserFormResult.Succesful){ refreshTable(); clearFields(); } }//GEN-LAST:event_jButtonInsertActionPerformed private void jButtonDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeleteActionPerformed row = table.getSelectedRow(); int userId = (Integer)table.getModel().getValueAt(row, 0); view.deleteUser(userId); refreshTable(); }//GEN-LAST:event_jButtonDeleteActionPerformed private void jButtonRoleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRoleActionPerformed int userId = (Integer)table.getModel().getValueAt(row, 0); userRoleDialog = new UserRoleDialog(parent, true, userId); userRoleDialog.setVisible(true); refreshTable(); }//GEN-LAST:event_jButtonRoleActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonClear; private javax.swing.JButton jButtonDelete; private javax.swing.JButton jButtonInsert; private javax.swing.JButton jButtonRole; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabelLogin; private javax.swing.JLabel jLabelName; private javax.swing.JLabel jLabelPIN; private javax.swing.JLabel jLabelPasswd; private javax.swing.JLabel jLabelRoles; private javax.swing.JLabel jLabelSurname; private javax.swing.JTextField jTextFieldLogin; private javax.swing.JTextField jTextFieldName; private javax.swing.JTextField jTextFieldOwnPasswd; private javax.swing.JTextField jTextFieldPIN; private javax.swing.JTextField jTextFieldPasswd; private javax.swing.JTextField jTextFieldRoles; private javax.swing.JTextField jTextFieldSurname; // End of variables declaration//GEN-END:variables }