package cz.cvut.fel.restauracefel.storage.sklad_gui;
import cz.cvut.fel.restauracefel.library.service.LocalizationManager;
import cz.cvut.fel.restauracefel.storage.storageController.StorageController;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
/**
* Trida vytvarejici dialog pro nacteni caroveho kodu.
*
* @author Jarda
*/
public class BarcodeDialog extends javax.swing.JDialog {
//Minimalni delka caroveho kodu
private final int MIN_LEN = 5;
//Maximalni delka caroveho kodu
private final int MAX_LEN = 13;
//Carovy kod
private String barcode = null;
//Rozsireni - metoda, ktera bude validovat nacteny carovy kod
/**
* Konstruktor tridy BarcodeDialog.
*
* @param parent instance tridy JFrame jenz vytvorila tento dialog
* @param modal urcuje, zda bude dialog modalni
*/
public BarcodeDialog(JFrame parent, boolean modal) {
super(parent, modal);
super.setTitle("Čárový kód");
initComponents();
LocalizationManager manager = LocalizationManager.getInstance();
manager.localizeDialog(StorageController.DEFAULT_BUNDLE_BASE_NAME, "BarCodeDialog", this);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "BarCodeInformationLabel", jLabelInfoText);
manager.localizeLabel(StorageController.DEFAULT_BUNDLE_BASE_NAME, "BarCodeLabel", jLabelBarcode);
manager.localizeButton(StorageController.DEFAULT_BUNDLE_BASE_NAME, "ScanAgainButton", jButtonAgain);
jButtonAgain.setVisible(false);
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);
setCloseOperation();
readBardode();
}
/**
* Metoda, ktera nacita carovy kod.
*/
private void readBardode() {
jLabelInfoText.setText("Načtěte čárový kód");
jTextFieldBarcode.setEditable(true);
jButtonAgain.setVisible(false);
jTextFieldBarcode.addKeyListener(new KeyAdapter() {
/*@Override
public void keyTyped(KeyEvent e) {
barcode = jTextFieldBarcode.getText();
jTextFieldBarcode.setEditable(false);
if (barcode.length() < MIN_LEN || barcode.length() > MAX_LEN){
barcode = null;
jTextFieldBarcode.setText("");
jLabelInfoText.setText("Neplatný vstup");
jButtonAgain.setVisible(true);
} else {
jLabelInfoText.setText("ENTER pro potvrzení");
}
}*/
@Override
public void keyPressed(KeyEvent e) {
barcode = jTextFieldBarcode.getText();
//System.out.println(barcode);
}
});
jTextFieldBarcode.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (barcode != null) {
dispose();
}
}
});
jButtonAgain.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
readBardode();
}
});
}
/**
* Prepisuje standartni close operaci. Pri zavreni okna dojde k zneplatneni
* nacteneho caroveho kodu.
*/
private void setCloseOperation() {
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
barcode = null;
}
});
}
/**
* Metoda navracejici nacteny carovy kod.
* @return Nacteny carovy kod
*/
public String getBarcode() {
return barcode;
}
/** 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() {
commReader1 = new cz.cvut.fel.restauracefel.sklad_service.CommReader();
jTextFieldBarcode = new javax.swing.JTextField();
jLabelBarcode = new javax.swing.JLabel();
jLabelInfoText = new javax.swing.JLabel();
jButtonAgain = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jLabelBarcode.setText("Čárový kód");
jLabelInfoText.setFont(new java.awt.Font("Tahoma", 1, 16));
jLabelInfoText.setText("Načtěte čárový kód");
jButtonAgain.setText("Načíst kód znova");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(66, 66, 66)
.addComponent(jLabelInfoText))
.addGroup(layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jLabelBarcode)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonAgain)
.addComponent(jTextFieldBarcode, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(53, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(27, 27, 27)
.addComponent(jLabelInfoText)
.addGap(27, 27, 27)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelBarcode)
.addComponent(jTextFieldBarcode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(22, 22, 22)
.addComponent(jButtonAgain)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private cz.cvut.fel.restauracefel.sklad_service.CommReader commReader1;
private javax.swing.JButton jButtonAgain;
private javax.swing.JLabel jLabelBarcode;
private javax.swing.JLabel jLabelInfoText;
private javax.swing.JTextField jTextFieldBarcode;
// End of variables declaration//GEN-END:variables
}