searchPopUp.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package ui.view;
  2. import java.awt.BorderLayout;
  3. import javax.swing.JDialog;
  4. import javax.swing.JPanel;
  5. import javax.swing.border.EmptyBorder;
  6. import classes.AbstractCpsObject;
  7. import javax.swing.JLabel;
  8. import java.awt.Font;
  9. import javax.swing.ButtonGroup;
  10. import javax.swing.JTextField;
  11. import javax.swing.JRadioButton;
  12. import javax.swing.JButton;
  13. import ui.controller.Control;
  14. import ui.controller.MultiPurposeController;
  15. import java.awt.event.ActionListener;
  16. import java.util.ArrayList;
  17. import java.awt.event.ActionEvent;
  18. public class searchPopUp extends JDialog {
  19. private final JPanel contentPanel = new JPanel();
  20. private JTextField replaceTextField;
  21. private JTextField findTextField;
  22. private Control controller;
  23. private MyCanvas canvas;
  24. private JRadioButton rdbtnForward;
  25. private JRadioButton rdbtnBackward;
  26. private JRadioButton rdbtnAll;
  27. private JRadioButton rdbtnSingle;
  28. private int idx;
  29. searchPopUp(Control contr, MyCanvas can) {
  30. super((java.awt.Frame) null, true);
  31. idx = -1;
  32. setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL);
  33. this.setTitle("Search for Objects");
  34. setBounds(100, 100, 238, 360);
  35. getContentPane().setLayout(new BorderLayout());
  36. contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
  37. getContentPane().add(contentPanel, BorderLayout.CENTER);
  38. contentPanel.setLayout(null);
  39. this.controller = contr;
  40. this.canvas = can;
  41. JLabel lblFind = new JLabel("Find:");
  42. lblFind.setFont(new Font("Tahoma", Font.PLAIN, 13));
  43. lblFind.setBounds(10, 11, 46, 19);
  44. contentPanel.add(lblFind);
  45. JLabel lblReplace = new JLabel("Replace:");
  46. lblReplace.setFont(new Font("Tahoma", Font.PLAIN, 13));
  47. lblReplace.setBounds(10, 41, 56, 14);
  48. contentPanel.add(lblReplace);
  49. // ReplaceTest
  50. replaceTextField = new JTextField();
  51. replaceTextField.setBounds(76, 39, 101, 20);
  52. contentPanel.add(replaceTextField);
  53. replaceTextField.setColumns(10);
  54. // FindText
  55. findTextField = new JTextField();
  56. findTextField.setBounds(76, 11, 101, 20);
  57. contentPanel.add(findTextField);
  58. findTextField.setColumns(10);
  59. JLabel lblNewLabel = new JLabel("Direction");
  60. lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 13));
  61. lblNewLabel.setBounds(10, 90, 82, 14);
  62. contentPanel.add(lblNewLabel);
  63. rdbtnForward = new JRadioButton("Forward");
  64. rdbtnForward.setFont(new Font("Tahoma", Font.PLAIN, 13));
  65. rdbtnForward.setBounds(10, 111, 109, 23);
  66. contentPanel.add(rdbtnForward);
  67. rdbtnForward.setSelected(true);
  68. rdbtnBackward = new JRadioButton("Backward");
  69. rdbtnBackward.setFont(new Font("Tahoma", Font.PLAIN, 13));
  70. rdbtnBackward.setBounds(10, 137, 109, 23);
  71. contentPanel.add(rdbtnBackward);
  72. JLabel lblScope = new JLabel("Scope");
  73. lblScope.setFont(new Font("Tahoma", Font.BOLD, 13));
  74. lblScope.setBounds(122, 90, 46, 14);
  75. contentPanel.add(lblScope);
  76. rdbtnAll = new JRadioButton("All");
  77. rdbtnAll.setFont(new Font("Tahoma", Font.PLAIN, 13));
  78. rdbtnAll.setBounds(121, 112, 109, 23);
  79. contentPanel.add(rdbtnAll);
  80. rdbtnAll.setSelected(true);
  81. rdbtnSingle = new JRadioButton("Single");
  82. rdbtnSingle.setFont(new Font("Tahoma", Font.PLAIN, 13));
  83. rdbtnSingle.setBounds(121, 138, 109, 23);
  84. contentPanel.add(rdbtnSingle);
  85. // FindButton
  86. JButton btnFind = new JButton("Find");
  87. btnFind.addActionListener(new ActionListener() {
  88. public void actionPerformed(ActionEvent e) {
  89. if (rdbtnAll.isSelected()) {
  90. for (AbstractCpsObject cps : controller.getModel().getObjectsOnCanvas()) {
  91. if (cps.getName().equals(findTextField.getText())
  92. && !controller.getModel().getSelectedCpsObjects().contains(cps)) {
  93. controller.getModel().getSelectedCpsObjects().add(cps);
  94. }
  95. }
  96. }
  97. if (rdbtnSingle.isSelected()) {
  98. controller.getModel().getSelectedCpsObjects().clear();
  99. if (!controller.getModel().getObjectsOnCanvas().isEmpty() && !findTextField.getText().isEmpty()) {
  100. if (rdbtnForward.isSelected()) {
  101. if ((idx = getNext(++idx)) != -1)
  102. controller.getModel().getSelectedCpsObjects().add(getObj(idx));
  103. } else if (rdbtnBackward.isSelected()) {
  104. if ((idx = getPrev(--idx)) != -1)
  105. controller.getModel().getSelectedCpsObjects().add(getObj(idx));
  106. }
  107. }
  108. }
  109. canvas.repaint();
  110. }
  111. });
  112. btnFind.setFont(new Font("Tahoma", Font.PLAIN, 13));
  113. btnFind.setBounds(10, 186, 89, 23);
  114. contentPanel.add(btnFind);
  115. // ReplaceButton
  116. JButton btnReplace = new JButton("Replace");
  117. btnReplace.addActionListener(new ActionListener() {
  118. public void actionPerformed(ActionEvent e) {
  119. if (controller.getModel().getSelectedCpsObjects().size() == 1 && controller.getModel()
  120. .getSelectedCpsObjects().get(0).getName().equals(findTextField.getText()))
  121. controller.getModel().getSelectedCpsObjects().get(0).setName(replaceTextField.getText());
  122. canvas.repaint();
  123. }
  124. });
  125. btnReplace.setFont(new Font("Tahoma", Font.PLAIN, 13));
  126. btnReplace.setBounds(110, 187, 89, 23);
  127. contentPanel.add(btnReplace);
  128. // ReplaceAllButton
  129. JButton btnReplaceAll = new JButton("Replace All");
  130. btnReplaceAll.addActionListener(new ActionListener() {
  131. public void actionPerformed(ActionEvent e) {
  132. canvas.tempCps = null;
  133. canvas.TempSelected = new ArrayList<>();
  134. controller.getModel().getSelectedCpsObjects().clear();
  135. for (AbstractCpsObject cps : controller.getModel().getObjectsOnCanvas()) {
  136. if (cps.getName().equals(findTextField.getText())
  137. && !controller.getModel().getSelectedCpsObjects().contains(cps))
  138. selectObj(cps);
  139. }
  140. for (AbstractCpsObject cps : controller.getModel().getSelectedCpsObjects()) {
  141. renameObj(cps, replaceTextField.getText());
  142. }
  143. canvas.repaint();
  144. }
  145. });
  146. btnReplaceAll.setFont(new Font("Tahoma", Font.PLAIN, 11));
  147. btnReplaceAll.setBounds(110, 218, 89, 23);
  148. contentPanel.add(btnReplaceAll);
  149. // CloseButton
  150. JButton btnClose = new JButton("Close");
  151. btnClose.addActionListener(new ActionListener() {
  152. public void actionPerformed(ActionEvent arg0) {
  153. dispose();
  154. }
  155. });
  156. btnClose.setFont(new Font("Tahoma", Font.PLAIN, 13));
  157. btnClose.setBounds(110, 287, 89, 23);
  158. contentPanel.add(btnClose);
  159. ButtonGroup directionbtns = new ButtonGroup();
  160. ButtonGroup scopebtns = new ButtonGroup();
  161. directionbtns.add(rdbtnBackward);
  162. directionbtns.add(rdbtnForward);
  163. scopebtns.add(rdbtnSingle);
  164. scopebtns.add(rdbtnAll);
  165. }
  166. /**
  167. *
  168. * @param obj
  169. */
  170. public void selectObj(AbstractCpsObject obj) {
  171. controller.getModel().getSelectedCpsObjects().add(obj);
  172. }
  173. /**
  174. *
  175. * @param obj
  176. * @param name
  177. */
  178. public void renameObj(AbstractCpsObject obj, String name) {
  179. obj.setName(name);
  180. }
  181. /**
  182. *
  183. * @param idx
  184. * @return
  185. */
  186. public AbstractCpsObject getObj(int idx) {
  187. return controller.getModel().getObjectsOnCanvas().get(idx);
  188. }
  189. /**
  190. *
  191. * @param idx
  192. * @return
  193. */
  194. public int getNext(int idx) {
  195. for (int i = idx; i < controller.getModel().getObjectsOnCanvas().size(); i++) {
  196. if (getObj(i).getName().equals(findTextField.getText())
  197. && !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
  198. return i;
  199. }
  200. for (int i = 0; i < idx; i++) {
  201. if (getObj(i).getName().equals(findTextField.getText())
  202. && !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
  203. return i;
  204. }
  205. return -1;
  206. }
  207. /**
  208. *
  209. * @param idx
  210. * @return
  211. */
  212. public int getPrev(int idx) {
  213. for (int i = idx; i >= 0; i--) {
  214. if (getObj(i).getName().equals(findTextField.getText())
  215. && !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
  216. return i;
  217. }
  218. for (int i = controller.getModel().getObjectsOnCanvas().size() - 1; i > idx; i--) {
  219. if (getObj(i).getName().equals(findTextField.getText())
  220. && !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
  221. return i;
  222. }
  223. return -1;
  224. }
  225. }