package cz.cvut.fel.restauracefel.storage.sklad_gui; import cz.cvut.fel.restauracefel.hibernate.Material; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.io.FileNotFoundException; import java.rmi.NotBoundException; import java.rmi.RemoteException; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFrame; import cz.cvut.fel.restauracefel.sklad_service.ServiceFacade; /** * Abstraktni trida, ze ktere dedi klientske JDialog tridy. * * @author Jarda */ public abstract class AbstractDialog extends JDialog { /** * Konstruktor tridy AbstractDialog. */ public AbstractDialog(JFrame parent, boolean modal) { super(parent, modal); } /** * Metoda pro nastaveni datoveho modelu pro urceny JComboBox. String retezce * obsazene v poli namse budou nastaveny jako polozky JComboBoxu. * * @param names retezce, ktere budou nastaveny jako polozky daneho JComboBoxu * @param box JComboBox, pro ktery budou nastaveny polozky */ protected void setComboBoxModel(String names[], JComboBox box){ box.removeAllItems(); if (names == null || names.length == 0) { return; } for (int i = 0; i < names.length; i++) { box.addItem(names[i]); } box.setSelectedIndex(0); } /** * Metoda urcena pro nastaveni comboBoxu obsahujicich udaje o druhu materialu * (materialTypeBox), materialu (materialBox) a druhu jednotky (unitTypeBox). * Metoda nastavuje pro materialTypeBox a materialBox listenery. Ty zajistuji * selekci pripustnych hodnot v ostatnich comboBoxech. * * @param materialTypeBox obsahuje zaznamy o druzich materialu * @param materialBox obsahuje zaznamy o materialech * @param unitBox obsahuje zaznamy o jednotkach */ protected void setComboBoxesListeners(final JComboBox materialTypeBox, final JComboBox materialBox, final JComboBox unitBox) { materialTypeBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { try { setMaterialModel(materialTypeBox, materialBox); } catch (Exception ex){} } }); materialBox.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e) { try { setUnitTypeModel(materialBox, unitBox); } catch (Exception ex){} } }); } /** * Metoda nastavujici polozky comboBoxu material. Polozky jsou nastaveny dle * aktualne vybrane polozky comboBoxu materialType. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ private void setMaterialModel(JComboBox materialTypeBox, JComboBox materialBox) throws RemoteException, NotBoundException, FileNotFoundException { if (materialTypeBox.getSelectedIndex() == -1) { materialBox.setSelectedItem(null); return; } int materialTypeId = ServiceFacade.getInstance().getMaterialTypeByName((String) materialTypeBox.getSelectedItem()).getMaterialTypeId(); setComboBoxModel(ServiceFacade.getInstance().getMaterialNamesByMaterialType(materialTypeId), materialBox); } /** * Metoda nastavujici polozky comboBoxu unitType. Polozky jsou nastaveny dle * aktualne vybrane polozky comboBoxu material. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ private void setUnitTypeModel(JComboBox materialBox, JComboBox unitBox) throws RemoteException, NotBoundException, FileNotFoundException { if (materialBox.getSelectedIndex() == -1) { unitBox.removeAllItems(); return; } Material mat = ServiceFacade.getInstance().getMaterialByName((String) materialBox.getSelectedItem()); int typeId = mat.getUnitType().getTypeId(); setComboBoxModel(ServiceFacade.getInstance().getUnitTypeAbbrsByTypeId(typeId), unitBox); unitBox.setSelectedItem(mat.getUnitType().getAbbreviation()); } //ABSTRACT methods /** * Metoda inicializuje komponenty na danem JDialogu. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ protected abstract void initComponents() throws RemoteException, NotBoundException, FileNotFoundException; /** * Metoda kontrolujici spravnost vstupupnich poli na formulari. * * @return Vraci index urcujici vstupni komponentu, ktera obsahuje * neplatny vstup. */ protected abstract int isValidInput(); /** * Metoda inicializuje tabulku na danem JDialogu. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ protected abstract void initTable() throws RemoteException, NotBoundException, FileNotFoundException; /** * Metoda provadi aktualizaci vsech comboBoxu a aktualizaci tabulky na danem * JDialogu. * * @throws java.rmi.RemoteException * @throws java.rmi.NotBoundException * @throws java.io.FileNotFoundException */ protected abstract void refresh() throws RemoteException, NotBoundException, FileNotFoundException; }