CanvasResizePopUp.java 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package ui.view.dialog;
  2. import ui.controller.Control;
  3. import ui.model.Model;
  4. import ui.view.canvas.Canvas;
  5. import ui.view.canvas.GroupNodeCanvas;
  6. import utility.ImageImport;
  7. import utility.Vector2Int;
  8. import javax.swing.*;
  9. import java.awt.*;
  10. import java.awt.event.ActionEvent;
  11. import java.awt.event.ActionListener;
  12. public class CanvasResizePopUp extends JDialog {
  13. private final JButton btnOk = new JButton("OK");
  14. private final JButton btnCancel = new JButton("Cancel");
  15. JTabbedPane tabbedPane;
  16. Model model;
  17. Control controller;
  18. Canvas canvas;
  19. private JPanel mainPanel = new JPanel();
  20. private JTextField tFieldWidht = new JTextField();
  21. private JTextField tFieldHeight = new JTextField();
  22. private JLabel lblWidth = new JLabel("Width:");
  23. private JLabel lblHeight = new JLabel("Height:");
  24. private JPanel buttonPanel = new JPanel();
  25. public CanvasResizePopUp(Model model, Control controller, Canvas canvas, JTabbedPane tabbedPane, JFrame parentFrame) {
  26. super((java.awt.Frame) null, true);
  27. this.tabbedPane = tabbedPane;
  28. this.model = model;
  29. this.controller = controller;
  30. this.canvas = canvas;
  31. // properties and stuff
  32. this.setIconImage(ImageImport.loadImage("/Images/Holeg.png",30,30));
  33. this.setTitle("Set the Size of the View");
  34. setBounds(200, 100, 200, 100);
  35. setLocationRelativeTo(parentFrame);
  36. // MainPanel
  37. tFieldWidht.setText("" + model.getCanvasX());
  38. tFieldHeight.setText("" + model.getCanvasY());
  39. mainPanel.add(lblWidth);
  40. mainPanel.add(tFieldWidht);
  41. mainPanel.add(lblHeight);
  42. mainPanel.add(tFieldHeight);
  43. mainPanel.setBackground(Color.WHITE);
  44. // Button Panel
  45. btnOk.addActionListener(new ActionListener() {
  46. @Override
  47. public void actionPerformed(ActionEvent e) {
  48. controller.setCanvasX(Integer.parseInt(tFieldWidht.getText()));
  49. controller.setCanvasY(Integer.parseInt(tFieldHeight.getText()));
  50. int width = model.getCanvasX();
  51. int height = model.getCanvasY();
  52. Dimension preferedSize = new Dimension(width, height);
  53. canvas.setPreferredSize(new Dimension(preferedSize));
  54. for (int i = 1; i < tabbedPane.getTabCount(); i++) {
  55. if (tabbedPane.getComponentAt(i) != null) {
  56. JScrollPane scollPane = (JScrollPane) tabbedPane.getComponentAt(i);
  57. GroupNodeCanvas groupNodeCanvas = ((GroupNodeCanvas) (scollPane)
  58. .getViewport().getComponent(0));
  59. groupNodeCanvas.setPreferredSize(new Dimension(preferedSize));
  60. groupNodeCanvas.repaint();
  61. }
  62. }
  63. canvas.revalidate();
  64. canvas.repaint();
  65. controller.getModel().getAllAbstractObjectsOnCanvas().stream().forEach(obj -> {
  66. Vector2Int position = obj.getPosition();
  67. position.clampX(0, width);
  68. position.clampY(0, height);
  69. });
  70. controller.updateCanvas();
  71. dispose();
  72. }
  73. });
  74. btnCancel.addActionListener(new ActionListener() {
  75. @Override
  76. public void actionPerformed(ActionEvent e) {
  77. dispose();
  78. }
  79. });
  80. buttonPanel.add(btnOk);
  81. buttonPanel.add(btnCancel);
  82. buttonPanel.setBackground(Color.WHITE);
  83. // Add to ContentPane
  84. getContentPane().add(mainPanel, BorderLayout.CENTER);
  85. getContentPane().add(buttonPanel, BorderLayout.SOUTH);
  86. }
  87. }