package devopsdistilled.operp.client.party.panes;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.inject.Inject;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
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.party.controllers.VendorController;
import devopsdistilled.operp.client.party.panes.controllers.VendorPaneController;
import devopsdistilled.operp.client.party.panes.models.observers.VendorPaneModelObserver;
import devopsdistilled.operp.server.data.entity.party.Party;
import devopsdistilled.operp.server.data.entity.party.Vendor;
public class VendorPane extends
EntityPane<Vendor, VendorController, VendorPaneController> implements
VendorPaneModelObserver {
@Inject
private VendorController vendorController;
private final JPanel pane;
private final JTextField nameField;
private final JTextField panVatField;
private final JLabel lblVendorId;
private final JTextField vendorIdField;
private JPanel contactInfoPanel;
private JPanel opBtnPanel;
public VendorPane() {
pane = new JPanel();
pane.setLayout(new MigLayout("", "[][grow]", "[][][][][][]"));
lblVendorId = new JLabel("Vendor ID");
pane.add(lblVendorId, "cell 0 0,alignx trailing");
vendorIdField = new JTextField();
vendorIdField.setEditable(false);
pane.add(vendorIdField, "cell 1 0,growx");
vendorIdField.setColumns(10);
JLabel lblVendorName = new JLabel("Vendor Name");
pane.add(lblVendorName, "cell 0 1,alignx trailing");
nameField = new JTextField();
nameField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
((Party<?>) getController().getModel().getEntity())
.setPartyName(nameField.getText().trim());
}
});
pane.add(nameField, "cell 1 1,growx");
nameField.setColumns(10);
JLabel lblPanvat = new JLabel("PAN/VAT");
pane.add(lblPanvat, "cell 0 2,alignx trailing");
panVatField = new JTextField();
panVatField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
((Party<?>) getController().getModel().getEntity())
.setPanVat(panVatField.getText().trim());
}
});
pane.add(panVatField, "cell 1 2,growx");
panVatField.setColumns(10);
contactInfoPanel = new JPanel();
pane.add(contactInfoPanel, "cell 0 3 2 1,grow");
opBtnPanel = new JPanel();
pane.add(opBtnPanel, "cell 1 5,grow");
}
@Override
public JComponent getPane() {
return pane;
}
public void setContactInfopanel(JPanel contactInfoPanel) {
MigLayout layout = (MigLayout) pane.getLayout();
Object constraints = layout
.getComponentConstraints(this.contactInfoPanel);
pane.remove(this.contactInfoPanel);
pane.add(contactInfoPanel, constraints);
this.contactInfoPanel = contactInfoPanel;
pane.validate();
}
@Override
public void updateEntity(Vendor vendor, EntityOperation entityOperation) {
if (EntityOperation.Create == entityOperation) {
getController().getModel().setTitle("Create Vendor");
opBtnPanel = setBtnPanel(createOpPanel, opBtnPanel);
lblVendorId.setVisible(false);
vendorIdField.setVisible(false);
} else if (EntityOperation.Edit == entityOperation) {
getController().getModel().setTitle("Edit Vendor");
opBtnPanel = setBtnPanel(editOpPanel, opBtnPanel);
vendorIdField.setText(vendor.getPartyId().toString());
} else if (EntityOperation.Details == entityOperation) {
getController().getModel().setTitle("Vendor Details");
opBtnPanel = setBtnPanel(detailsOpPanel, opBtnPanel);
vendorIdField.setText(vendor.getPartyId().toString());
nameField.setEditable(false);
panVatField.setEditable(false);
detailsOpPanel.setVisible(true);
}
nameField.setText(vendor.getPartyName());
panVatField.setText(vendor.getPanVat());
}
@Override
public void resetComponents() {
lblVendorId.setVisible(true);
vendorIdField.setVisible(true);
nameField.setEditable(true);
panVatField.setEditable(true);
}
@Override
public VendorController getEntityController() {
return vendorController;
}
}