Browse Source

Find Replace done

Teh-Hai Julian Zheng 7 years ago
parent
commit
6f2e8d7e26
2 changed files with 90 additions and 11 deletions
  1. 15 0
      src/ui/view/GUI.java
  2. 75 11
      src/ui/view/searchPopUp.java

+ 15 - 0
src/ui/view/GUI.java

@@ -373,6 +373,21 @@ public class GUI<E> implements CategoryListener {
 				unitGraph.empty();
 			}
 		});
+		
+		String cntrlFDown = "controlF";
+		inputMap.put(KeyStroke.getKeyStroke("control F"), cntrlFDown);
+		actionMap.put(cntrlFDown, new AbstractAction() {
+
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				searchPopUp dialog = new searchPopUp(controller, canvas);
+				dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+				dialog.setVisible(true);
+			}
+		});
+
+		
+		
 
 		String cntrlCDown = "controlC";
 		inputMap.put(KeyStroke.getKeyStroke("control C"), cntrlCDown);

+ 75 - 11
src/ui/view/searchPopUp.java

@@ -34,9 +34,11 @@ public class searchPopUp extends JDialog {
 	private JRadioButton rdbtnBackward;
 	private JRadioButton rdbtnAll;
 	private JRadioButton rdbtnSingle;
+	private int idx;
 
 	searchPopUp(Control contr, MyCanvas can) {
 		super((java.awt.Frame) null, true);
+		idx = -1;
 		setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MODAL);
 		this.setTitle("Search for Objects");
 		setBounds(100, 100, 238, 360);
@@ -115,17 +117,25 @@ public class searchPopUp extends JDialog {
 						}
 
 					}
-					canvas.repaint();
+
 				}
 				if (rdbtnSingle.isSelected()) {
+					controller.getModel().getSelectedCpsObjects().clear();
 
-					if (rdbtnForward.isSelected()) {
+					if (!controller.getModel().getObjectsOnCanvas().isEmpty() && !findTextField.getText().isEmpty()) {
 
+						if (rdbtnForward.isSelected()) {
+							if ((idx = getNext(++idx)) != -1)
+								controller.getModel().getSelectedCpsObjects().add(getObj(idx));
+						} else if (rdbtnBackward.isSelected()) {
+							if ((idx = getPrev(--idx)) != -1)
+								controller.getModel().getSelectedCpsObjects().add(getObj(idx));
+						}
 					}
-					if (rdbtnBackward.isSelected()) {
 
-					}
 				}
+
+				canvas.repaint();
 			}
 		});
 		btnFind.setFont(new Font("Tahoma", Font.PLAIN, 13));
@@ -136,12 +146,10 @@ public class searchPopUp extends JDialog {
 		JButton btnReplace = new JButton("Replace");
 		btnReplace.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
-				System.out.println("ID:" + controller.getModel().getSelectedObjectID());
-				System.out.println("SIZE:" + controller.getModel().getSelectedCpsObjects().size());
-				System.out.println(controller.searchByID(controller.getModel().getSelectedObjectID()).getName());
-				System.out.println(controller.getModel().getObjectsOnCanvas().get(0).getName());
-				
-				// controller.searchByID(controller.getModel().getSelectedObjectID()).setName(replaceTextField.getText());
+
+				if (controller.getModel().getSelectedCpsObjects().size() == 1 && controller.getModel()
+						.getSelectedCpsObjects().get(0).getName().equals(findTextField.getText()))
+					controller.getModel().getSelectedCpsObjects().get(0).setName(replaceTextField.getText());
 				canvas.repaint();
 			}
 		});
@@ -156,7 +164,7 @@ public class searchPopUp extends JDialog {
 				canvas.tempCps = null;
 				canvas.TempSelected = new ArrayList<>();
 				controller.getModel().getSelectedCpsObjects().clear();
-				
+
 				for (CpsObject cps : controller.getModel().getObjectsOnCanvas()) {
 					if (cps.getName().equals(findTextField.getText())
 							&& !controller.getModel().getSelectedCpsObjects().contains(cps))
@@ -195,11 +203,67 @@ public class searchPopUp extends JDialog {
 
 	}
 
+	/**
+	 * 
+	 * @param obj
+	 */
 	public void selectObj(CpsObject obj) {
 		controller.getModel().getSelectedCpsObjects().add(obj);
 	}
 
+	/**
+	 * 
+	 * @param obj
+	 * @param name
+	 */
 	public void renameObj(CpsObject obj, String name) {
 		obj.setName(name);
 	}
+
+	/**
+	 * 
+	 * @param idx
+	 * @return
+	 */
+	public CpsObject getObj(int idx) {
+		return controller.getModel().getObjectsOnCanvas().get(idx);
+	}
+
+	/**
+	 * 
+	 * @param idx
+	 * @return
+	 */
+	public int getNext(int idx) {
+		for (int i = idx; i < controller.getModel().getObjectsOnCanvas().size(); i++) {
+			if (getObj(i).getName().equals(findTextField.getText())
+					&& !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
+				return i;
+		}
+		for (int i = 0; i < idx; i++) {
+			if (getObj(i).getName().equals(findTextField.getText())
+					&& !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
+				return i;
+		}
+		return -1;
+	}
+
+	/**
+	 * 
+	 * @param idx
+	 * @return
+	 */
+	public int getPrev(int idx) {
+		for (int i = idx; i >= 0; i--) {
+			if (getObj(i).getName().equals(findTextField.getText())
+					&& !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
+				return i;
+		}
+		for (int i = controller.getModel().getObjectsOnCanvas().size() - 1; i > idx; i--) {
+			if (getObj(i).getName().equals(findTextField.getText())
+					&& !controller.getModel().getSelectedCpsObjects().contains(getObj(i)))
+				return i;
+		}
+		return -1;
+	}
 }