package devopsdistilled.operp.client.abstracts; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import devopsdistilled.operp.client.exceptions.EntityValidationException; import devopsdistilled.operp.server.data.entity.Entiti; public abstract class EntityPane<E extends Entiti<?>, EC extends EntityController<E>, C extends EntityPaneController<?, ?, ?>> extends SubTaskPane { protected C controller; protected final JPanel createOpPanel; protected final JPanel detailsOpPanel; protected final JPanel editOpPanel; public EntityPane() { // create Create Mode button panel createOpPanel = new JPanel(); createOpPanel.setLayout(new MigLayout("", "[grow]", "[]")); JButton btnCancel = new JButton("Cancel"); btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); createOpPanel.add(btnCancel, "flowx,cell 0 0"); JButton btnCreate = new JButton("Create"); btnCreate.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { getController().validate(); @SuppressWarnings("unchecked") E entity = (E) getController().save(); dispose(); getEntityController().showDetails(entity); } catch (EntityValidationException e1) { JOptionPane.showMessageDialog(getPane(), e1.getMessage()); } } }); createOpPanel.add(btnCreate, "cell 0 0"); // Create Edit Mode button panel editOpPanel = new JPanel(); editOpPanel.setLayout(new MigLayout("", "[grow]", "[]")); JButton btnEditCancel = new JButton("Cancel"); btnEditCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); editOpPanel.add(btnEditCancel, "flowx,cell 0 0"); JButton btnUpdate = new JButton("Update"); btnUpdate.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { getController().validate(); @SuppressWarnings("unchecked") E entity = (E) getController().save(); dispose(); getEntityController().showDetails(entity); } catch (EntityValidationException e1) { JOptionPane.showMessageDialog(getPane(), e1.getMessage()); } } }); editOpPanel.add(btnUpdate, "cell 0 0"); // Create Details Mode Button Panel detailsOpPanel = new JPanel(); detailsOpPanel.setLayout(new MigLayout("", "[grow]", "[]")); JButton btnDelete = new JButton("Delete"); btnDelete.addActionListener(new ActionListener() { @SuppressWarnings("unchecked") @Override public void actionPerformed(ActionEvent e) { if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog( getPane(), "Delete " + controller.getModel().getEntity().toString() + " ?", "Delete ?", JOptionPane.YES_NO_OPTION)) { dispose(); getEntityController().delete( (E) getController().getModel().getEntity()); } } }); detailsOpPanel.add(btnDelete, "flowx,cell 0 0"); JButton btnEdit = new JButton("Edit"); btnEdit.addActionListener(new ActionListener() { @SuppressWarnings("unchecked") @Override public void actionPerformed(ActionEvent e) { dispose(); getEntityController().edit( (E) getController().getModel().getEntity()); } }); detailsOpPanel.add(btnEdit, "cell 0 0"); JButton btnOk = new JButton("OK"); btnOk.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); detailsOpPanel.add(btnOk, "cell 0 0"); } public void setController(C controller) { this.controller = controller; } public C getController() { return controller; } public void dispose() { resetComponents(); getDialog().dispose(); } public abstract void resetComponents(); protected JPanel setBtnPanel(JPanel btnPanel, JPanel tobeReplaced) { MigLayout layout = (MigLayout) getPane().getLayout(); Object opBtnPanelconstraints = layout .getComponentConstraints(tobeReplaced); getPane().remove(tobeReplaced); getPane().add(btnPanel, opBtnPanelconstraints); return btnPanel; } public abstract EC getEntityController(); }