/*
* NewUzaverkaForm.java
*
* Created on 4.11.2010, 20:14:15
*/
package cz.cvut.fel.restauracefel.storage.sklad_gui;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.UnsupportedCommOperationException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import cz.cvut.fel.restauracefel.library.service.ConfigParser;
import cz.cvut.fel.restauracefel.storage.zrcadlo.scale.ScaleCommunicatorException;
import cz.cvut.fel.restauracefel.storage.zrcadlo.controller.UzaverkaController;
import cz.cvut.fel.restauracefel.storage.zrcadlo.controller.ValidateInputException;
/**
*
* @author Vojta
*/
public class NewUzaverkaForm extends AbstractForm {
private final String ZRCADLO_POPIS = "Zrcadlo";
private final String ULOZ_KONTROLU_POPIS = "Ulož kontrolu";
private final String ULOZ_UZAVERKU_POPIS = "Uzavři uzávěrku";
private final String CAROVY_KOD_SUBMIT_POPIS = "Načti surovinu";
private final String OPAKOVAT_VAZENI = "Opakovat vážení";
private final String UZAVERKA_POPIS = "Uzávěrka";
private final String CAROVY_KOD_POPIS = "Čárový kód";
private final String POCET_BALENI_POPIS = "Počet balení";
private final String HMOTNOST = "Hmotnost";
private final String CHYBA = "Chyba";
private final String INFO = "Info";
private final String KONFIGURACNI_SOUBOR_EXCEPTION = "Konfigurační soubor " + ConfigParser.getConfigFile() + " nebyl nalezen.";
private final String SPOJENI_SE_SERVEREM_EXCEPTION = "Nelze navázat spojení se serverem.";
private final String SUROVINA_NEEXISTUJE_EXCEPTION = "Surovina s tímto čárkovým kódem neexistuje.";
private final String PORT_NEEXISTUJE = "Sériový port nastavený pro váhu neexistuje";
private final String PORT_OBSAZEN = "Sériový port nastavený pro váhu je již využíván";
private final String CHYBA_NA_PORTU = "Vyskytla se chyba při komunikaci s váhou";
private final String UZAVERKA_UZAVRENA = "Uzávěrka byla uzavřena.";
private final String KONTROLA_ULOZENA_POPIS = "Kontrola byla úspěšně uložena";
UzaverkaController kontroler;
JFrame parent;
/** Creates new form NewUzaverkaForm */
public NewUzaverkaForm(JFrame parent) {
try {
initComponents();
initTable();
kontroler = UzaverkaController.getInstance();
kontroler.initByUzaverkaForm(this);
refresh();
clearFields();
this.parent = parent;
} catch (FileNotFoundException ex) {
zobrazKonfiguracniSouborException();
} catch (RemoteException ex) {
zobrazSpojeniSeServeremException();
} catch (NoSuchPortException ex) {
zobrazPortNeexistujeException();
} catch (PortInUseException ex) {
zobrazPortObsazenException();
} catch (UnsupportedCommOperationException ex) {
zobrazChybaNaPortuException();
} catch (ScaleCommunicatorException ex) {
zobrazScaleCommunicationException(ex);
} catch (IOException ex) {
zobrazChybaNaPortuException();
} catch (NotBoundException ex) {
zobrazSpojeniSeServeremException();
}
}
/** 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() {
scrollPaneForSurovinyList = new javax.swing.JScrollPane();
surovinyList = new javax.swing.JList();
nadpis = new javax.swing.JLabel();
carovyKodLabel = new javax.swing.JLabel();
carovyKodInput = new javax.swing.JTextField();
carovyKodSubmit = new javax.swing.JButton();
hmotnostLabel = new javax.swing.JLabel();
hmotnostInput = new javax.swing.JTextField();
ulozKontrolu = new javax.swing.JButton();
uzavriUzaverku = new javax.swing.JButton();
opakovatVazeni = new javax.swing.JButton();
pocetBaleniLabel = new javax.swing.JLabel();
pocetBaleniInput = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
kontrolyTable = new javax.swing.JTable();
setPreferredSize(new java.awt.Dimension(580, 353));
setRequestFocusEnabled(false);
surovinyList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
scrollPaneForSurovinyList.setViewportView(surovinyList);
nadpis.setFont(new java.awt.Font("Tahoma", 0, 24));
nadpis.setText(UZAVERKA_POPIS);
carovyKodLabel.setText(CAROVY_KOD_POPIS);
carovyKodInput.setMinimumSize(new java.awt.Dimension(1, 1));
carovyKodInput.setPreferredSize(new java.awt.Dimension(3, 20));
carovyKodInput.requestFocusInWindow();
carovyKodInput.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
carovyKodInputActionPerformed(evt);
}
});
carovyKodSubmit.setText(CAROVY_KOD_SUBMIT_POPIS);
carovyKodSubmit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
carovyKodSubmitActionPerformed(evt);
}
});
hmotnostLabel.setText(HMOTNOST);
hmotnostInput.setEditable(false);
hmotnostInput.setMinimumSize(new java.awt.Dimension(1, 1));
hmotnostInput.setPreferredSize(new java.awt.Dimension(3, 20));
ulozKontrolu.setText(ULOZ_KONTROLU_POPIS);
ulozKontrolu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ulozKontroluActionPerformed(evt);
}
});
uzavriUzaverku.setText(ULOZ_UZAVERKU_POPIS);
uzavriUzaverku.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
uzavriUzaverkuActionPerformed(evt);
}
});
opakovatVazeni.setText(OPAKOVAT_VAZENI);
opakovatVazeni.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
opakovatVazeniActionPerformed(evt);
}
});
pocetBaleniLabel.setText(POCET_BALENI_POPIS);
pocetBaleniInput.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pocetBaleniInputActionPerformed(evt);
}
});
kontrolyTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
}
));
jScrollPane1.setViewportView(kontrolyTable);
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(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 560, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(scrollPaneForSurovinyList, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(pocetBaleniLabel)
.addComponent(hmotnostLabel)
.addComponent(carovyKodLabel))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(carovyKodInput, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)
.addComponent(hmotnostInput, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pocetBaleniInput))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ulozKontrolu)
.addComponent(uzavriUzaverku)
.addComponent(carovyKodSubmit)
.addComponent(opakovatVazeni)))
.addComponent(nadpis))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(nadpis)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(carovyKodInput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(carovyKodLabel)
.addComponent(carovyKodSubmit))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(hmotnostInput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(hmotnostLabel)
.addComponent(opakovatVazeni))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(pocetBaleniInput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(pocetBaleniLabel))
.addGap(18, 18, 18)
.addComponent(ulozKontrolu)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(uzavriUzaverku))
.addComponent(scrollPaneForSurovinyList, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void ulozKontroluActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ulozKontroluActionPerformed
try {
kontroler.zvalidujAUlozKontrolu(pocetBaleniInput.getText());
zobrazKontrolaUlozenaInfo();
clearFields();
refresh();
carovyKodInput.requestFocusInWindow();
} catch (ValidateInputException ex) {
zobrazValidateInputException(ex);
} catch (FileNotFoundException ex) {
zobrazKonfiguracniSouborException();
} catch (NotBoundException ex) {
zobrazSpojeniSeServeremException();
} catch (RemoteException ex) {
zobrazSpojeniSeServeremException();
}
}//GEN-LAST:event_ulozKontroluActionPerformed
private void uzavriUzaverkuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_uzavriUzaverkuActionPerformed
try {
kontroler.closeUzaverka();
zobrazUzaverkaUzavrenaInfo();
} catch (FileNotFoundException ex) {
zobrazKonfiguracniSouborException();
} catch (NotBoundException ex) {
zobrazSpojeniSeServeremException();
} catch (RemoteException ex) {
zobrazSpojeniSeServeremException();
}
}//GEN-LAST:event_uzavriUzaverkuActionPerformed
private void carovyKodSubmitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_carovyKodSubmitActionPerformed
try {
int index = kontroler.najdiSurovinuPodleCarovehoKodu(carovyKodInput.getText());
surovinyList.setSelectedIndex(index);
surovinyList.ensureIndexIsVisible(index);
if (index == kontroler.NOTSELECTED) {
zobrazSurovinaNeexistujeException();
} else {
pocetBaleniInput.requestFocusInWindow();
}
} catch (FileNotFoundException ex) {
zobrazKonfiguracniSouborException();
}
}//GEN-LAST:event_carovyKodSubmitActionPerformed
private void opakovatVazeniActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_opakovatVazeniActionPerformed
kontroler.setNaslouchatVaze(true);
}//GEN-LAST:event_opakovatVazeniActionPerformed
private void carovyKodInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_carovyKodInputActionPerformed
carovyKodSubmitActionPerformed(evt);
}//GEN-LAST:event_carovyKodInputActionPerformed
private void pocetBaleniInputActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pocetBaleniInputActionPerformed
ulozKontrolu.requestFocusInWindow();
}//GEN-LAST:event_pocetBaleniInputActionPerformed
public void updateHmotnostInput(double m) {
hmotnostInput.setText(Double.toString(m));
}
@Override
protected final void refresh() throws FileNotFoundException, NotBoundException, RemoteException {
surovinyList.setModel(kontroler.getListSurovin());
kontrolyTable.setModel(kontroler.getListKontrol());
}
@Override
protected int isValidInput() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
protected final void initTable() {
kontrolyTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
kontrolyTable.setRowSelectionAllowed(true);
kontrolyTable.setColumnSelectionAllowed(false);
kontrolyTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
@Override
protected void refreshTable() throws FileNotFoundException, NotBoundException, RemoteException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
protected final void clearFields() {
carovyKodInput.setText(null);
hmotnostInput.setText(null);
pocetBaleniInput.setText("1");
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField carovyKodInput;
private javax.swing.JLabel carovyKodLabel;
private javax.swing.JButton carovyKodSubmit;
private javax.swing.JTextField hmotnostInput;
private javax.swing.JLabel hmotnostLabel;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable kontrolyTable;
private javax.swing.JLabel nadpis;
private javax.swing.JButton opakovatVazeni;
private javax.swing.JTextField pocetBaleniInput;
private javax.swing.JLabel pocetBaleniLabel;
private javax.swing.JScrollPane scrollPaneForSurovinyList;
private javax.swing.JList surovinyList;
private javax.swing.JButton ulozKontrolu;
private javax.swing.JButton uzavriUzaverku;
// End of variables declaration//GEN-END:variables
private void zobrazPortNeexistujeException() {
JOptionPane.showMessageDialog(parent, PORT_NEEXISTUJE, CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazPortObsazenException() {
JOptionPane.showMessageDialog(parent, PORT_OBSAZEN, CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazChybaNaPortuException() {
JOptionPane.showMessageDialog(parent, CHYBA_NA_PORTU, CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazScaleCommunicationException(Exception ex) {
JOptionPane.showMessageDialog(parent, ex.getMessage(), CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazKonfiguracniSouborException() {
JOptionPane.showMessageDialog(parent, KONFIGURACNI_SOUBOR_EXCEPTION, CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazSpojeniSeServeremException() {
JOptionPane.showMessageDialog(parent, SPOJENI_SE_SERVEREM_EXCEPTION, CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazValidateInputException(Exception ex) {
JOptionPane.showMessageDialog(parent, ex.getMessage(), CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazSurovinaNeexistujeException() {
JOptionPane.showMessageDialog(parent, SUROVINA_NEEXISTUJE_EXCEPTION, CHYBA, JOptionPane.ERROR_MESSAGE);
}
private void zobrazUzaverkaUzavrenaInfo() {
JOptionPane.showMessageDialog(parent, UZAVERKA_UZAVRENA, INFO, JOptionPane.INFORMATION_MESSAGE);
}
private void zobrazKontrolaUlozenaInfo() {
JOptionPane.showMessageDialog(parent, KONTROLA_ULOZENA_POPIS, ZRCADLO_POPIS, JOptionPane.INFORMATION_MESSAGE);
}
}