From 6b47dcf9e0c2142f17fb544279f9fcdac5bd56d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Cort=C3=A9s?= Date: Thu, 9 May 2019 14:26:08 -0400 Subject: [PATCH] Cosas, cambio el mantenedor de editorial --- biblioteca.vpp | Bin 916480 -> 916480 bytes .../controllers/LaunchController.java | 11 +- .../editorial/EditorialListController.java | 41 ----- .../editorial/EditorialSearchController.java | 117 ++++++++++++++ .../editorial/EditorialUpdateController.java | 47 ++---- .../editorial/EditorialValidator.java | 13 ++ .../editorial/EditorialViewController.java | 46 ++++++ .../xyz/danielcortes/framework/PanelName.java | 4 +- .../views/editorial/EditorialDeletePanel.java | 97 ------------ .../views/editorial/EditorialListPanel.form | 28 ---- .../views/editorial/EditorialListPanel.java | 87 ----------- .../views/editorial/EditorialSearchPanel.form | 96 ++++++++++++ .../views/editorial/EditorialSearchPanel.java | 144 ++++++++++++++++++ .../views/editorial/EditorialUpdatePanel.form | 44 ++---- .../views/editorial/EditorialUpdatePanel.java | 71 +++------ ...letePanel.form => EditorialViewPanel.form} | 58 +++---- .../views/editorial/EditorialViewPanel.java | 82 ++++++++++ 17 files changed, 586 insertions(+), 400 deletions(-) delete mode 100644 src/main/java/xyz/danielcortes/controllers/editorial/EditorialListController.java create mode 100644 src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java create mode 100644 src/main/java/xyz/danielcortes/controllers/editorial/EditorialViewController.java delete mode 100644 src/main/java/xyz/danielcortes/views/editorial/EditorialDeletePanel.java delete mode 100644 src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.form delete mode 100644 src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.java create mode 100644 src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.form create mode 100644 src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.java rename src/main/java/xyz/danielcortes/views/editorial/{EditorialDeletePanel.form => EditorialViewPanel.form} (75%) create mode 100644 src/main/java/xyz/danielcortes/views/editorial/EditorialViewPanel.java diff --git a/biblioteca.vpp b/biblioteca.vpp index a756ad35b35dfd14f36217680bf92f13435c82c4..8f6e6eac0c4e25f3d8b2ef2c12d7a3e8f07b2ecb 100644 GIT binary patch delta 9791 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 delta 47813 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 editoriales = this.editorialRepository.getAll(); - BaseTableModel model = this.view.getEditorialModel(); - model.setRows(editoriales); - } - - public BasePanel getView() { - return view; - } -} diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java new file mode 100644 index 0000000..e2ec420 --- /dev/null +++ b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialSearchController.java @@ -0,0 +1,117 @@ +package xyz.danielcortes.controllers.editorial; + +import java.util.List; +import javax.swing.JOptionPane; +import xyz.danielcortes.controllers.BaseController; +import xyz.danielcortes.controllers.LaunchController; +import xyz.danielcortes.framework.BaseTableModel; +import xyz.danielcortes.framework.PanelName; +import xyz.danielcortes.models.Editorial; +import xyz.danielcortes.repository.EditorialRepository; +import xyz.danielcortes.views.BasePanel; +import xyz.danielcortes.views.editorial.EditorialSearchPanel; + +public class EditorialSearchController extends BaseController { + private EditorialSearchPanel view; + private EditorialRepository editorialRepository; + private EditorialValidator validator; + + public EditorialSearchController(EditorialSearchPanel view, LaunchController parent) { + super(parent); + this.view = view; + this.editorialRepository = new EditorialRepository(); + this.validator = new EditorialValidator(this.editorialRepository); + this.loadEditorialTable(); + this.setupListeners(); + } + @Override + public void show() { + this.reload(); + } + + public void reload() { + this.loadEditorialTable(); + } + + private void setupListeners(){ + this.view.getBuscarButton().addActionListener(e -> search()); + this.view.getBuscarField().addActionListener(e -> search()); + this.view.getEliminarButton().addActionListener(e -> delete()); + this.view.getEditarButton().addActionListener(e -> edit()); + this.view.getVerButton().addActionListener(e -> view()); + } + + private void view() { + Editorial editorial = this.getSelectedEditorial(); + if(editorial != null) { + EditorialViewController controller = (EditorialViewController) this.getParentController().getCard(PanelName.EDITORIAL_VIEW); + controller.setEditorial(editorial); + this.getParentController().showCard(PanelName.EDITORIAL_VIEW); + } + } + + private void edit() { + Editorial editorial = this.getSelectedEditorial(); + if(editorial != null) { + EditorialUpdateController controller = (EditorialUpdateController) this.getParentController().getCard(PanelName.EDITORIAL_UPDATE); + controller.setEditorial(editorial); + this.getParentController().showCard(PanelName.EDITORIAL_UPDATE); + } + } + + private void delete() { + Editorial editorial = this.getSelectedEditorial(); + if (editorial == null) + return; + if(!this.validator.isDeleteable(editorial)) + return; + + int option = JOptionPane.showConfirmDialog( + null, + "¿Estas seguro de que deseas eliminar la editorial?", + "Confirmacion", + JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE + ); + if (option == JOptionPane.NO_OPTION) + return; + + this.editorialRepository.delete(editorial); + this.reload(); + } + + private void search() { + String term = this.view.getBuscarField().getText(); + List editoriales = this.editorialRepository.search(term); + this.loadEditorialTable(editoriales); + } + + private void loadEditorialTable(List editoriales){ + BaseTableModel model = this.view.getEditorialModel(); + model.setRows(editoriales); + } + + private void loadEditorialTable(){ + List editoriales = this.editorialRepository.getAll(); + loadEditorialTable(editoriales); + } + + private Editorial getSelectedEditorial() { + int selectedRow = this.view.getEditorialTable().getSelectedRow(); + if (selectedRow == -1) { + JOptionPane.showMessageDialog( + null, + "No hay editorial seleccionada", + "Error", + JOptionPane.ERROR_MESSAGE + ); + return null; + } + + return this.view.getEditorialModel().getRow(selectedRow); + } + + public BasePanel getView() { + return view; + } +} diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java index fc3c26d..3936756 100644 --- a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java +++ b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialUpdateController.java @@ -1,9 +1,8 @@ package xyz.danielcortes.controllers.editorial; -import java.util.List; -import javax.swing.JComboBox; import xyz.danielcortes.controllers.BaseController; import xyz.danielcortes.controllers.LaunchController; +import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.models.Editorial; import xyz.danielcortes.repository.EditorialRepository; import xyz.danielcortes.views.BasePanel; @@ -14,6 +13,7 @@ public class EditorialUpdateController extends BaseController { private EditorialUpdatePanel view; private EditorialRepository editorialRepository; private EditorialValidator validator; + private Editorial editorial; public EditorialUpdateController(EditorialUpdatePanel view, LaunchController parent) { super(parent); @@ -25,50 +25,35 @@ public class EditorialUpdateController extends BaseController { @Override public void show() { - this.reload(); - this.view.getEditorialCombo().requestFocus(); + if(this.editorial == null) + return; + + this.view.getNombreField().setText(this.editorial.getNombre()); + this.view.getNombreField().requestFocus(); + } + + public void setEditorial(Editorial editorial) { + this.editorial = editorial; } private void setupListeners() { - this.view.getEditorialCombo().addActionListener(e -> { - Editorial selected = (Editorial) this.view.getEditorialCombo().getSelectedItem(); - if (selected != null) - this.view.getNombreField().setText(selected.getNombre()); - }); this.view.getNombreField().addActionListener(e -> this.update()); this.view.getActualizarButton().addActionListener(e -> this.update()); } private void update() { - Editorial original = (Editorial) this.view.getEditorialCombo().getSelectedItem(); - if (!this.validator.validateOriginal(original)) + if (!this.validator.validateOriginal(this.editorial)) return; String nombre = this.view.getNombreField().getText(); if (!this.validator.validateNombre(nombre)) return; - assert original != null; - original.setNombre(nombre); - this.editorialRepository.update(original); + assert this.editorial != null; + this.editorial.setNombre(nombre); + this.editorialRepository.update(this.editorial); - this.view.getNombreField().setText(""); - this.loadEditorialCombo(); - this.view.getNombreField().requestFocus(); - } - - - public void reload() { - this.loadEditorialCombo(); - } - - private void loadEditorialCombo() { - List editoriales = this.editorialRepository.getAll(); - JComboBox combobox = this.view.getEditorialCombo(); - combobox.removeAllItems(); - for(Editorial editorial: editoriales) { - combobox.addItem(editorial); - } + this.getParentController().showCard(PanelName.EDITORIAL_SEARCH); } public BasePanel getView() { diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialValidator.java b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialValidator.java index 03f73b4..15003b1 100644 --- a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialValidator.java +++ b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialValidator.java @@ -44,4 +44,17 @@ public class EditorialValidator { return true; } + public boolean isDeleteable(Editorial editorial){ + if(editorial.getLibros().size() > 0){ + JOptionPane.showMessageDialog( + null, + "No se puede eliminar la editorial ya que tiene libros asociados", + "Error", + JOptionPane.ERROR_MESSAGE + ); + return false; + } + return true; + } + } diff --git a/src/main/java/xyz/danielcortes/controllers/editorial/EditorialViewController.java b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialViewController.java new file mode 100644 index 0000000..4de4776 --- /dev/null +++ b/src/main/java/xyz/danielcortes/controllers/editorial/EditorialViewController.java @@ -0,0 +1,46 @@ +package xyz.danielcortes.controllers.editorial; + +import xyz.danielcortes.controllers.BaseController; +import xyz.danielcortes.controllers.LaunchController; +import xyz.danielcortes.framework.PanelName; +import xyz.danielcortes.models.Editorial; +import xyz.danielcortes.views.BasePanel; +import xyz.danielcortes.views.editorial.EditorialViewPanel; + +public class EditorialViewController extends BaseController { + private Editorial editorial; + private EditorialViewPanel view; + + public EditorialViewController(EditorialViewPanel view, LaunchController parent) { + super(parent); + this.view = view; + this.setupListeners(); + } + + @Override + public void show() { + this.fillEditorial(); + } + + public void setEditorial(Editorial editorial){ + this.editorial = editorial; + } + + private void setupListeners(){ + this.view.getVolverButton().addActionListener(e -> { + this.getParentController().showCard(PanelName.EDITORIAL_SEARCH); + }); + } + + private void fillEditorial() { + if(editorial == null) + return; + + this.view.getNombreField().setText(this.editorial.getNombre()); + } + + @Override + public BasePanel getView() { + return this.view; + } +} diff --git a/src/main/java/xyz/danielcortes/framework/PanelName.java b/src/main/java/xyz/danielcortes/framework/PanelName.java index 4d91d79..07bc962 100644 --- a/src/main/java/xyz/danielcortes/framework/PanelName.java +++ b/src/main/java/xyz/danielcortes/framework/PanelName.java @@ -6,22 +6,20 @@ public enum PanelName { LIBRO_SEARCH, LIBRO_CREATE, LIBRO_UPDATE, - LIBRO_DELETE, IDIOMA_SEARCH, IDIOMA_CREATE, IDIOMA_UPDATE, - IDIOMA_DELETE, CATEGORIA_VIEW, CATEGORIA_SEARCH, CATEGORIA_CREATE, CATEGORIA_UPDATE, + EDITORIAL_VIEW, EDITORIAL_SEARCH, EDITORIAL_CREATE, EDITORIAL_UPDATE, - EDITORIAL_DELETE, AUTOR_VIEW, AUTOR_SEARCH, diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialDeletePanel.java b/src/main/java/xyz/danielcortes/views/editorial/EditorialDeletePanel.java deleted file mode 100644 index 44ffdb7..0000000 --- a/src/main/java/xyz/danielcortes/views/editorial/EditorialDeletePanel.java +++ /dev/null @@ -1,97 +0,0 @@ -package xyz.danielcortes.views.editorial; - -import com.intellij.uiDesigner.core.GridConstraints; -import com.intellij.uiDesigner.core.GridLayoutManager; -import com.intellij.uiDesigner.core.Spacer; -import java.awt.Dimension; -import java.awt.Insets; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JPanel; -import xyz.danielcortes.models.Editorial; -import xyz.danielcortes.views.BasePanel; - -public class EditorialDeletePanel extends BasePanel { - - private JPanel contentPane; - private JComboBox editorialCombo; - private DefaultComboBoxModel editorialModel; - private JButton eliminarButton; - - public JPanel getContentPane() { - return contentPane; - } - - public JComboBox getEditorialCombo() { - return editorialCombo; - } - - public DefaultComboBoxModel getEditorialModel() { - return editorialModel; - } - - public JButton getEliminarButton() { - return eliminarButton; - } - - private void createUIComponents() { - this.editorialModel = new DefaultComboBoxModel<>(); - this.editorialCombo = new JComboBox<>(this.editorialModel); - } - - { -// GUI initializer generated by IntelliJ IDEA GUI Designer -// >>> IMPORTANT!! <<< -// DO NOT EDIT OR ADD ANY CODE HERE! - $$$setupUI$$$(); - } - - /** - * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR - * call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - createUIComponents(); - contentPane = new JPanel(); - contentPane.setLayout(new GridLayoutManager(4, 3, new Insets(20, 20, 20, 20), -1, -1)); - contentPane.add(editorialCombo, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, - GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, - GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false)); - final JLabel label1 = new JLabel(); - label1.setText("Editorial:"); - contentPane.add(label1, - new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, - GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, - false)); - eliminarButton = new JButton(); - eliminarButton.setText("Eliminar"); - contentPane.add(eliminarButton, - new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, - GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, - GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer1 = new Spacer(); - contentPane.add(spacer1, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_CENTER, - GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, - false)); - final Spacer spacer2 = new Spacer(); - contentPane.add(spacer2, new GridConstraints(3, 2, 1, 1, GridConstraints.ANCHOR_CENTER, - GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, - 0, false)); - final Spacer spacer3 = new Spacer(); - contentPane.add(spacer3, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, - GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, - 0, false)); - } - - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPane; - } -} diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.form b/src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.form deleted file mode 100644 index 76a0d95..0000000 --- a/src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.form +++ /dev/null @@ -1,28 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.java b/src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.java deleted file mode 100644 index bea8778..0000000 --- a/src/main/java/xyz/danielcortes/views/editorial/EditorialListPanel.java +++ /dev/null @@ -1,87 +0,0 @@ -package xyz.danielcortes.views.editorial; - -import com.intellij.uiDesigner.core.GridConstraints; -import com.intellij.uiDesigner.core.GridLayoutManager; -import java.awt.Dimension; -import java.awt.Insets; -import javax.swing.JComponent; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import xyz.danielcortes.framework.BaseTableModel; -import xyz.danielcortes.models.Editorial; -import xyz.danielcortes.views.BasePanel; - -public class EditorialListPanel extends BasePanel { - - private JPanel contentPane; - private JTable editorialTable; - private BaseTableModel editorialModel; - - public JPanel getContentPane() { - return contentPane; - } - - public JTable getEditorialTable() { - return editorialTable; - } - - public BaseTableModel getEditorialModel() { - return editorialModel; - } - - - private void createUIComponents() { - this.createEditorialTable(); - } - - - private void createEditorialTable() { - // @formatter:off - this.editorialModel = new BaseTableModel<>( - new String[]{"Nombre", "Nº Libros"}, - (row, rowIndex, colIndex) -> { - switch(colIndex) { - case 0: return row.get(rowIndex).getNombre(); - case 1: return row.get(rowIndex).getLibros().size(); - default: return null; - } - } - ); - this.editorialTable = new JTable(this.editorialModel); - // @formatter:on - } - - { -// GUI initializer generated by IntelliJ IDEA GUI Designer -// >>> IMPORTANT!! <<< -// DO NOT EDIT OR ADD ANY CODE HERE! - $$$setupUI$$$(); - } - - /** - * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR - * call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - createUIComponents(); - contentPane = new JPanel(); - contentPane.setLayout(new GridLayoutManager(1, 1, new Insets(20, 20, 20, 20), -1, -1)); - final JScrollPane scrollPane1 = new JScrollPane(); - contentPane.add(scrollPane1, - new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, - GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, - GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, - new Dimension(400, -1), null, 0, false)); - scrollPane1.setViewportView(editorialTable); - } - - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPane; - } -} diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.form b/src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.form new file mode 100644 index 0000000..0b1a672 --- /dev/null +++ b/src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.form @@ -0,0 +1,96 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.java b/src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.java new file mode 100644 index 0000000..c50d70f --- /dev/null +++ b/src/main/java/xyz/danielcortes/views/editorial/EditorialSearchPanel.java @@ -0,0 +1,144 @@ +package xyz.danielcortes.views.editorial; + +import com.intellij.uiDesigner.core.GridConstraints; +import com.intellij.uiDesigner.core.GridLayoutManager; +import java.awt.Dimension; +import java.awt.Insets; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import xyz.danielcortes.framework.BaseTableModel; +import xyz.danielcortes.models.Editorial; +import xyz.danielcortes.views.BasePanel; + +public class EditorialSearchPanel extends BasePanel { + + private JPanel contentPane; + private JTable editorialTable; + private JButton buscarButton; + private JTextField buscarField; + private JButton verButton; + private JButton editarButton; + private JButton eliminarButton; + private BaseTableModel editorialModel; + + public JPanel getContentPane() { + return contentPane; + } + + public JTable getEditorialTable() { + return editorialTable; + } + + public BaseTableModel getEditorialModel() { + return editorialModel; + } + + public JButton getBuscarButton() { + return buscarButton; + } + + public JTextField getBuscarField() { + return buscarField; + } + + public JButton getVerButton() { + return verButton; + } + + public JButton getEditarButton() { + return editarButton; + } + + public JButton getEliminarButton() { + return eliminarButton; + } + + private void createUIComponents() { + this.createEditorialTable(); + } + + private void createEditorialTable() { + // @formatter:off + this.editorialModel = new BaseTableModel<>( + new String[]{"Nombre", "Nº Libros"}, + (row, rowIndex, colIndex) -> { + switch(colIndex) { + case 0: return row.get(rowIndex).getNombre(); + case 1: return row.get(rowIndex).getLibros().size(); + default: return null; + } + } + ); + this.editorialTable = new JTable(this.editorialModel); + // @formatter:on + } + + { +// GUI initializer generated by IntelliJ IDEA GUI Designer +// >>> IMPORTANT!! <<< +// DO NOT EDIT OR ADD ANY CODE HERE! + $$$setupUI$$$(); + } + + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + createUIComponents(); + contentPane = new JPanel(); + contentPane.setLayout(new GridLayoutManager(3, 1, new Insets(20, 20, 20, 20), -1, -1)); + final JScrollPane scrollPane1 = new JScrollPane(); + contentPane.add(scrollPane1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(400, -1), null, 0, false)); + scrollPane1.setViewportView(editorialTable); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1)); + contentPane.add(panel1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + buscarButton = new JButton(); + buscarButton.setText("Buscar"); + panel1.add(buscarButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), + null, 0, false)); + buscarField = new JTextField(); + panel1.add(buscarField, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); + contentPane.add(panel2, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); + verButton = new JButton(); + verButton.setText("Ver"); + panel2.add(verButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), + null, 0, false)); + editarButton = new JButton(); + editarButton.setText("Editar"); + panel2.add(editarButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), + null, 0, false)); + eliminarButton = new JButton(); + eliminarButton.setText("Eliminar"); + panel2.add(eliminarButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), + null, 0, false)); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPane; + } + +} diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.form b/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.form index f4c2189..8c60ed7 100644 --- a/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.form +++ b/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.form @@ -1,38 +1,14 @@
- + - + - - - - - - - - - - - - - - - - - - - - - - - - @@ -40,24 +16,32 @@ + + + + + + + + - + - + - + - + diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.java b/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.java index 63b9fe9..356a9e0 100644 --- a/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.java +++ b/src/main/java/xyz/danielcortes/views/editorial/EditorialUpdatePanel.java @@ -5,22 +5,17 @@ import com.intellij.uiDesigner.core.GridLayoutManager; import com.intellij.uiDesigner.core.Spacer; import java.awt.Dimension; import java.awt.Insets; -import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; -import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; -import xyz.danielcortes.models.Editorial; import xyz.danielcortes.views.BasePanel; public class EditorialUpdatePanel extends BasePanel { private JPanel contentPane; private JTextField nombreField; - private JComboBox editorialCombo; - private DefaultComboBoxModel editorialModel; private JButton actualizarButton; public JPanel getContentPane() { @@ -30,24 +25,10 @@ public class EditorialUpdatePanel extends BasePanel { public JTextField getNombreField() { return nombreField; } - - public JComboBox getEditorialCombo() { - return editorialCombo; - } - - public DefaultComboBoxModel getEditorialModel() { - return editorialModel; - } - public JButton getActualizarButton() { return actualizarButton; } - private void createUIComponents() { - this.editorialModel = new DefaultComboBoxModel<>(); - this.editorialCombo = new JComboBox<>(this.editorialModel); - } - { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< @@ -56,52 +37,37 @@ public class EditorialUpdatePanel extends BasePanel { } /** - * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR - * call it in your code! + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code! * * @noinspection ALL */ private void $$$setupUI$$$() { - createUIComponents(); contentPane = new JPanel(); - contentPane.setLayout(new GridLayoutManager(6, 3, new Insets(20, 20, 20, 20), -1, -1)); + contentPane.setLayout(new GridLayoutManager(4, 3, new Insets(20, 20, 20, 20), -1, -1)); nombreField = new JTextField(); - contentPane.add(nombreField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, - GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, - GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false)); + contentPane.add(nombreField, + new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false)); final JLabel label1 = new JLabel(); label1.setText("Nombre:"); - contentPane.add(label1, - new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, - GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, - false)); - final JLabel label2 = new JLabel(); - label2.setText("Editorial:"); - contentPane.add(label2, - new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, - GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, - false)); - contentPane.add(editorialCombo, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, - GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, - GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false)); + contentPane.add(label1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer1 = new Spacer(); - contentPane.add(spacer1, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_CENTER, - GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, - false)); + contentPane.add(spacer1, + new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, + null, null, 0, false)); final Spacer spacer2 = new Spacer(); - contentPane.add(spacer2, new GridConstraints(5, 2, 1, 1, GridConstraints.ANCHOR_CENTER, - GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, - 0, false)); + contentPane.add(spacer2, + new GridConstraints(3, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, + null, null, 0, false)); final Spacer spacer3 = new Spacer(); - contentPane.add(spacer3, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_CENTER, - GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, - 0, false)); + contentPane.add(spacer3, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, + null, null, 0, false)); actualizarButton = new JButton(); actualizarButton.setText("Actualizar"); - contentPane.add(actualizarButton, - new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, - GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, - GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + contentPane.add(actualizarButton, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); } /** @@ -110,4 +76,5 @@ public class EditorialUpdatePanel extends BasePanel { public JComponent $$$getRootComponent$$$() { return contentPane; } + } diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialDeletePanel.form b/src/main/java/xyz/danielcortes/views/editorial/EditorialViewPanel.form similarity index 75% rename from src/main/java/xyz/danielcortes/views/editorial/EditorialDeletePanel.form rename to src/main/java/xyz/danielcortes/views/editorial/EditorialViewPanel.form index ece1357..b41d247 100644 --- a/src/main/java/xyz/danielcortes/views/editorial/EditorialDeletePanel.form +++ b/src/main/java/xyz/danielcortes/views/editorial/EditorialViewPanel.form @@ -1,5 +1,5 @@ - + @@ -8,45 +8,49 @@ - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - + - + + + - + - - - - - - - - - - - - - - - diff --git a/src/main/java/xyz/danielcortes/views/editorial/EditorialViewPanel.java b/src/main/java/xyz/danielcortes/views/editorial/EditorialViewPanel.java new file mode 100644 index 0000000..aa69137 --- /dev/null +++ b/src/main/java/xyz/danielcortes/views/editorial/EditorialViewPanel.java @@ -0,0 +1,82 @@ +package xyz.danielcortes.views.editorial; + +import com.intellij.uiDesigner.core.GridConstraints; +import com.intellij.uiDesigner.core.GridLayoutManager; +import com.intellij.uiDesigner.core.Spacer; +import java.awt.Dimension; +import java.awt.Insets; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; +import xyz.danielcortes.views.BasePanel; + +public class EditorialViewPanel extends BasePanel { + + private JPanel contentPane; + private JTextField nombreField; + private JButton volverButton; + + public JPanel getContentPane() { + return contentPane; + } + + public JTextField getNombreField() { + return nombreField; + } + + public JButton getVolverButton() { + return volverButton; + } + + { +// GUI initializer generated by IntelliJ IDEA GUI Designer +// >>> IMPORTANT!! <<< +// DO NOT EDIT OR ADD ANY CODE HERE! + $$$setupUI$$$(); + } + + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + contentPane = new JPanel(); + contentPane.setLayout(new GridLayoutManager(4, 3, new Insets(20, 20, 20, 20), -1, -1)); + final Spacer spacer1 = new Spacer(); + contentPane.add(spacer1, + new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, + null, null, 0, false)); + final Spacer spacer2 = new Spacer(); + contentPane.add(spacer2, + new GridConstraints(3, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, + null, null, 0, false)); + final Spacer spacer3 = new Spacer(); + contentPane.add(spacer3, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, + null, null, 0, false)); + final JLabel label1 = new JLabel(); + label1.setText("Nombre:"); + contentPane.add(label1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + nombreField = new JTextField(); + nombreField.setEditable(false); + contentPane.add(nombreField, + new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false)); + volverButton = new JButton(); + volverButton.setText("Volver"); + contentPane.add(volverButton, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), + null, 0, false)); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPane; + } +}