/* * 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); } }