/* * Created by JFormDesigner on Tue May 29 16:41:50 CEST 2012 */ package op.care.med.prodassistant; import com.jgoodies.forms.factories.CC; import com.jgoodies.forms.layout.FormLayout; import entity.prescription.MedProducts; import entity.prescription.MedProductsTools; import op.OPDE; import op.tools.SYSTools; import org.apache.commons.collections.Closure; import org.jdesktop.swingx.JXSearchField; import javax.persistence.EntityManager; import javax.persistence.Query; import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; /** * @author Torsten Löhr */ public class PnlProduct extends JPanel { public static final String internalClassID = "opde.medication.medproduct.wizard.product"; private java.util.List listProd; private MedProducts produkt; private Closure validate; private String template; public PnlProduct(Closure validate, String template) { produkt = null; this.validate = validate; this.template = template; initComponents(); initPanel(); } private void initPanel() { lblProdMsg.setVisible(false); lblProdMsg.setText(SYSTools.xx(internalClassID + ".existingProducts")); jsp1.setVisible(false); lstProd.setVisible(false); txtProd.setText(template); } private void txtProdActionPerformed(ActionEvent e) { EntityManager em = OPDE.createEM(); Query query = em.createQuery("SELECT m FROM MedProducts m WHERE m.text LIKE :bezeichnung ORDER BY m.text"); query.setParameter("bezeichnung", "%" + txtProd.getText().trim() + "%"); listProd = query.getResultList(); em.close(); if (!listProd.isEmpty()) { lblProdMsg.setVisible(true); jsp1.setVisible(true); lstProd.setVisible(true); listProd.add(0, "<html><b>" + SYSTools.xx("misc.msg.noneOfThem") + "</b></html>"); DefaultListModel lmProd; lmProd = SYSTools.list2dlm(listProd); lstProd.setModel(lmProd); lstProd.setCellRenderer(MedProductsTools.getMedProdukteRenderer()); } else { produkt = txtProd.getText().trim().isEmpty() ? null : new MedProducts(txtProd.getText().trim()); lblProdMsg.setVisible(false); jsp1.setVisible(false); lstProd.setVisible(false); validate.execute(produkt); } } private void lstProdValueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) { if (lstProd.getSelectedIndex() == 0) { produkt = txtProd.getText().trim().isEmpty() ? null : new MedProducts(txtProd.getText().trim()); } else { produkt = (MedProducts) lstProd.getSelectedValue(); } validate.execute(produkt); } } private void lstProdMouseClicked(MouseEvent e) { // TODO: double click handed over to wizard. } private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents txtProd = new JXSearchField(); label1 = new JLabel(); lblProdMsg = new JLabel(); jsp1 = new JScrollPane(); lstProd = new JList(); //======== this ======== setPreferredSize(new Dimension(610, 198)); setLayout(new FormLayout( "2*(default, $lcgap), default:grow, $lcgap, default", "2*(default), $ugap, default, $lgap, default:grow, $lgap, default")); //---- txtProd ---- txtProd.setFont(new Font("Arial", Font.PLAIN, 14)); txtProd.setInstantSearchDelay(500); txtProd.setPrompt("Produktname"); txtProd.addActionListener(e -> txtProdActionPerformed(e)); add(txtProd, CC.xywh(3, 2, 3, 1)); //---- label1 ---- label1.setText(null); label1.setIcon(new ImageIcon(getClass().getResource("/artwork/other/medicine1.png"))); add(label1, CC.xywh(3, 4, 1, 3, CC.CENTER, CC.DEFAULT)); //---- lblProdMsg ---- lblProdMsg.setFont(new Font("Arial", Font.PLAIN, 14)); lblProdMsg.setText("Es gibt bereits Medis, die so \u00e4hnlich heissen. Ist es eins von diesen ?"); lblProdMsg.setHorizontalAlignment(SwingConstants.CENTER); add(lblProdMsg, CC.xy(5, 4)); //======== jsp1 ======== { //---- lstProd ---- lstProd.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); lstProd.setFont(new Font("Arial", Font.PLAIN, 14)); lstProd.setVisible(false); lstProd.addListSelectionListener(e -> lstProdValueChanged(e)); lstProd.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { lstProdMouseClicked(e); } }); jsp1.setViewportView(lstProd); } add(jsp1, CC.xy(5, 6, CC.DEFAULT, CC.FILL)); // JFormDesigner - End of component initialization //GEN-END:initComponents } // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables private JXSearchField txtProd; private JLabel label1; private JLabel lblProdMsg; private JScrollPane jsp1; private JList lstProd; // JFormDesigner - End of variables declaration //GEN-END:variables }