CanvasResizePopUp.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package holeg.ui.view.dialog;
  2. import javax.swing.*;
  3. import holeg.ui.controller.Control;
  4. import holeg.ui.model.GuiSettings;
  5. import holeg.ui.model.Model;
  6. import holeg.ui.view.canvas.Canvas;
  7. import holeg.ui.view.canvas.GroupNodeCanvas;
  8. import holeg.utility.ImageImport;
  9. import holeg.utility.Vector2Int;
  10. import java.awt.*;
  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. public class CanvasResizePopUp extends JDialog {
  14. private final JButton btnOk = new JButton("OK");
  15. private final JButton btnCancel = new JButton("Cancel");
  16. JTabbedPane tabbedPane;
  17. Model model;
  18. Control controller;
  19. Canvas canvas;
  20. private JPanel mainPanel = new JPanel();
  21. private JTextField tFieldWidht = new JTextField();
  22. private JTextField tFieldHeight = new JTextField();
  23. private JLabel lblWidth = new JLabel("Width:");
  24. private JLabel lblHeight = new JLabel("Height:");
  25. private JPanel buttonPanel = new JPanel();
  26. public CanvasResizePopUp(Model model, Control controller, Canvas canvas, JTabbedPane tabbedPane, JFrame parentFrame) {
  27. super((java.awt.Frame) null, true);
  28. this.tabbedPane = tabbedPane;
  29. this.model = model;
  30. this.controller = controller;
  31. this.canvas = canvas;
  32. // properties and stuff
  33. this.setIconImage(ImageImport.loadImage("/Images/Holeg.png",30,30));
  34. this.setTitle("Set the Size of the View");
  35. setBounds(200, 100, 200, 100);
  36. setLocationRelativeTo(parentFrame);
  37. // MainPanel
  38. tFieldWidht.setText("" + GuiSettings.canvasSize.getX());
  39. tFieldHeight.setText("" + GuiSettings.canvasSize.getY());
  40. mainPanel.add(lblWidth);
  41. mainPanel.add(tFieldWidht);
  42. mainPanel.add(lblHeight);
  43. mainPanel.add(tFieldHeight);
  44. mainPanel.setBackground(Color.WHITE);
  45. // Button Panel
  46. btnOk.addActionListener(new ActionListener() {
  47. @Override
  48. public void actionPerformed(ActionEvent e) {
  49. GuiSettings.canvasSize.setX(Integer.parseInt(tFieldWidht.getText()));
  50. GuiSettings.canvasSize.setY(Integer.parseInt(tFieldHeight.getText()));
  51. Vector2Int actualCanvasSize = GuiSettings.canvasSize;
  52. Dimension preferedSize = new Dimension(actualCanvasSize.getX(), actualCanvasSize.getY());
  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, actualCanvasSize.getX());
  68. position.clampY(0, actualCanvasSize.getY());
  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. }