Bladeren bron

Fix some Multiple selection problems: multiple selection of HolonElements (e.g.: diagram changes)

Edgardo Palza 8 jaren geleden
bovenliggende
commit
0e30d94472
2 gewijzigde bestanden met toevoegingen van 53 en 27 verwijderingen
  1. 26 16
      src/classes/HolonObject.java
  2. 27 11
      src/ui/view/GUI.java

+ 26 - 16
src/classes/HolonObject.java

@@ -10,7 +10,7 @@ public class HolonObject extends CpsObject {
 
 	/* Array of all consumers */
 	private ArrayList<HolonElement> elements;
-	/* Array of all Indices of Elements*/
+	/* Array of all Indices of Elements */
 	private HashMap<String, Integer> EleIdx;
 	/* Total of consumption */
 	private float currentEnergy;
@@ -27,7 +27,7 @@ public class HolonObject extends CpsObject {
 	public HolonObject(String ObjName) {
 		super(ObjName);
 		setElements(new ArrayList<HolonElement>());
-		setEleIdx(new HashMap<String,Integer>());
+		setEleIdx(new HashMap<String, Integer>());
 		setState();
 	}
 
@@ -35,26 +35,26 @@ public class HolonObject extends CpsObject {
 		super(ObjName);
 		super.setName(obj);
 		setElements(new ArrayList<HolonElement>());
-		setEleIdx(new HashMap<String,Integer>());
+		setEleIdx(new HashMap<String, Integer>());
 		setState();
 	}
 
 	public HolonObject(CpsObject obj) {
 		super(obj);
 		setEleIdx(MultiPurposeController.copyHashMap(((HolonObject) obj).getEleIdx()));
-		setElements(copyElements(((HolonObject)obj).getElements()));
+		setElements(copyElements(((HolonObject) obj).getElements()));
 		setState();
 	}
-	
+
 	/**
-	 * sets the State, wether object is a producer, zero Energy, supplied or not supplied
+	 * sets the State, wether object is a producer, zero Energy, supplied or not
+	 * supplied
 	 */
-	public void setState(){
-		if(getCurrentEnergy() > 0){
+	public void setState() {
+		if (getCurrentEnergy() > 0) {
 			setState(3);
-		}
-		else{
-			if(getCurrentEnergy() == 0){
+		} else {
+			if (getCurrentEnergy() == 0) {
 				setState(0);
 			}
 		}
@@ -92,7 +92,7 @@ public class HolonObject extends CpsObject {
 		currentEnergy = temp;
 		return currentEnergy;
 	}
-	
+
 	public float getCurrentEnergyAtTimeStep(int x) {
 		float temp = 0;
 		for (HolonElement e : getElements()) {
@@ -103,7 +103,6 @@ public class HolonObject extends CpsObject {
 		currentEnergy = temp;
 		return currentEnergy;
 	}
-	
 
 	/**
 	 * @param currentEnergy
@@ -138,8 +137,6 @@ public class HolonObject extends CpsObject {
 		}
 		return objString;
 	}
-	
-	
 
 	/**
 	 * @return the eleIdx
@@ -149,13 +146,16 @@ public class HolonObject extends CpsObject {
 	}
 
 	/**
-	 * @param eleIdx the eleIdx to set
+	 * @param eleIdx
+	 *            the eleIdx to set
 	 */
 	public void setEleIdx(HashMap<String, Integer> eleIdx) {
 		EleIdx = eleIdx;
 	}
+
 	/**
 	 * Copy all Elements into a New Array
+	 * 
 	 * @param arr
 	 * @return
 	 */
@@ -181,4 +181,14 @@ public class HolonObject extends CpsObject {
 	public void setState(int st) {
 		this.state = st;
 	}
+
+	public HolonElement searchElement(String name) {
+		HolonElement ele = null;
+		for (HolonElement e : getElements()) {
+			if (e.getEleName().equals(name)) {
+				ele = e;
+			}
+		}
+		return ele;
+	}
 }

+ 27 - 11
src/ui/view/GUI.java

@@ -421,9 +421,16 @@ public class GUI<E> implements CategoryListener {
 		tableHolonElement.addMouseListener(new MouseAdapter() {
 			public void mousePressed(MouseEvent e) {
 				HolonObject obj = (HolonObject) getActualCps();
-				
+				;
 				yValueElements = e.getY();
-				HolonElement ele = getActualHolonElement(obj, yValueElements);
+				HolonElement ele = null;
+				if (model.getSelectedCpsObjects().size() == 1) {
+					ele = getActualHolonElement(obj, yValueElements);
+				} else {
+					ele = getActualHolonElement(null, yValueElements);
+				}
+
+				// System.out.println(ele.getEleName());
 				if (e.isControlDown() && ele != null) {
 					if (!selectedElements.contains(ele)) {
 						selectedElements.add(ele);
@@ -453,13 +460,13 @@ public class GUI<E> implements CategoryListener {
 					selectedElements.clear();
 					holonEleNamesDisplayed = "None ";
 				}
-//				for (int i = 0; i < selectedElements.size(); i++) {
-//					if (i == 0) {
-//						System.out.println("Selected Items: " + selectedElements.get(i).getEleName());
-//					} else {
-//						System.out.println(selectedElements.get(i).getEleName());
-//					}
-//				}
+				for (int i = 0; i < selectedElements.size(); i++) {
+					if (i == 0) {
+						System.out.println("Selected Items: " + selectedElements.get(i).getEleName());
+					} else {
+						System.out.println(selectedElements.get(i).getEleName());
+					}
+				}
 				elementGraph.setText(holonEleNamesDisplayed);
 				yBTHIS = e.getY();
 				xBTHIS = e.getX();
@@ -1226,9 +1233,18 @@ public class GUI<E> implements CategoryListener {
 	public HolonElement getActualHolonElement(HolonObject obj, int yValue) {
 		final int yTemp = (int) Math.floor(yValue / 16);
 		int rowsTotal = tableModelHolonElement.getRowCount();
+		HolonObject obtTemp = null;
 		if (rowsTotal != 0 && rowsTotal > yTemp) {
-			model.setSelectedHolonElement(obj.getElements().get(yTemp));
-			return obj.getElements().get(yTemp);
+			if (obj == null) {
+				String temp = tableModelHolonElement.getValueAt(yTemp, 0).toString();
+				int idTemp = Integer.parseInt(temp.split(", ")[1]);
+				obtTemp = (HolonObject) controller.searchByID(idTemp);
+			} else {
+				obtTemp = obj;
+			}
+			String eleTempName = tableModelHolonElement.getValueAt(yTemp, 1).toString();
+			model.setSelectedHolonElement(obtTemp.searchElement(eleTempName));
+			return obtTemp.searchElement(eleTempName);
 		} else {
 			model.setSelectedHolonElement(null);
 			return null;