/* * Created by JFormDesigner on Mon Jun 17 10:48:02 CEST 2013 */ package op.care.info; import com.jidesoft.popup.JidePopup; import entity.prescription.GP; import entity.prescription.GPTools; import op.OPDE; import op.residents.PnlEditGP; import gui.GUITools; import org.apache.commons.collections.Closure; import javax.persistence.EntityManager; import javax.persistence.Query; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; /** * @author Torsten Löhr */ public class PnlGP extends JPanel { private final Closure changeEvent; private GP selected = null; private Boolean neurologist; private Boolean dermatology; ArrayList<GP> listGPs = new ArrayList<GP>(); private JComboBox cmbGP; private JPanel panel3; private JButton btnAddGP; private JButton btnEditGP; public PnlGP(Closure changeEvent) { this.changeEvent = changeEvent; this.neurologist = null; this.dermatology = null; initComponents(); initPanel(); } public PnlGP(Closure changeEvent, Boolean neurologist, Boolean dermatology) { this.changeEvent = changeEvent; this.neurologist = neurologist; this.dermatology = dermatology; initComponents(); initPanel(); } public void setSelected(GP selected) { if (listGPs.contains(selected)) { cmbGP.setSelectedItem(selected); } else { cmbGP.setModel(new DefaultComboBoxModel(new GP[]{selected})); } } private void initPanel() { if (neurologist != null && neurologist.booleanValue()) { EntityManager em = OPDE.createEM(); Query queryGP = em.createQuery("SELECT a FROM GP a WHERE a.status >= 0 AND a.neurologist = TRUE ORDER BY a.name, a.vorname"); listGPs.addAll(queryGP.getResultList()); em.close(); } if (neurologist == null) { listGPs.addAll(GPTools.getAllActive()); } listGPs.add(0, null); cmbGP.setModel(new DefaultComboBoxModel(listGPs.toArray())); cmbGP.setRenderer(GPTools.getRenderer()); } private void btnAddGPActionPerformed(ActionEvent e) { final PnlEditGP pnlGP = new PnlEditGP(new GP()); final JidePopup popup = GUITools.createPanelPopup(pnlGP, o -> { if (o != null) { EntityManager em = OPDE.createEM(); try { em.getTransaction().begin(); GP myGP = em.merge((GP) o); em.getTransaction().commit(); cmbGP.setModel(new DefaultComboBoxModel(new GP[]{myGP})); selected = myGP; changeEvent.execute(selected); } catch (Exception ex) { if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } OPDE.fatal(ex); } finally { em.close(); } } }, btnAddGP); GUITools.showPopup(popup, SwingConstants.EAST); } private void btnEditGPActionPerformed(ActionEvent e) { if (cmbGP.getSelectedItem() == null) return; final PnlEditGP pnlGP = new PnlEditGP((GP) cmbGP.getSelectedItem()); final JidePopup popup = GUITools.createPanelPopup(pnlGP, o -> { if (o != null) { EntityManager em = OPDE.createEM(); try { em.getTransaction().begin(); GP myGP = em.merge((GP) o); em.getTransaction().commit(); cmbGP.setModel(new DefaultComboBoxModel(new GP[]{myGP})); selected = myGP; changeEvent.execute(selected); } catch (Exception ex) { if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } OPDE.fatal(ex); } finally { em.close(); } } }, btnEditGP); GUITools.showPopup(popup, SwingConstants.EAST); } private void cmbGPItemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { selected = (GP) e.getItem(); changeEvent.execute(selected); } } private void initComponents() { cmbGP = new JComboBox(); panel3 = new JPanel(); btnAddGP = new JButton(); btnEditGP = new JButton(); //======== this ======== setLayout(new BorderLayout(5, 0)); //---- cmbGP ---- cmbGP.setFont(new Font("Arial", Font.PLAIN, 14)); cmbGP.addItemListener(e -> cmbGPItemStateChanged(e)); add(cmbGP, BorderLayout.CENTER); //======== panel3 ======== { panel3.setLayout(new BoxLayout(panel3, BoxLayout.LINE_AXIS)); //---- btnAddGP ---- btnAddGP.setText(null); btnAddGP.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/add.png"))); btnAddGP.setBorderPainted(false); btnAddGP.setContentAreaFilled(false); btnAddGP.setBorder(null); btnAddGP.addActionListener(e -> btnAddGPActionPerformed(e)); panel3.add(btnAddGP); //---- btnEditGP ---- btnEditGP.setText(null); btnEditGP.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/edit3.png"))); btnEditGP.setBorderPainted(false); btnEditGP.setContentAreaFilled(false); btnEditGP.setBorder(null); btnEditGP.addActionListener(e -> btnEditGPActionPerformed(e)); panel3.add(btnEditGP); } add(panel3, BorderLayout.EAST); } }