package cz.cvut.fel.restauracefel.smeny.smeny_gui;
import java.awt.Insets;
import java.io.FileNotFoundException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
import cz.cvut.fel.restauracefel.library.service.Validator;
import cz.cvut.fel.restauracefel.smeny.SmenyController.SmenyController;
import java.util.Date;
import cz.cvut.fel.restauracefel.smeny_service.ServiceFacade;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
/**
* Trida reprezentujici GUI formular pro vytvareni noveho typu směny.
*
* @author Martin Kosek
*/
public class CreateShiftForm extends AbstractForm {
private StatusBar statusBar = null;
private MainFrame parent = null;
/**
* Konstruktor tridy CreateShiftForm.
*
* @param parent
* @param bar
* @throws java.rmi.RemoteException
* @throws java.rmi.NotBoundException
* @throws java.io.FileNotFoundException
*/
public CreateShiftForm(MainFrame parent, StatusBar bar) throws FileNotFoundException, NotBoundException, RemoteException {
this.parent = parent;
this.statusBar = bar;
loadAllData();
initComponents();
clearFields();
refresh();
}
/**
* Metoda prenastavuje statusBar.
*/
@Override
protected void refresh() {
statusBar.setMessage("Tento formulář slouží k vytváření nového typu směny.");
this.repaint();
}
/**
* Metoda kontrolujici spravnost vyplnenych udaju.
*
* @return Vraci index urcujici vstupni komponentu, ktera obsahuje
* neplatny vstup. Pokud je vse vporadku tak navraci 0.
*/
@Override
/*protected EnumSpravnost isValidInput() {
if (!Validator.isText(jTextFieldName)) {
return EnumSpravnost.NeniToSpravne;
}
return EnumSpravnost.JeToSpravne;
} */
/**
* Metoda cisti vsechny vstupni pole formulare.
*/
//@Override
protected void clearFields() {
Validator.clearTextField(shiftNameTextField);
this.workRoleComboBox.setSelectedIndex(0);
}
/**
* Metoda vytvari a zobrazuje formular pro objednani polozek na ucet.
*
* @param accountId id uctu, na ktery se bude objednavat
*/
protected void loadAllData() throws RemoteException, FileNotFoundException, NotBoundException {
SmenyController.getInstance().generateTableDataTypeShifts();
SmenyController.getInstance().generateComboBoxRoles(ServiceFacade.getInstance().getAllRoles());
/*try {
CreateOrderForm createOrderForm = new CreateOrderForm(parent, statusBar, accountId, MainFrame.loggedUser.getUserAttendanceId());
parent.panel.getViewport().add(createOrderForm);
parent.panel.validate();
parent.panel.repaint();
parent.refreshWindowLayout();
refresh();
} catch (FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(this, "Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba", JOptionPane.ERROR_MESSAGE);
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "Nelze navázat spojení se serverem.", "Chyba komunikace", JOptionPane.ERROR_MESSAGE);
}
*/
}
/** 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() {
billPanel = new BackgroundPanel();
shiftNameTextField = new javax.swing.JTextField();
jLabelInfoText = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
workRoleComboBox = new javax.swing.JComboBox();
fromSpinner = new javax.swing.JSpinner(new SpinnerDateModel());
toSpinner = new javax.swing.JSpinner(new SpinnerDateModel());
jButtonSaveShift = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
shiftTable = new javax.swing.JTable();
jLabelTitle = new javax.swing.JLabel();
setBackground(javax.swing.UIManager.getDefaults().getColor("CheckBox.light"));
billPanel.setBackground(javax.swing.UIManager.getDefaults().getColor("CheckBox.light"));
billPanel.setOpaque(false);
shiftNameTextField.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
shiftNameTextField.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(204, 204, 204), 1, true));
shiftNameTextField.setMargin(new Insets(10, 10, 10, 10));
jLabelInfoText.setFont(new java.awt.Font("Calibri", 1, 22));
jLabelInfoText.setText("Nový typ směny");
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14));
jLabel1.setText("Pacovní role:");
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14));
jLabel2.setText("Od:");
jLabel3.setFont(new java.awt.Font("Calibri", 1, 14));
jLabel3.setForeground(new java.awt.Color(0, 102, 102));
jLabel3.setText("Název směny:");
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14));
jLabel4.setText("Do:");
workRoleComboBox.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
workRoleComboBox.setModel(SmenyController.getInstance().getModelRoles());
fromSpinner.setFont(new java.awt.Font("Tahoma", 0, 12));
fromSpinner.setMinimumSize(new java.awt.Dimension(50, 20));
JSpinner.DateEditor timeEditor1 = new JSpinner.DateEditor(fromSpinner, "HH:mm");
fromSpinner.setEditor(timeEditor1);
fromSpinner.setValue(new Date(0));
toSpinner.setFont(new java.awt.Font("Tahoma", 0, 12));
toSpinner.setMinimumSize(new java.awt.Dimension(50, 20));
JSpinner.DateEditor timeEditor2 = new JSpinner.DateEditor(toSpinner, "HH:mm");
toSpinner.setEditor(timeEditor2);
toSpinner.setValue(new Date(0));
jButtonSaveShift.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/cvut/fel/restauracefel/buttons/left-red.png"))); // NOI18N
jButtonSaveShift.setText("Uložit");
jButtonSaveShift.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jButtonSaveShift.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonSaveShiftActionPerformed(evt);
}
});
jPanel1.setPreferredSize(new java.awt.Dimension(537, 455));
shiftTable.setFont(new java.awt.Font("Calibri", 0, 14));
shiftTable.setModel(SmenyController.getInstance().getModelTypeWorkShift());
jScrollPane1.setViewportView(shiftTable);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 554, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 433, Short.MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout billPanelLayout = new javax.swing.GroupLayout(billPanel);
billPanel.setLayout(billPanelLayout);
billPanelLayout.setHorizontalGroup(
billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(billPanelLayout.createSequentialGroup()
.addGap(24, 24, 24)
.addGroup(billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabelInfoText, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(shiftNameTextField, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, billPanelLayout.createSequentialGroup()
.addGroup(billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel4)
.addComponent(jLabel1))
.addGap(18, 18, 18)
.addGroup(billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(toSpinner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(fromSpinner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(workRoleComboBox, 0, 140, Short.MAX_VALUE)
.addComponent(jButtonSaveShift, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 115, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 574, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
billPanelLayout.setVerticalGroup(
billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(billPanelLayout.createSequentialGroup()
.addGroup(billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(billPanelLayout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(jLabelInfoText)
.addGap(11, 11, 11)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(shiftNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(30, 30, 30)
.addGroup(billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(workRoleComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(28, 28, 28)
.addGroup(billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(fromSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(39, 39, 39)
.addGroup(billPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(toSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(70, 70, 70)
.addComponent(jButtonSaveShift, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(27, Short.MAX_VALUE))
);
jButtonSaveShift.getAccessibleContext().setAccessibleName("Přidat směnu");
jLabelTitle.setBackground(new java.awt.Color(255, 255, 255));
jLabelTitle.setFont(new java.awt.Font("Tahoma", 0, 18));
jLabelTitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabelTitle.setText("Vytvořit nový typ směny");
jLabelTitle.setOpaque(true);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addComponent(billPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(30, Short.MAX_VALUE))
.addComponent(jLabelTitle, javax.swing.GroupLayout.DEFAULT_SIZE, 1032, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelTitle, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(billPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(82, 82, 82))
);
}// </editor-fold>//GEN-END:initComponents
private void saveTypeWorkshift() throws FileNotFoundException, NotBoundException, RemoteException {
String shiftName = this.shiftNameTextField.getText();
String roleName = (String) this.workRoleComboBox.getSelectedItem();
Date dateFrom = (Date) fromSpinner.getValue();
Date dateTo = (Date) toSpinner.getValue();
boolean result = SmenyController.getInstance().saveTypeWorkshift(shiftName, roleName, dateFrom, dateTo);
if (result) {
this.loadAllData();
this.shiftTable.setModel(SmenyController.getInstance().getModelTypeWorkShift());
//nastavení implicitních hodnot
this.clearFields();
}
}
private void jButtonSaveShiftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSaveShiftActionPerformed
try {
saveTypeWorkshift();
/* TODO - zobrazit Keyboard
KeyboardDialog keyboard = new KeyboardDialog(parent, true);
keyboard.setLocation(point);
keyboard.setTextField(jTextFieldName);
keyboard.setVisible(true);
*
*/
} catch (FileNotFoundException ex) {
Logger.getLogger(CreateShiftForm.class.getName()).log(Level.SEVERE, null, ex);
} catch (NotBoundException ex) {
Logger.getLogger(CreateShiftForm.class.getName()).log(Level.SEVERE, null, ex);
} catch (RemoteException ex) {
Logger.getLogger(CreateShiftForm.class.getName()).log(Level.SEVERE, null, ex);
}
}//GEN-LAST:event_jButtonSaveShiftActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel billPanel;
private javax.swing.JSpinner fromSpinner;
private javax.swing.JButton jButtonSaveShift;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabelInfoText;
private javax.swing.JLabel jLabelTitle;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField shiftNameTextField;
private javax.swing.JTable shiftTable;
private javax.swing.JSpinner toSpinner;
private javax.swing.JComboBox workRoleComboBox;
// End of variables declaration//GEN-END:variables
}