/* * OffenePflege * Copyright (C) 2006-2012 Torsten Löhr * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License V2 as published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; if not, write to * the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA * www.offene-pflege.de * ------------------------ * Auf deutsch (freie Übersetzung. Rechtlich gilt die englische Version) * Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, * wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, gemäß Version 2 der Lizenz. * * Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber * OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN * BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License. * * Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, * schreiben Sie an die Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA. * */ package op.care.med.structure; import com.jgoodies.forms.factories.CC; import com.jgoodies.forms.layout.FormLayout; import com.jidesoft.popup.JidePopup; import entity.prescription.*; import op.OPDE; import op.care.med.prodassistant.DlgACME; import op.tools.MyJDialog; import op.tools.SYSTools; import org.apache.commons.collections.Closure; import javax.persistence.EntityManager; import javax.persistence.LockModeType; 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; /** * @author tloehr */ public class DlgProduct extends MyJDialog { private MedProducts product; /** * Creates new form DlgProdukt */ public DlgProduct(String title, MedProducts product) { super(false); this.product = product; setTitle(title); initComponents(); initDialog(); pack(); // setVisible(true); } private void btnAddActionPerformed(ActionEvent e) { final JidePopup popup = new JidePopup(); DlgACME dlg = new DlgACME(o -> { if (o != null) { cmbAcme.setModel(new DefaultComboBoxModel(new ACME[]{(ACME) o})); cmbAcme.setSelectedIndex(0); popup.hidePopup(); } }); popup.setMovable(false); popup.setResizable(false); popup.getContentPane().setLayout(new BoxLayout(popup.getContentPane(), BoxLayout.LINE_AXIS)); popup.getContentPane().add(dlg); popup.setOwner(btnAdd); popup.removeExcludedComponent(btnAdd); popup.setTransient(true); popup.setDefaultFocusComponent(dlg); popup.showPopup(new Insets(-5, 0, -5, 0), btnAdd); } private void cmbAcmeItemStateChanged(ItemEvent e) { } private void initDialog() { lblProductName.setText(SYSTools.xx("newstocks.lblProd")); lblAcme.setText(SYSTools.xx("misc.msg.acme")); lblSideEffects.setText(SYSTools.xx("misc.msg.sideeffects")); EntityManager em = OPDE.createEM(); Query query2 = em.createQuery("SELECT m FROM ACME m ORDER BY m.name, m.city"); cmbAcme.setModel(new DefaultComboBoxModel(query2.getResultList().toArray(new ACME[]{}))); cmbAcme.setRenderer(ACMETools.getRenderer(0)); em.close(); if (product != null) { cmbAcme.setSelectedItem(product.getACME()); } txtName.setText(product.getText()); txtSideEffects.setText(product.getSideEffects()); } /** * 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 PrinterForm Editor. */ // <editor-fold defaultstate="collapsed" desc=" Erzeugter Quelltext ">//GEN-BEGIN:initComponents private void initComponents() { lblProductName = new JLabel(); txtName = new JTextField(); cmbAcme = new JComboBox<>(); lblAcme = new JLabel(); btnAdd = new JButton(); lblSideEffects = new JLabel(); scrollPane1 = new JScrollPane(); txtSideEffects = new JTextArea(); panel1 = new JPanel(); btnCancel = new JButton(); btnOK = new JButton(); //======== this ======== setModal(true); Container contentPane = getContentPane(); contentPane.setLayout(new FormLayout( "2*(default, $lcgap), default:grow, 2*($lcgap, default)", "default, 2*($lgap, fill:default), $lgap, fill:default:grow, $lgap, fill:default, $lgap, default")); //---- lblProductName ---- lblProductName.setText("Produktname"); lblProductName.setFont(new Font("Arial", Font.PLAIN, 14)); contentPane.add(lblProductName, CC.xy(3, 3)); //---- txtName ---- txtName.setFont(new Font("Arial", Font.PLAIN, 14)); contentPane.add(txtName, CC.xywh(5, 3, 3, 1)); //---- cmbAcme ---- cmbAcme.setModel(new DefaultComboBoxModel<>(new String[] { "Eintrag 1", "Eintrag 2", "Eintrag 3", "Eintrag 4" })); cmbAcme.setFont(new Font("Arial", Font.PLAIN, 14)); cmbAcme.addItemListener(e -> cmbAcmeItemStateChanged(e)); contentPane.add(cmbAcme, CC.xy(5, 5)); //---- lblAcme ---- lblAcme.setText("Hersteller"); lblAcme.setFont(new Font("Arial", Font.PLAIN, 14)); contentPane.add(lblAcme, CC.xy(3, 5)); //---- btnAdd ---- btnAdd.setText(null); btnAdd.setIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/add.png"))); btnAdd.setContentAreaFilled(false); btnAdd.setBorder(null); btnAdd.setSelectedIcon(new ImageIcon(getClass().getResource("/artwork/22x22/bw/add-pressed.png"))); btnAdd.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); btnAdd.addActionListener(e -> btnAddActionPerformed(e)); contentPane.add(btnAdd, CC.xy(7, 5, CC.LEFT, CC.DEFAULT)); //---- lblSideEffects ---- lblSideEffects.setText("Hersteller"); lblSideEffects.setFont(new Font("Arial", Font.PLAIN, 14)); contentPane.add(lblSideEffects, CC.xy(3, 7, CC.DEFAULT, CC.TOP)); //======== scrollPane1 ======== { //---- txtSideEffects ---- txtSideEffects.setFont(new Font("Arial", Font.PLAIN, 14)); scrollPane1.setViewportView(txtSideEffects); } contentPane.add(scrollPane1, CC.xywh(5, 7, 3, 1)); //======== panel1 ======== { panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS)); //---- btnCancel ---- btnCancel.setIcon(new ImageIcon(getClass().getResource("/artwork/16x16/cancel.png"))); btnCancel.setText(null); btnCancel.addActionListener(e -> btnCancelActionPerformed(e)); panel1.add(btnCancel); //---- btnOK ---- btnOK.setIcon(new ImageIcon(getClass().getResource("/artwork/16x16/apply.png"))); btnOK.setText(null); btnOK.addActionListener(e -> btnOKActionPerformed(e)); panel1.add(btnOK); } contentPane.add(panel1, CC.xywh(5, 9, 3, 1, CC.RIGHT, CC.DEFAULT)); setSize(585, 285); setLocationRelativeTo(null); }// </editor-fold>//GEN-END:initComponents private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOKActionPerformed if (!saveOK()) return; EntityManager em = OPDE.createEM(); try { em.getTransaction().begin(); MedProducts myProduct = em.merge(product); myProduct.setText(txtName.getText().trim()); myProduct.setSideEffects(txtSideEffects.getText().trim()); myProduct.setACME(em.merge((ACME) cmbAcme.getSelectedItem())); for (TradeForm tf : myProduct.getTradeforms()) { em.lock(em.merge(tf), LockModeType.OPTIMISTIC_FORCE_INCREMENT); for (MedPackage mp : tf.getPackages()) { em.lock(em.merge(mp), LockModeType.OPTIMISTIC_FORCE_INCREMENT); } } em.lock(myProduct, LockModeType.OPTIMISTIC); em.getTransaction().commit(); product = myProduct; } catch (Exception e) { if (em.getTransaction().isActive()) { em.getTransaction().rollback(); } OPDE.fatal(e); } finally { em.close(); } dispose(); //hier gehts weiter. prüf auch die anderen locks bei den anderen editoren }//GEN-LAST:event_btnOKActionPerformed public MedProducts getProduct() { return product; } private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed // product = null; dispose(); }//GEN-LAST:event_btnCancelActionPerformed private boolean saveOK() { return !txtName.getText().trim().isEmpty() && cmbAcme.getSelectedItem() != null; } // Variablendeklaration - nicht modifizieren//GEN-BEGIN:variables private JLabel lblProductName; private JTextField txtName; private JComboBox<String> cmbAcme; private JLabel lblAcme; private JButton btnAdd; private JLabel lblSideEffects; private JScrollPane scrollPane1; private JTextArea txtSideEffects; private JPanel panel1; private JButton btnCancel; private JButton btnOK; // Ende der Variablendeklaration//GEN-END:variables }