CanvasResizePopUp.java 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package holeg.ui.view.dialog;
  2. import javax.swing.*;
  3. import holeg.preferences.ImagePreference;
  4. import holeg.ui.controller.Control;
  5. import holeg.ui.model.GuiSettings;
  6. import holeg.model.Model;
  7. import holeg.ui.view.canvas.Canvas;
  8. import holeg.ui.view.image.Import;
  9. import holeg.utility.math.vector.Vec2i;
  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. 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(Control controller, Canvas canvas, JTabbedPane tabbedPane, JFrame parentFrame) {
  26. super((java.awt.Frame) null, true);
  27. this.tabbedPane = tabbedPane;
  28. this.controller = controller;
  29. this.canvas = canvas;
  30. // properties and stuff
  31. this.setIconImage(Import.loadImage(ImagePreference.Logo,30,30));
  32. this.setTitle("Set the Size of the View");
  33. setBounds(200, 100, 200, 100);
  34. setLocationRelativeTo(parentFrame);
  35. // MainPanel
  36. tFieldWidht.setText("" + GuiSettings.canvasSize.getX());
  37. tFieldHeight.setText("" + GuiSettings.canvasSize.getY());
  38. mainPanel.add(lblWidth);
  39. mainPanel.add(tFieldWidht);
  40. mainPanel.add(lblHeight);
  41. mainPanel.add(tFieldHeight);
  42. mainPanel.setBackground(Color.WHITE);
  43. // Button Panel
  44. btnOk.addActionListener(new ActionListener() {
  45. @Override
  46. public void actionPerformed(ActionEvent e) {
  47. GuiSettings.canvasSize.setX(Integer.parseInt(tFieldWidht.getText()));
  48. GuiSettings.canvasSize.setY(Integer.parseInt(tFieldHeight.getText()));
  49. Vec2i actualCanvasSize = GuiSettings.canvasSize;
  50. Dimension preferedSize = new Dimension(actualCanvasSize.getX(), actualCanvasSize.getY());
  51. canvas.setPreferredSize(new Dimension(preferedSize));
  52. for (int i = 1; i < tabbedPane.getTabCount(); i++) {
  53. if (tabbedPane.getComponentAt(i) != null) {
  54. JScrollPane scollPane = (JScrollPane) tabbedPane.getComponentAt(i);
  55. Canvas groupNodeCanvas = ((Canvas) (scollPane)
  56. .getViewport().getComponent(0));
  57. groupNodeCanvas.setPreferredSize(new Dimension(preferedSize));
  58. groupNodeCanvas.repaint();
  59. }
  60. }
  61. canvas.revalidate();
  62. canvas.repaint();
  63. controller.getModel().getCanvas().getAllObjectsRecursive().forEach(obj -> {
  64. Vec2i position = obj.getPosition();
  65. position.clampX(0, actualCanvasSize.getX());
  66. position.clampY(0, actualCanvasSize.getY());
  67. });
  68. dispose();
  69. }
  70. });
  71. btnCancel.addActionListener(new ActionListener() {
  72. @Override
  73. public void actionPerformed(ActionEvent e) {
  74. dispose();
  75. }
  76. });
  77. buttonPanel.add(btnOk);
  78. buttonPanel.add(btnCancel);
  79. buttonPanel.setBackground(Color.WHITE);
  80. // Add to ContentPane
  81. getContentPane().add(mainPanel, BorderLayout.CENTER);
  82. getContentPane().add(buttonPanel, BorderLayout.SOUTH);
  83. this.setVisible(true);
  84. }
  85. }