SimulatorDialogPane.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package gui.simulator;
  2. import gui.frames.MainFrame;
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.Label;
  7. import java.awt.Toolkit;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import javax.swing.BorderFactory;
  11. import javax.swing.BoxLayout;
  12. import javax.swing.JButton;
  13. import javax.swing.JComboBox;
  14. import javax.swing.JDialog;
  15. import javax.swing.JOptionPane;
  16. import javax.swing.JPanel;
  17. import javax.swing.JTextField;
  18. public class SimulatorDialogPane extends JDialog{
  19. private JTextField length;
  20. private JTextField width;
  21. private JComboBox<String> terrain;
  22. private MainFrame mainFrame;
  23. private int terrainInt;
  24. public SimulatorDialogPane(MainFrame mainFrame){
  25. this.mainFrame = mainFrame;
  26. this.terrainInt = 1;
  27. this.getContentPane().setBackground( Color.WHITE );
  28. JPanel main = new JPanel();
  29. main.setOpaque(false);
  30. main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
  31. Label label = new Label("Simulator Specification");
  32. label.setBackground(Color.WHITE);
  33. label.setFont(new Font("Arial", Font.PLAIN, 14));
  34. main.add(label);
  35. main.add(this.widthPanel());
  36. main.add(this.lengthPanel());
  37. main.add(this.terrainChoosePanel());
  38. main.add(this.buttons());
  39. main.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
  40. Toolkit toolkit = Toolkit.getDefaultToolkit();
  41. Dimension screenSize = toolkit.getScreenSize();
  42. int x = ((screenSize.width - this.getWidth()) / 2)-100;
  43. int y = ((screenSize.height - this.getHeight()) / 2)-100;
  44. this.setLocation(x, y);
  45. super.add(main);
  46. super.setVisible(true);
  47. super.pack();
  48. }
  49. private JPanel lengthPanel(){
  50. JPanel name = new JPanel();
  51. name.setOpaque(false);
  52. name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS));
  53. name.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
  54. Label label = new Label("Length");
  55. label.setBackground(Color.WHITE);
  56. label.setFont(new Font("Arial", Font.PLAIN, 11));
  57. name.add(label);
  58. this.length = new JTextField();
  59. name.add(this.length);
  60. return name;
  61. }
  62. private JPanel widthPanel(){
  63. JPanel name = new JPanel();
  64. name.setOpaque(false);
  65. name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS));
  66. name.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
  67. Label label = new Label("Width");
  68. label.setBackground(Color.WHITE);
  69. label.setFont(new Font("Arial", Font.PLAIN, 11));
  70. name.add(label);
  71. this.width = new JTextField();
  72. name.add(this.width);
  73. return name;
  74. }
  75. private JPanel terrainChoosePanel(){
  76. JPanel name = new JPanel();
  77. name.setOpaque(false);
  78. name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS));
  79. name.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
  80. Label label = new Label("Terrain");
  81. label.setBackground(Color.WHITE);
  82. label.setFont(new Font("Arial", Font.PLAIN, 11));
  83. name.add(label);
  84. String[] terrainStrings = { "Beach", "Grass", "Urban"};
  85. this.terrain = new JComboBox<String>(terrainStrings);
  86. this.terrain.setSelectedIndex(0);
  87. this.terrain.addActionListener(new ActionListener(){
  88. public void actionPerformed(ActionEvent e) {
  89. JComboBox<String> cb = (JComboBox<String>)e.getSource();
  90. String terrainName = (String)cb.getSelectedItem();
  91. switch(terrainName){
  92. case "Beach": setTerrainInt(1);
  93. break;
  94. case "Grass": setTerrainInt(2);
  95. break;
  96. case "Urban": setTerrainInt(3);
  97. break;
  98. }
  99. }});
  100. name.add(this.terrain);
  101. return name;
  102. }
  103. private void setTerrainInt(int number){
  104. this.terrainInt = number;
  105. }
  106. private JPanel buttons(){
  107. JPanel buttons = new JPanel();
  108. buttons.setOpaque(false);
  109. JButton save = new JButton("Save");
  110. save.addActionListener(new ActionListener() {
  111. @Override
  112. public void actionPerformed(ActionEvent e) {
  113. save();
  114. }
  115. });
  116. buttons.add(save);
  117. JButton cancel = new JButton("Cancel");
  118. cancel.addActionListener(new ActionListener() {
  119. @Override
  120. public void actionPerformed(ActionEvent e) {
  121. cancel();
  122. }
  123. });
  124. buttons.add(cancel);
  125. return buttons;
  126. }
  127. private void save(){
  128. if(this.length.getText().equals("") || this.width.getText().equals("")){
  129. JOptionPane.showMessageDialog(null, "Width or height can't be empty!", "Warning", JOptionPane.WARNING_MESSAGE);
  130. return;
  131. }else{
  132. int length = Integer.parseInt(this.length.getText());
  133. int width = Integer.parseInt(this.width.getText());
  134. this.mainFrame.setLength(length);
  135. this.mainFrame.setWidth(width);
  136. this.mainFrame.setTerrain(terrainInt);
  137. this.mainFrame.changeView(MainFrame.Views.SIMULATOR);
  138. dispose();
  139. }
  140. }
  141. private void cancel(){
  142. dispose();
  143. }
  144. protected JButton saveButton() {
  145. JButton button = new JButton("Save");
  146. button.addActionListener(new ActionListener() {
  147. @Override
  148. public void actionPerformed(ActionEvent e) {
  149. save();
  150. }
  151. });
  152. return button;
  153. }
  154. }