NewCategoryDialog.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package holeg.ui.view.dialog;
  2. import holeg.ui.controller.Control;
  3. import java.awt.BorderLayout;
  4. import java.awt.Dimension;
  5. import java.awt.FlowLayout;
  6. import java.awt.GridLayout;
  7. import javax.swing.JButton;
  8. import javax.swing.JDialog;
  9. import javax.swing.JFrame;
  10. import javax.swing.JLabel;
  11. import javax.swing.JPanel;
  12. import javax.swing.JTextField;
  13. /**
  14. * A simple Dialog for creating new Categories.
  15. */
  16. public class NewCategoryDialog extends JDialog {
  17. private final JPanel contentPanel = new JPanel(new BorderLayout());
  18. private final JPanel mainPanel = new JPanel();
  19. private final JPanel buttonPanel = new JPanel();
  20. private final JLabel categoryLabel = new JLabel("Category:");
  21. private final JTextField nameTextField = new JTextField("Name");
  22. private final JButton okayButton = new JButton("Okay");
  23. private final JButton cancelButton = new JButton("Cancel");
  24. private final Control control;
  25. public NewCategoryDialog(Control control, JFrame parentFrame) {
  26. super(parentFrame);
  27. this.control = control;
  28. init();
  29. this.setVisible(true);
  30. this.pack();
  31. setLocationRelativeTo(parentFrame);
  32. }
  33. private void init() {
  34. this.setTitle("Create new category");
  35. initLayout();
  36. initButtons();
  37. }
  38. private void initLayout() {
  39. buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
  40. contentPanel.setPreferredSize(new Dimension(200, 60));
  41. mainPanel.setLayout(new GridLayout(1, 2));
  42. mainPanel.add(categoryLabel);
  43. mainPanel.add(nameTextField);
  44. okayButton.setDefaultCapable(true);
  45. buttonPanel.add(okayButton);
  46. buttonPanel.add(cancelButton);
  47. contentPanel.add(mainPanel);
  48. contentPanel.add(buttonPanel, BorderLayout.PAGE_END);
  49. this.setContentPane(contentPanel);
  50. }
  51. private void initButtons() {
  52. okayButton.addActionListener(clicked -> {
  53. control.createCategoryWithName(nameTextField.getText());
  54. dispose();
  55. });
  56. cancelButton.addActionListener(clicked -> dispose());
  57. }
  58. }