Teh-Hai Julian Zheng 7 年之前
父節點
當前提交
e18d71bb5b

+ 28 - 10
src/ui/controller/CanvasController.java

@@ -11,9 +11,11 @@ import ui.model.Model;
 public class CanvasController {
 
 	private Model MODEL;
+	private SearchController sC;
 
-	public CanvasController(Model model) {
+	public CanvasController(Model model, SearchController sC) {
 		this.MODEL = model;
+		this.sC = sC;
 	}
 
 	/**
@@ -22,15 +24,31 @@ public class CanvasController {
 	 * @param object
 	 *            CpsObject to be added.
 	 */
-	public void addObjectIntoCanvas(CpsObject object) {
-		String objName = object.getObjName();
-		object.setSav("Canvas");
-		object.setConnections(new ArrayList<>());
+	public void addObject(CpsObject object) {
+		// String objName = object.getObjName();
+		// object.setSav("Canvas");
+		// object.setConnections(new ArrayList<>());
+		int i = 0;
+		while (sC.searchHolonObject(object.getName(), MODEL.getObjectsOnCanvas()) != null) {
+			if (object.getObjName().contains("_"))
+				object.setObjName(object.getObjName().substring(0, object.getObjName().indexOf('_')));
+			String name = object.getObjName() + "_" + i;
+			object.setObjName(name);
+			object.setName(name);
+			i++;
+		}
+
 		MODEL.getObjectsOnCanvas().add(object);
 		notifyObjListeners();
-		System.out.println("Added: " + objName);
+		// System.out.println("Added: " + objName);
+	}
+
+	public void addNewObject(CpsObject object) {
+		object.setSav("Canvas");
+		object.setConnections(new ArrayList<>());
+		addObject(object);
 	}
-	
+
 	public void addObjectListener(ObjectListener objLis) {
 		MODEL.getObjectListeners().add(objLis);
 	}
@@ -43,7 +61,7 @@ public class CanvasController {
 			l.onChange(MODEL.getObjectsOnCanvas());
 		}
 	}
-	
+
 	/**
 	 * Deletes an CpsObject on the Canvas and its connections
 	 * 
@@ -62,7 +80,7 @@ public class CanvasController {
 		}
 		MODEL.getObjectsOnCanvas().remove(obj);
 	}
-	
+
 	/**
 	 * @param objectsOnCanvas
 	 *            the objectsOnCanvas to set
@@ -70,7 +88,7 @@ public class CanvasController {
 	public void addEdgeOnCanvas(CpsEdge edge) {
 		MODEL.getEdgesOnCanvas().add(edge);
 	}
-	
+
 	/**
 	 * @param edgesOnCanvas
 	 *            the edge to remove

+ 23 - 30
src/ui/controller/CategoryController.java

@@ -54,7 +54,10 @@ public class CategoryController {
 		// }
 		int i = 0;
 		while (sC.searchCategory(category.getName()) != null) {
+			if (category.getName().contains("_"))
+				category.setName(category.getName().substring(0, category.getName().indexOf('_')));
 			category.setName(category.getName() + "_" + i);
+			i++;
 		}
 
 		MODEL.getCategories().add(category);
@@ -92,13 +95,22 @@ public class CategoryController {
 	/**
 	 * Add Object into a Category
 	 * 
-	 * @param cat
+	 * @param category
 	 *            Category
-	 * @param obj
+	 * @param object
 	 *            Object
 	 */
-	public void addObject(Category cat, CpsObject obj) {
-		cat.getObjects().add(obj);
+	public void addObject(Category category, CpsObject object) {
+		int i = 0;
+		while (sC.searchHolonObject(object.getObjName(), category.getObjects()) != null) {
+			if (object.getObjName().contains("_"))
+				object.setObjName(object.getObjName().substring(0, object.getObjName().indexOf('_')));
+			String name = object.getObjName() + "_" + i;
+			object.setObjName(name);
+			object.setName(name);
+			i++;
+		}
+		category.getObjects().add(object);
 		notifyCatListeners();
 	}
 
@@ -110,12 +122,12 @@ public class CategoryController {
 	 * @param obj
 	 *            New Object Name
 	 */
-	public void addNewHolonObject(Category cat, String objName, ArrayList<HolonElement> elements, String image) {
-		HolonObject object = new HolonObject(objName);
-		object.setImage(image);
-		object.setElements(elements);
-		object.setSav(cat.getName());
-		addObject(cat, object);
+	public void addNewHolonObject(Category category, String object, ArrayList<HolonElement> elements, String image) {
+		HolonObject obj = new HolonObject(object);
+		obj.setImage(image);
+		obj.setElements(elements);
+		obj.setSav(category.getName());
+		addObject(category, obj);
 	}
 
 	/**
@@ -151,6 +163,7 @@ public class CategoryController {
 
 	public void removeObject(Category category, CpsObject cps) {
 		category.getObjects().remove(cps);
+		notifyCatListeners();
 	}
 
 	public void deleteObject(String category, String obj) {
@@ -158,26 +171,6 @@ public class CategoryController {
 		removeObject(cat, sC.searchHolonObject(obj, cat.getObjects()));
 	}
 
-	/**
-	 * deletes given Object in given Category
-	 * 
-	 * @param toDelete
-	 * @param deleteIn
-	 */
-	public void deleteObjectInCat(String toDelete, String deleteIn) {
-
-		Category cat = sC.searchCategory(deleteIn);
-		print(cat.getObjects());
-		for (int i = 0; i < cat.getObjects().size(); i++) {
-			if (cat.getObjects().get(i).getCompareName().equals(toDelete)) {
-				cat.getObjects().remove(i);
-				cat.getObjects();
-				notifyCatListeners();
-			}
-		}
-
-	}
-
 	public void print(ArrayList<CpsObject> iterate) {
 		for (CpsObject cps : iterate) {
 			System.out.println(cps.getCompareName());

+ 18 - 18
src/ui/controller/Control.java

@@ -35,7 +35,7 @@ public class Control {
 		this.searchController = new SearchController(MODEL);
 		this.categoryController = new CategoryController(MODEL, searchController);
 		this.objectController = new ObjectController(MODEL, searchController);
-		this.canvasController = new CanvasController(MODEL);
+		this.canvasController = new CanvasController(MODEL, searchController);
 		this.globalController = new GlobalController(MODEL);
 		this.storeController = new StoreController(MODEL);
 		this.loadController = new LoadController(MODEL, categoryController, canvasController, objectController,
@@ -44,32 +44,32 @@ public class Control {
 	}
 
 	/* Operations for Categories and Objects */
-	public void addCategory(String catName) {
-		categoryController.addNewCategory(catName);
+	public void addCategory(String cat) {
+		categoryController.addNewCategory(cat);
 	}
 
-	public void addObject(Category cat, String objType, ArrayList<HolonElement> elements, String image) {
-		categoryController.addNewHolonObject(cat, objType, elements, image);
+	public void addObject(Category cat, String obj, ArrayList<HolonElement> ele, String img) {
+		categoryController.addNewHolonObject(cat, obj, ele, img);
 	}
 
-	public void addTransformer(Category cat, String objName) {
-		categoryController.addNewHolonTransformer(cat, objName, "/Images/transformer-1.png");
+	public void addTransformer(Category cat, String obj) {
+		categoryController.addNewHolonTransformer(cat, obj, "/Images/transformer-1.png");
 	}
 
-	public void addSwitch(Category cat, String objName) {
-		categoryController.addNewHolonSwitch(cat, objName, "/Images/switch-off.png");
+	public void addSwitch(Category cat, String obj) {
+		categoryController.addNewHolonSwitch(cat, obj, "/Images/switch-off.png");
 	}
 
-	public Category searchCategory(String name) {
-		return searchController.searchCategory(name);
+	public Category searchCategory(String cat) {
+		return searchController.searchCategory(cat);
 	}
 
-	public void deleteCategory(String catName) {
-		categoryController.deleteCategory(catName);
+	public void deleteCategory(String cat) {
+		categoryController.deleteCategory(cat);
 	}
 
-	public void delObjectCategory(String toDelete, String deleteIn) {
-		categoryController.deleteObjectInCat(toDelete, deleteIn);
+	public void delObjectCategory(String cat, String obj) {
+		categoryController.deleteObject(cat, obj);
 	}
 
 	/* Operations for Canvas */
@@ -87,7 +87,7 @@ public class Control {
 	}
 
 	public void addObjectCanvas(CpsObject object) {
-		canvasController.addObjectIntoCanvas(object);
+		canvasController.addNewObject(object);
 	}
 
 	public void setSelectedObjectID(int id) {
@@ -99,8 +99,8 @@ public class Control {
 	}
 
 	/* Operations for Objects and Elements */
-	public void addElementCanvasObject(int ID, String eleName, int amount, float energy) {
-		objectController.addNewElementIntoCanvasObject(ID, eleName, amount, energy);
+	public void addElementCanvasObject(int ID, String ele, int amount, float energy) {
+		objectController.addNewElementIntoCanvasObject(ID, ele, amount, energy);
 	}
 
 	public void addElementCategoryObject(String catName, String objName, String eleName, int amount, float energy) {

+ 2 - 2
src/ui/controller/LoadController.java

@@ -170,7 +170,7 @@ public class LoadController {
 		cps.setImage(next(i));
 		cps.setPosition(Integer.parseInt(next(i)), Integer.parseInt(next(i)));
 
-		cvsC.addObjectIntoCanvas(cps);
+		cvsC.addNewObject(cps);
 	}
 
 	/**
@@ -219,7 +219,7 @@ public class LoadController {
 			while (i.hasNext())
 				ele.getGraphPoints().add(new Point(Integer.parseInt(next(i)), Integer.parseInt(next(i))));
 		} else {
-			ele = sC.searchHolonElement(sC.searchHolonObject(next(i), objC.searchCategory(sav).getObjects()),
+			ele = sC.searchHolonElement((HolonObject) sC.searchHolonObject(next(i), objC.searchCategory(sav).getObjects()),
 					next(i));
 			while (i.hasNext())
 				ele.getGraphPoints().add(new Point(Integer.parseInt(next(i)), Integer.parseInt(next(i))));

+ 2 - 2
src/ui/controller/ObjectController.java

@@ -82,7 +82,7 @@ public class ObjectController {
 		element.setSav(cat.getName());
 		element.setObj(object);
 
-		addElement(sC.searchHolonObject(object, cat.getObjects()), element);
+		addElement((HolonObject) sC.searchHolonObject(object, cat.getObjects()), element);
 	}
 
 	/**
@@ -135,7 +135,7 @@ public class ObjectController {
 	 */
 	public void deleteElementInCategory(String cat, String obj, String ele, int amount) {
 		Category category = searchCategory(cat);
-		HolonObject object = sC.searchHolonObject(obj, category.getObjects());
+		HolonObject object = (HolonObject) sC.searchHolonObject(obj, category.getObjects());
 		HolonElement element = sC.searchHolonElement(object, ele);
 
 		deleteElement(object, element);

+ 2 - 26
src/ui/controller/SearchController.java

@@ -40,10 +40,10 @@ public class SearchController {
 	 * @param list
 	 * @return
 	 */
-	public HolonObject searchHolonObject(String object, ArrayList<CpsObject> list) {
+	public CpsObject searchHolonObject(String object, ArrayList<CpsObject> list) {
 		for (CpsObject objects : list) {
 			if (objects.getObjName().equals(object))
-				return (HolonObject) objects;
+				return objects;
 		}
 		return null;
 	}
@@ -81,28 +81,4 @@ public class SearchController {
 		return null;
 	}
 
-//	/**
-//	 * gets the position of an object in the array
-//	 * 
-//	 * @param arrayList
-//	 * @param toSearch
-//	 * @return -1 if object is not in the array, otherwise the index
-//	 */
-//	public int getPositionInList(ArrayList<? extends ComparableObject> arrayList, ComparableObject toSearch) {
-//		for (int i = 0; i < arrayList.size(); i++) {
-//			if (arrayList.get(i).getCompareName() == toSearch.getCompareName()) {
-//				return i;
-//			}
-//		}
-//		return -1;
-//	}
-//
-//	public boolean containsInList(ArrayList<? extends ComparableObject> arrayList, ComparableObject toSearch) {
-//		for (ComparableObject obj : arrayList) {
-//			if (obj.getCompareName().equals(toSearch.getCompareName())) {
-//				return true;
-//			}
-//		}
-//		return false;
-//	}
 }

+ 1 - 1
src/ui/view/GUI.java

@@ -761,7 +761,7 @@ public class GUI<E> implements CategoryListener {
 						break;
 					case 2:
 						DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent();
-						controller.delObjectCategory(nodeName, parent.getUserObject().toString());
+						controller.delObjectCategory(parent.getUserObject().toString(), nodeName);
 						break;
 
 					default: