package cz.cvut.fel.restauracefel.storage.sklad_gui;
import cz.cvut.fel.restauracefel.library.library_gui.PrintDialog;
import java.io.File;
import java.io.FileNotFoundException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import cz.cvut.fel.restauracefel.library.service.ConfigParser;
import cz.cvut.fel.restauracefel.library.service.LocalizationManager;
import cz.cvut.fel.restauracefel.sklad_service.ResultTableModel;
import cz.cvut.fel.restauracefel.sklad_service.ServiceFacade;
import cz.cvut.fel.restauracefel.library.service.Validator;
import cz.cvut.fel.restauracefel.storage.storageController.StorageController;
/**
* Trida reprezentujici GUI formular pro evidovani skladovych karet.
* Zaroven zajistuje vytvoreni a naplneni tabulky, vcetne zajisteni aktualizace.
* Take se stara o zapisovani popisku do statusBaru.
*
* @author Jarda
*/
public class MaterialForm extends AbstractForm {
private JTable table = null;
private JFrame parent = null;
private StatusBar statusBar = null;
private BarcodeDialog barcodeDialog = null;
private int row = -1;
/**
* Konstruktor tridy MaterialForm.
*
* @param parent instance tridy JFrame jenz vytvorila tento formular
* @param bar statusBar, do ktereho budou vypisovany popisky
* @throws java.rmi.RemoteException
* @throws java.rmi.NotBoundException
* @throws java.io.FileNotFoundException
*/
public MaterialForm(JFrame parent, StatusBar bar) throws RemoteException, NotBoundException, FileNotFoundException {
this.parent = parent;
this.statusBar = bar;
initComponents();
initTable();
LocalizationManager manager = LocalizationManager.getInstance();
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "MaterialNameLabel", jLabelName);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "TypeLabel", jLabelType);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "UnitLabel", jLabelUnit);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "MinimumQuantityLabel", jLabelMinimum);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "MinimumQuantityInformationLabel", jLabelMinInfo);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "BarCodeLabel", jLabelBarcode);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "IntensityLabel", jLabelHustota);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "EmptyWeightLabel", jLabelEmptyWeight);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "CapacityLabel", jLabelCapacity);
manager.localizeButton(StorageController.DEFAULT_BUNDLE_BASE_NAME, "InsertButton", jButtonInsert);
manager.localizeButton(StorageController.DEFAULT_BUNDLE_BASE_NAME, "ClearButton", jButtonClear);
manager.localizeButton(StorageController.DEFAULT_BUNDLE_BASE_NAME, "DeleteButton", jButtonDelete);
manager.localizeButton(StorageController.DEFAULT_BUNDLE_BASE_NAME, "BarCodeButton", jButtonBarcode);
manager.localizeButton(StorageController.DEFAULT_BUNDLE_BASE_NAME, "EditBarCodeButton", jButtonEditBarcode);
manager.localizeButton(StorageController.DEFAULT_BUNDLE_BASE_NAME, "PrintButton", jButtonPrint);
refresh();
}
/**
* Metoda provadi aktualizaci vsech comboBoxu a aktualizaci tabulky.
* Zaroven prenastavuje statusBar.
*
* @throws java.rmi.RemoteException
* @throws java.rmi.NotBoundException
* @throws java.io.FileNotFoundException
*/
public void refresh() throws RemoteException, NotBoundException, FileNotFoundException {
setComboBoxModel(ServiceFacade.getInstance().getMaterialTypeNames(), jComboBoxMaterial);
setComboBoxModel(ServiceFacade.getInstance().getUnitTypeNames(), jComboBoxUnit);
refreshTable();
statusBar.setMessage("Tento formulář slouží k editaci a úpravě skladových záznamů o surovinách.");
}
/**
* Metoda kontrolujici spravnost vyplnenych udaju.
*
* @return Vraci index urcujici vstupni komponentu, ktera obsahuje
* neplatny vstup. Pokud je vse vporadku tak navraci 0.
*/
protected int isValidInput() {
if (!Validator.isText(jTextFieldName)) {
return 1;
}
if (!Validator.isText(jTextFieldBarcode)) {
return 2;
}
if (!Validator.isPositiveDouble(jTextFieldMinimum)) {
jTextFieldMinimum.setText("0");
}
if (!Validator.isSelectedItem(jComboBoxMaterial)) {
return 4;
}
if (!Validator.isSelectedItem(jComboBoxUnit)) {
return 5;
}
if (!Validator.isDouble(jTextDensity)) {
return 6;
}
if (!Validator.isDouble(jTextCapacityPackage)) {
return 7;
}
if (!Validator.isDouble(jTextEmptyWeight)) {
return 8;
}
return 0;
}
/**
* 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();
jButtonDelete.setEnabled(false);
jButtonInsert.setText("Vložit skladový záznam");
jButtonEditBarcode.setText("Editovat čárový kód");
jTextFieldBarcode.setEditable(false);
jComboBoxUnit.setEnabled(true);
statusBar.setMessage("Vložit nový skladový záznam.");
} else {
jTextFieldName.setText((String) table.getModel().getValueAt(row, 1));
jTextFieldMinimum.setText(String.valueOf((Double) table.getModel().getValueAt(row, 6)));
jTextFieldBarcode.setText((String) table.getModel().getValueAt(row, 5));
jComboBoxMaterial.setSelectedItem((String) table.getModel().getValueAt(row, 3));
jComboBoxUnit.setSelectedItem((String) table.getModel().getValueAt(row, 4));
jTextDensity.setText(table.getModel().getValueAt(row, 7).toString());
jTextEmptyWeight.setText(table.getModel().getValueAt(row, 8).toString());
jTextCapacityPackage.setText(table.getModel().getValueAt(row, 9).toString());
jComboBoxUnit.setEnabled(false);
jButtonDelete.setEnabled(true);
jButtonInsert.setText("Upravit stávající záznam");
jButtonEditBarcode.setText("Editovat čárový kód");
jTextFieldBarcode.setEditable(false);
statusBar.setMessage("Vybrán záznamu ID: " + table.getValueAt(row, 0) + ", \"" + table.getValueAt(row, 1) + "\"");
}
}
});
//refreshTable();
}
/**
* Metoda aktualizuje tabulku.
*
* @throws java.rmi.RemoteException
* @throws java.rmi.NotBoundException
* @throws java.io.FileNotFoundException
*/
protected void refreshTable() throws FileNotFoundException, NotBoundException, RemoteException {
ResultTableModel rtm = new ResultTableModel();
Object[][] materials = ServiceFacade.getInstance().getMaterials();
rtm.setColumnData(ResultTableModel.namesMaterial);
rtm.setTableData(materials);
table.setModel(rtm);
table.getColumnModel().getColumn(1).setMinWidth(150);
}
/**
* 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.clearComboBox(jComboBoxMaterial);
Validator.clearComboBox(jComboBoxUnit);
Validator.clearTextField(jTextFieldName);
Validator.clearTextField(jTextFieldMinimum);
Validator.clearTextField(jTextFieldBarcode);
Validator.clearTextField(jTextCapacityPackage);
Validator.clearTextField(jTextDensity);
Validator.clearTextField(jTextEmptyWeight);
}
/** 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() {
jTextFieldName = new javax.swing.JTextField();
jLabelName = new javax.swing.JLabel();
jLabelType = new javax.swing.JLabel();
jLabelUnit = new javax.swing.JLabel();
jLabelMinimum = new javax.swing.JLabel();
jLabelBarcode = new javax.swing.JLabel();
jTextFieldMinimum = new javax.swing.JTextField();
jLabelMinInfo = new javax.swing.JLabel();
jTextFieldBarcode = new javax.swing.JTextField();
jButtonBarcode = new javax.swing.JButton();
jButtonInsert = new javax.swing.JButton();
jButtonEditBarcode = new javax.swing.JButton();
jButtonClear = new javax.swing.JButton();
jComboBoxMaterial = new javax.swing.JComboBox();
jComboBoxUnit = new javax.swing.JComboBox();
jButtonDelete = new javax.swing.JButton();
jButtonPrint = new javax.swing.JButton();
jLabelHustota = new javax.swing.JLabel();
jLabelEmptyWeight = new javax.swing.JLabel();
jLabelCapacity = new javax.swing.JLabel();
jTextDensity = new javax.swing.JTextField();
jTextEmptyWeight = new javax.swing.JTextField();
jTextCapacityPackage = new javax.swing.JTextField();
setToolTipText("Formulář slouží k evidování skladových záznamů o surovinách.");
jLabelName.setText("Název suroviny");
jLabelName.setToolTipText("Název dané suroviny.");
jLabelType.setText("Typ suroviny");
jLabelUnit.setText("Jednotka");
jLabelUnit.setToolTipText("Určuje měrnou jednotku, ve které se budou zadávat příjmy dané suroviny na sklad.");
jLabelMinimum.setText("Minimální normativní množství");
jLabelMinimum.setToolTipText("Určuje stanovené minimální množství dané suroviny. Při dosažení této nebo nižší hodnoty systém o tomto stavu informuje uživatele.");
jLabelBarcode.setText("Čárový kód");
jLabelMinInfo.setText("[v dané jednotce]");
jTextFieldBarcode.setEditable(false);
jButtonBarcode.setText("Načíst čárový kód");
jButtonBarcode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonBarcodeActionPerformed(evt);
}
});
jButtonInsert.setText("Vložit skladový záznam");
jButtonInsert.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonInsertActionPerformed(evt);
}
});
jButtonEditBarcode.setText("Editovat čárový kód");
jButtonEditBarcode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonEditBarcodeActionPerformed(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);
}
});
jButtonPrint.setText("Vytisknout skladové záznamy");
jButtonPrint.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonPrintActionPerformed(evt);
}
});
jLabelHustota.setText("Hustota:");
jLabelEmptyWeight.setText("Váha prázdného balení:");
jLabelCapacity.setText("Objem balení:");
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(jLabelMinimum)
.addComponent(jLabelType)
.addComponent(jLabelUnit)
.addComponent(jLabelBarcode)
.addComponent(jLabelName)
.addComponent(jLabelEmptyWeight)
.addComponent(jLabelCapacity)
.addComponent(jLabelHustota))
.addGap(10, 10, 10)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jButtonPrint, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextCapacityPackage)
.addComponent(jTextEmptyWeight)
.addComponent(jTextDensity)
.addComponent(jTextFieldBarcode, javax.swing.GroupLayout.DEFAULT_SIZE, 174, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jTextFieldMinimum, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabelMinInfo))
.addComponent(jComboBoxUnit, 0, 174, Short.MAX_VALUE)
.addComponent(jComboBoxMaterial, 0, 174, Short.MAX_VALUE)
.addComponent(jTextFieldName, javax.swing.GroupLayout.DEFAULT_SIZE, 174, Short.MAX_VALUE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGap(38, 38, 38)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jButtonInsert, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 158, Short.MAX_VALUE)
.addComponent(jButtonClear, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 158, Short.MAX_VALUE)
.addComponent(jButtonDelete, javax.swing.GroupLayout.DEFAULT_SIZE, 158, Short.MAX_VALUE)))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonEditBarcode, javax.swing.GroupLayout.DEFAULT_SIZE, 190, Short.MAX_VALUE)
.addComponent(jButtonBarcode, javax.swing.GroupLayout.DEFAULT_SIZE, 190, Short.MAX_VALUE))))
.addContainerGap())
);
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(jTextFieldName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonInsert)
.addComponent(jLabelName))
.addGap(14, 14, 14)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboBoxMaterial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonClear)
.addComponent(jLabelType))
.addGap(14, 14, 14)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboBoxUnit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonDelete)
.addComponent(jLabelUnit))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextFieldMinimum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelMinimum)
.addComponent(jLabelMinInfo))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextFieldBarcode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelBarcode)
.addComponent(jButtonBarcode))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelHustota)
.addComponent(jTextDensity, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButtonEditBarcode, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelEmptyWeight)
.addComponent(jTextEmptyWeight, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelCapacity)
.addComponent(jTextCapacityPackage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButtonPrint)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void jButtonClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonClearActionPerformed
clearFields();
jTextFieldBarcode.setEditable(false);
}//GEN-LAST:event_jButtonClearActionPerformed
private void jButtonInsertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonInsertActionPerformed
int i = isValidInput();
if (i == 0) {
String name = jTextFieldName.getText();
String barcode = jTextFieldBarcode.getText();
double density = Double.parseDouble(jTextDensity.getText());
double emptyPackageWeight = Double.parseDouble(jTextEmptyWeight.getText());
double packageCapacity = Double.parseDouble(jTextCapacityPackage.getText());
double minimal = Double.parseDouble(jTextFieldMinimum.getText());
int idMatType, idUnitType;
try {
idMatType = ServiceFacade.getInstance().getMaterialTypeByName((String) jComboBoxMaterial.getSelectedItem()).getMaterialTypeId();
idUnitType = ServiceFacade.getInstance().getUnitTypeByName((String) jComboBoxUnit.getSelectedItem()).getUnitTypeId();
boolean isOK;
if (row == -1) {
isOK = ServiceFacade.getInstance().createMaterial(name, idMatType, idUnitType, barcode, minimal, density, emptyPackageWeight, packageCapacity);
if (!isOK) {
JOptionPane.showMessageDialog(this, "Záznam nemůže být uložen, protože záznam se stejným jménem nebo čárovým kódem je již uložen.", "Surovina", JOptionPane.INFORMATION_MESSAGE);
return;
}
} else {
int materialId = (Integer) table.getModel().getValueAt(row, 0);
isOK = ServiceFacade.getInstance().updateMaterial(materialId, name, idMatType, idUnitType, barcode, minimal, density, emptyPackageWeight, packageCapacity);
if (!isOK) {
JOptionPane.showMessageDialog(this, "Záznam nemůže být aktualizován, protože záznam se stejným jménem nebo čárovým kódem je již uložen.", "Surovina", JOptionPane.INFORMATION_MESSAGE);
return;
}
}
refreshTable();
} catch (FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(this, "Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba", JOptionPane.ERROR_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Nelze navázat spojení se serverem.", "Chyba komunikace", JOptionPane.ERROR_MESSAGE);
}
clearFields();
} else if (i == 1) {
JOptionPane.showMessageDialog(this, "Údaj o názvu suroviny musí být vyplněn.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 2) {
JOptionPane.showMessageDialog(this, "Údaj o čárovém kódu musí být vyplněn.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 3) {
JOptionPane.showMessageDialog(this, "Minimální normativní množství - musí být kladné číslo.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 4) {
JOptionPane.showMessageDialog(this, "Musí být vybrán druh suroviny, do které daná surovina spadá..", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 5) {
JOptionPane.showMessageDialog(this, "Musí být vybrána základní měrná jednotka.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 6) {
JOptionPane.showMessageDialog(this, "Hustota - musí být číslo.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 7) {
JOptionPane.showMessageDialog(this, "Objem balení - musí být číslo.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 8) {
JOptionPane.showMessageDialog(this, "Váha prázdného balení - musí být číslo.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
} else if (i == 9) {
JOptionPane.showMessageDialog(this, "Obsah používaného balení - musí být číslo.", "Nová surovina", JOptionPane.INFORMATION_MESSAGE);
}
jTextFieldBarcode.setEditable(false);
}//GEN-LAST:event_jButtonInsertActionPerformed
private void jButtonEditBarcodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEditBarcodeActionPerformed
if (!jTextFieldBarcode.isEditable()) {
jButtonEditBarcode.setText("Zamknout čárový kód");
jTextFieldBarcode.setEditable(true);
} else {
jButtonEditBarcode.setText("Editovat čárový kód");
jTextFieldBarcode.setEditable(false);
}
}//GEN-LAST:event_jButtonEditBarcodeActionPerformed
private void jButtonBarcodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBarcodeActionPerformed
barcodeDialog = new BarcodeDialog(parent, true);
barcodeDialog.setVisible(true);
String barcode = barcodeDialog.getBarcode();
if (barcode != null) {
jTextFieldBarcode.setText(barcode);
}
}//GEN-LAST:event_jButtonBarcodeActionPerformed
private void jButtonDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeleteActionPerformed
row = table.getSelectedRow();
int materialId = (Integer) table.getModel().getValueAt(row, 0);
try {
if (!ServiceFacade.getInstance().isDeletableMaterial(materialId)) {
JOptionPane.showMessageDialog(this, "Surovina nemůže být smazána, protože se na ni odkazují existující záznamy.", "Surovina", JOptionPane.INFORMATION_MESSAGE);
return;
} else {
boolean ok = ServiceFacade.getInstance().deleteMaterial(materialId);
if (!ok) {
JOptionPane.showMessageDialog(this, "Záznam nebyl smazán.", "Surovina", JOptionPane.INFORMATION_MESSAGE);
}
}
refreshTable();
} catch (FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(this, "Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba", JOptionPane.ERROR_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "Nelze navázat spojení se serverem.", "Chyba komunikace", JOptionPane.ERROR_MESSAGE);
ex.printStackTrace();
}
jTextFieldBarcode.setEditable(false);
}//GEN-LAST:event_jButtonDeleteActionPerformed
private void jButtonPrintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonPrintActionPerformed
Map<String, Object> params = new HashMap<String, Object>();
params.put("title", "Suroviny");
try {
String template = "material.jasper";
ConfigParser config = new ConfigParser();
String printingFilePath = config.getTemplatesDir() + System.getProperty("file.separator") + template;
File printFile = new File(printingFilePath);
if (!printFile.exists()) {
JOptionPane.showMessageDialog(this, "Šablona \"" + template + "\" nebyla v adresáři:\n\n "
+ config.getTemplatesDir() + "\n\n nelezena. Pokud se šablony nachází v jiném adresáři, "
+ "nastavte cestu k tomuto adresáři v nastavení.", "Tisková sestava nenalezena", JOptionPane.ERROR_MESSAGE);
return;
}
PrintDialog printDialog = new PrintDialog(parent, true, params, printFile);
printDialog.setTable(table);
printDialog.setVisible(true);
//Printer.compileReport(printFile, config.getTemplatesDir() + System.getProperty("file.separator") + "Material.jasper");
} catch (FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(this, "Konfigurační soubor \"" + ConfigParser.getConfigFile() + "\" nebyl nalezen.", "Chyba", JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_jButtonPrintActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonBarcode;
private javax.swing.JButton jButtonClear;
private javax.swing.JButton jButtonDelete;
private javax.swing.JButton jButtonEditBarcode;
private javax.swing.JButton jButtonInsert;
private javax.swing.JButton jButtonPrint;
private javax.swing.JComboBox jComboBoxMaterial;
private javax.swing.JComboBox jComboBoxUnit;
private javax.swing.JLabel jLabelBarcode;
private javax.swing.JLabel jLabelCapacity;
private javax.swing.JLabel jLabelEmptyWeight;
private javax.swing.JLabel jLabelHustota;
private javax.swing.JLabel jLabelMinInfo;
private javax.swing.JLabel jLabelMinimum;
private javax.swing.JLabel jLabelName;
private javax.swing.JLabel jLabelType;
private javax.swing.JLabel jLabelUnit;
private javax.swing.JTextField jTextCapacityPackage;
private javax.swing.JTextField jTextDensity;
private javax.swing.JTextField jTextEmptyWeight;
private javax.swing.JTextField jTextFieldBarcode;
private javax.swing.JTextField jTextFieldMinimum;
private javax.swing.JTextField jTextFieldName;
// End of variables declaration//GEN-END:variables
}