package cz.cvut.fel.restauracefel.manager.manager_gui;
import cz.cvut.fel.restauracefel.hibernate.User;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.FileNotFoundException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import javax.swing.JFrame;
/**
* Trida reprezentujici GUI dialog pro urcovani uzivatelskych roli.
*
* @author Jarda
*/
public class UserRoleDialog extends javax.swing.JDialog {
private int userId;
private ManagerViewController view;
/**
* Konstruktor tridy UserRoleDialog.
*
* @param parent instance tridy JFrame jenz vytvorila tento formular
* @param modal urcuje, zda bude dialog modalni
* @throws java.rmi.RemoteException
* @throws java.rmi.NotBoundException
* @throws java.io.FileNotFoundException
*/
public UserRoleDialog(JFrame parent, boolean modal, int userId) {
super(parent, modal);
setTitle("Nastavení uživatelských rolí");
view = ManagerViewController.getInstance();
this.userId = userId;
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int y = (int) ((dim.getHeight() - 150) / 2);
int x = (int) ((dim.getWidth() - 300) / 2);
setLocation(x, y);
initComponents();
setPerson();
setCheckBoxes();
}
/**
* Metoda nastavujici do jTextFieldu "person" informace o danem uzivateli.
*
* @throws java.rmi.RemoteException
* @throws java.rmi.NotBoundException
* @throws java.io.FileNotFoundException
*/
private void setPerson() {
User user = null;
user = view.getUserById(userId);
if(user != null){
jTextFieldPerson.setText(user.getLastName() + ", " + user.getFirstName());
}
}
/**
* Metoda nastavujici checkBoxy dle stavajicich pridelenych roli.
*/
private void setCheckBoxes(){
boolean[] currentRoles = view.getUserRoles(userId);
if (currentRoles[0] == true){
jCheckBoxManager.setSelected(true);
}
if (currentRoles[1] == true){
jCheckBoxWaiter.setSelected(true);
}
if (currentRoles[2] == true){
jCheckBoxCook.setSelected(true);
}
}
/**
* Metoda vraci pole oznacujici nove role. Pokud ma dany uzivatel danou roli,
* tak je na odpovidajicim miste pole true; jinak false.
*
* @return pole oznacujici nove pridelene uzivatelske role danemu uzivateli
*/
private boolean [] getNewRoles(){
boolean newRoles [] = {false, false, false};
if (jCheckBoxManager.isSelected()){
newRoles[0] = true;
}
if (jCheckBoxWaiter.isSelected()){
newRoles[1] = true;
}
if (jCheckBoxCook.isSelected()){
newRoles[2] = true;
}
return newRoles;
}
/**
* Metoda odstranujici "zaskrtnuti" checkBoxu.
*/
public void clearCheckBoxes(){
jCheckBoxManager.setSelected(false);
jCheckBoxWaiter.setSelected(false);
jCheckBoxCook.setSelected(false);
}
/** 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() {
jLabelUser = new javax.swing.JLabel();
jTextFieldPerson = new javax.swing.JTextField();
jLabelRole = new javax.swing.JLabel();
jButtonInsert = new javax.swing.JButton();
jButtonCancel = new javax.swing.JButton();
jCheckBoxManager = new javax.swing.JCheckBox();
jCheckBoxWaiter = new javax.swing.JCheckBox();
jCheckBoxCook = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
jLabelUser.setText("Osoba");
jTextFieldPerson.setEditable(false);
jLabelRole.setText("Role");
jButtonInsert.setText("Změnit role");
jButtonInsert.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonInsertActionPerformed(evt);
}
});
jButtonCancel.setText("Zpět");
jButtonCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonCancelActionPerformed(evt);
}
});
jCheckBoxManager.setText("Manager");
jCheckBoxWaiter.setText("Waiter");
jCheckBoxCook.setText("Cook");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabelUser)
.addComponent(jLabelRole))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jCheckBoxWaiter)
.addComponent(jCheckBoxCook)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextFieldPerson, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jCheckBoxManager))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jButtonCancel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButtonInsert, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap(24, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelUser)
.addComponent(jTextFieldPerson, 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(jCheckBoxManager)
.addComponent(jButtonCancel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelRole)
.addComponent(jCheckBoxWaiter))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckBoxCook)
.addContainerGap(34, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCancelActionPerformed
dispose();
}//GEN-LAST:event_jButtonCancelActionPerformed
private void jButtonInsertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInsertActionPerformed
boolean newRoles [] = getNewRoles();
view.updateUserRoles(userId, newRoles);
dispose();
}//GEN-LAST:event_jButtonInsertActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonCancel;
private javax.swing.JButton jButtonInsert;
private javax.swing.JCheckBox jCheckBoxCook;
private javax.swing.JCheckBox jCheckBoxManager;
private javax.swing.JCheckBox jCheckBoxWaiter;
private javax.swing.JLabel jLabelRole;
private javax.swing.JLabel jLabelUser;
private javax.swing.JTextField jTextFieldPerson;
// End of variables declaration//GEN-END:variables
}