package devopsdistilled.operp.client.business.sales.panes; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.inject.Inject; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import net.miginfocom.swing.MigLayout; import devopsdistilled.operp.client.abstracts.EntityOperation; import devopsdistilled.operp.client.abstracts.EntityPane; import devopsdistilled.operp.client.abstracts.libs.BeanTableModel; import devopsdistilled.operp.client.account.panes.controllers.ReceivedTransactionPaneController; import devopsdistilled.operp.client.business.sales.controllers.SaleController; import devopsdistilled.operp.client.business.sales.panes.controllers.SaleDetailsPaneController; import devopsdistilled.operp.client.business.sales.panes.models.observers.SaleDetailsPaneModelObserver; import devopsdistilled.operp.server.data.entity.account.ReceivedTransaction; import devopsdistilled.operp.server.data.entity.business.BusinessDescRow; import devopsdistilled.operp.server.data.entity.business.Sale; import devopsdistilled.operp.server.data.entity.business.SaleDescRow; public class SaleDetailsPane extends EntityPane<Sale, SaleController, SaleDetailsPaneController> implements SaleDetailsPaneModelObserver { @Inject private ReceivedTransactionPaneController receivedTransactionPaneController; private final JPanel pane; private final JTextField saleIdField; private final JTextField customerField; private final JTextField dateField; private final JTextField discountField; private final JLabel lblTotal; private final JTextField totalField; private final JButton btnOk; private final JButton btnReceivePayment; private final JTable table; BeanTableModel<SaleDescRow> tableModel; public SaleDetailsPane() { pane = new JPanel(); pane.setLayout(new MigLayout("", "[][grow][grow]", "[][grow][][][][]")); JLabel lblSaleId = new JLabel("Sale ID"); pane.add(lblSaleId, "flowx,cell 0 0,alignx trailing"); JLabel lblCustomer = new JLabel("Customer"); pane.add(lblCustomer, "flowx,cell 1 0,alignx center"); JLabel lblDate = new JLabel("Date"); pane.add(lblDate, "flowx,cell 2 0,alignx trailing"); dateField = new JTextField(); dateField.setEditable(false); pane.add(dateField, "cell 2 0"); dateField.setColumns(20); customerField = new JTextField(); customerField.setEditable(false); pane.add(customerField, "cell 1 0,alignx center"); customerField.setColumns(20); saleIdField = new JTextField(); saleIdField.setEditable(false); pane.add(saleIdField, "cell 0 0,growx"); saleIdField.setColumns(10); table = new JTable(tableModel); final JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); pane.add(scrollPane, "cell 0 1 3 1,grow"); btnReceivePayment = new JButton("Receive Payment"); btnReceivePayment.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ReceivedTransaction transaction = new ReceivedTransaction(); transaction.setAccount(getController().getModel().getEntity() .getParty().getAccount()); transaction.setNote("Sale #" + getController().getModel().getEntity() .getBusinessId()); transaction.setAmount(getController().getModel().getEntity() .getAmount()); receivedTransactionPaneController.init(transaction, EntityOperation.Create); } }); pane.add(btnReceivePayment, "cell 0 5"); btnOk = new JButton("OK"); btnOk.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); pane.add(btnOk, "cell 2 5,alignx trailing"); JLabel lblDiscount = new JLabel("Discount"); pane.add(lblDiscount, "flowx,cell 2 2,alignx trailing"); discountField = new JTextField(); discountField.setEditable(false); pane.add(discountField, "cell 2 2"); discountField.setColumns(10); lblTotal = new JLabel("Total"); pane.add(lblTotal, "flowx,cell 2 3,alignx trailing"); totalField = new JTextField(); totalField.setEditable(false); pane.add(totalField, "cell 2 3"); totalField.setColumns(10); } @Override public JComponent getPane() { return pane; } @Override public void resetComponents() { } @Override public SaleController getEntityController() { return null; } @Override public void updateEntity(Sale sale, EntityOperation entityOperation) { saleIdField.setText(sale.getBusinessId().toString()); customerField.setText(sale.getParty().toString()); dateField.setText(sale.getDate().toString()); discountField.setText(sale.getBusinessDesc().getDiscountAmount() .toString()); totalField.setText(sale.getAmount().toString()); tableModel = null; tableModel = new BeanTableModel<>(SaleDescRow.class, BusinessDescRow.class, sale.getBusinessDesc().getDescRows()); for (int i = 0; i < table.getColumnCount(); i++) { tableModel.setColumnEditable(i, false); } tableModel.setModelEditable(false); table.setModel(tableModel); } }