Browse Source

more options for comboBox

jess 7 years ago
parent
commit
ec7d730fea
2 changed files with 156 additions and 37 deletions
  1. 88 29
      src/ui/controller/UpdateController.java
  2. 68 8
      src/ui/view/HolonCanvas.java

+ 88 - 29
src/ui/controller/UpdateController.java

@@ -361,25 +361,84 @@ public class UpdateController {
 	 */
 	public void paintHolonBody(int id) {
 		if (id != -1) {
-			 ArrayList<SubNet> subs = controller.getSimManager().getSubNets();
-			if(!subs.isEmpty()){
-			SubNet sub = subs.get(id);
-			Object[] tempId = { "ID", id };
-			model.getPropertyTable().addRow(tempId);
-			Object[] tempObj = { "Nr. of Objects", sub.getObjects().size() };
-			model.getPropertyTable().addRow(tempObj);
-			Object[] tempEdg = { "Nr. of Edges", sub.getEdges().size() };
-			model.getPropertyTable().addRow(tempEdg);
-			Object[] tempSwi = { "Nr. of Switches", sub.getSwitches().size() };
-			model.getPropertyTable().addRow(tempSwi);
-			Object[] tempProd = {"Total Production", "" + getTotalProduction(new ArrayList<AbstractCpsObject>(sub.getObjects()))};
-			model.getPropertyTable().addRow(tempProd);
-			Object[] tempCons = {"Total Production", "" + getTotalConsumption(new ArrayList<AbstractCpsObject>(sub.getObjects()))};
-			model.getPropertyTable().addRow(tempCons);
+			ArrayList<SubNet> subs = controller.getSimManager().getSubNets();
+			if (!subs.isEmpty()) {
+				SubNet sub = subs.get(id);
+				Object[] tempId = { "ID", id };
+				model.getPropertyTable().addRow(tempId);
+				Object[] tempObj = { "Nr. of Objects", sub.getObjects().size() };
+				model.getPropertyTable().addRow(tempObj);
+				Object[] tempEdg = { "Nr. of Edges", sub.getEdges().size() };
+				model.getPropertyTable().addRow(tempEdg);
+				Object[] tempSwi = { "Nr. of Switches", sub.getSwitches().size() };
+				model.getPropertyTable().addRow(tempSwi);
+				Object[] tempProd = { "Total Production",
+						"" + getTotalProduction(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+				model.getPropertyTable().addRow(tempProd);
+				Object[] tempCons = { "Total Production",
+						"" + getTotalConsumption(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+				model.getPropertyTable().addRow(tempCons);
+				Object[] tempEle = { "Nr. of Elements",
+						"" + getTotalElements(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+				model.getPropertyTable().addRow(tempEle);
+				Object[] tempProds = { "Nr. of Producers",
+						"" + getTotalProducers(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+				model.getPropertyTable().addRow(tempProds);
+				Object[] tempAct = { "Nr. of active Elements",
+						"" + getActiveElements(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+				model.getPropertyTable().addRow(tempAct);
+			}
+		}
+	}
+
+	private int getActiveElements(ArrayList<AbstractCpsObject> objects) {
+		int val = 0;
+		for (AbstractCpsObject obj : objects) {
+			if (obj instanceof HolonObject) {
+				for (HolonElement ele : ((HolonObject) obj).getElements()) {
+					if (ele.getActive()) {
+						val += 1;
+					}
+				}
+			} else if (obj instanceof CpsUpperNode) {
+				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
+			}
+		}
+		return val;
+	}
+
+	private int getTotalProducers(ArrayList<AbstractCpsObject> objects) {
+		float val = 0;
+		int prod = 0;
+		int tStep = model.getCurIteration();
+		for (AbstractCpsObject obj : objects) {
+			if (obj instanceof HolonObject) {
+				for (HolonElement ele : ((HolonObject) obj).getElements()) {
+					if (ele.getEnergyAt()[tStep] > 0 && ele.getActive()) {
+						val += ele.getEnergyAt()[tStep] * ele.getAmount();
+					}
+				}
+				if (val > 0)
+					prod += 1;
+			} else if (obj instanceof CpsUpperNode) {
+				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
+			}
+		}
+		return prod;
+	}
+
+	private float getTotalElements(ArrayList<AbstractCpsObject> objects) {
+		float val = 0;
+		for (AbstractCpsObject obj : objects) {
+			if (obj instanceof HolonObject) {
+				val += ((HolonObject) obj).getElements().size();
+			} else if (obj instanceof CpsUpperNode) {
+				val += getTotalConsumption(((CpsUpperNode) obj).getNodes());
 			}
 		}
+		return val;
 	}
-	
+
 	private float getTotalConsumption(ArrayList<AbstractCpsObject> objects) {
 		float val = 0;
 		int tStep = model.getCurIteration();
@@ -396,22 +455,22 @@ public class UpdateController {
 		}
 		return val;
 	}
-	
-		private float getTotalProduction(ArrayList<AbstractCpsObject> arrayList) {
-			float val = 0;
-			int tStep = model.getCurIteration();
-			for (AbstractCpsObject obj : arrayList) {
-				if (obj instanceof HolonObject) {
-					for (HolonElement ele : ((HolonObject) obj).getElements()) {
-						if (ele.getEnergyAt()[tStep] > 0 && ele.getActive()) {
-							val += ele.getEnergyAt()[tStep] * ele.getAmount();
-						}
+
+	private float getTotalProduction(ArrayList<AbstractCpsObject> arrayList) {
+		float val = 0;
+		int tStep = model.getCurIteration();
+		for (AbstractCpsObject obj : arrayList) {
+			if (obj instanceof HolonObject) {
+				for (HolonElement ele : ((HolonObject) obj).getElements()) {
+					if (ele.getEnergyAt()[tStep] > 0 && ele.getActive()) {
+						val += ele.getEnergyAt()[tStep] * ele.getAmount();
 					}
-				} else if (obj instanceof CpsUpperNode) {
-					val += getTotalProduction(((CpsUpperNode) obj).getNodes());
 				}
+			} else if (obj instanceof CpsUpperNode) {
+				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
 			}
-			return val;
 		}
+		return val;
+	}
 
 }

+ 68 - 8
src/ui/view/HolonCanvas.java

@@ -92,6 +92,9 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 		combo.addItem("Nr. of Switches");
 		combo.addItem("Total Production");
 		combo.addItem("Total Consumption");
+		combo.addItem("Nr. of Elements");
+		combo.addItem("Nr. of Producers");
+		combo.addItem("Nr. of active Elements");
 
 		combo.addActionListener(new ActionListener() {
 			@Override
@@ -103,7 +106,7 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 		this.addMouseMotionListener(this);
 
 		chckbxSort.addChangeListener(new ChangeListener() {
-			
+
 			@Override
 			public void stateChanged(ChangeEvent e) {
 				sizeChange = true;
@@ -169,7 +172,7 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 		sizeChange = false;
 		HolonBody tmp = null;
 		int j = 0;
-		sortedSize.addAll(bodies); 
+		sortedSize.addAll(bodies);
 		insertionSizeSort(sortedSize);
 		sortedDist.addAll(bodies);
 
@@ -177,7 +180,7 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 		for (int i = 0; i < subCount; i++) {
 			for (j = 0; j < subCount; j++) {
 				if (sortedSize.get(subCount - 1 - i).getId() == bodies.get(j).getId()) {
-					bodies.get(j).position  = pos.get(i);
+					bodies.get(j).position = pos.get(i);
 					break;
 				}
 			}
@@ -245,12 +248,21 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 			case 3:
 				info = "" + subnets.get(bodyNr).getSwitches().size();
 				break;
-			case 4: 
+			case 4:
 				info = "" + getTotalProduction(new ArrayList<AbstractCpsObject>(subnets.get(bodyNr).getObjects()));
 				break;
 			case 5:
 				info = "" + getTotalConsumption(new ArrayList<AbstractCpsObject>(subnets.get(bodyNr).getObjects()));
 				break;
+			case 6:
+				info = "" + getTotalElements(new ArrayList<AbstractCpsObject>(subnets.get(bodyNr).getObjects()));
+				break;
+			case 7:
+				info = "" + getTotalProducers(new ArrayList<AbstractCpsObject>(subnets.get(bodyNr).getObjects()));
+				break;
+			case 8:
+				info = "" + getActiveElements(new ArrayList<AbstractCpsObject>(subnets.get(bodyNr).getObjects()));
+				break;
 			default:
 				info = "" + bodyNr;
 				break;
@@ -261,6 +273,54 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 		}
 	}
 
+	private int getActiveElements(ArrayList<AbstractCpsObject> objects) {
+		int val = 0;
+		for (AbstractCpsObject obj : objects) {
+			if (obj instanceof HolonObject) {
+				for (HolonElement ele : ((HolonObject) obj).getElements()) {
+					if (ele.getActive()) {
+						val += 1;
+					}
+				}
+			} else if (obj instanceof CpsUpperNode) {
+				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
+			}
+		}
+		return val;
+	}
+
+	private int getTotalProducers(ArrayList<AbstractCpsObject> objects) {
+		float val = 0;
+		int prod = 0;
+		int tStep = model.getCurIteration();
+		for (AbstractCpsObject obj : objects) {
+			if (obj instanceof HolonObject) {
+				for (HolonElement ele : ((HolonObject) obj).getElements()) {
+					if (ele.getEnergyAt()[tStep] > 0 && ele.getActive()) {
+						val += ele.getEnergyAt()[tStep] * ele.getAmount();
+					}
+				}
+				if (val > 0)
+					prod += 1;
+			} else if (obj instanceof CpsUpperNode) {
+				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
+			}
+		}
+		return prod;
+	}
+
+	private float getTotalElements(ArrayList<AbstractCpsObject> objects) {
+		float val = 0;
+		for (AbstractCpsObject obj : objects) {
+			if (obj instanceof HolonObject) {
+				val += ((HolonObject) obj).getElements().size();
+			} else if (obj instanceof CpsUpperNode) {
+				val += getTotalConsumption(((CpsUpperNode) obj).getNodes());
+			}
+		}
+		return val;
+	}
+
 	private float getTotalConsumption(ArrayList<AbstractCpsObject> objects) {
 		float val = 0;
 		int tStep = model.getCurIteration();
@@ -388,7 +448,7 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 		center.height /= 2;
 		center.width /= 2;
 	}
-	
+
 	@Override
 	public void mouseWheelMoved(MouseWheelEvent e) {
 		controller.setHolonBodyScale(model.getHolonBodyScale() + (-e.getScrollAmount() * e.getWheelRotation()));
@@ -437,15 +497,15 @@ public class HolonCanvas extends JPanel implements MouseWheelListener, MouseList
 
 	@Override
 	public void mouseDragged(MouseEvent e) {
-		if(toDrag!=null){
+		if (toDrag != null) {
 			toDrag.position = new Vector2d(e.getX(), e.getY());
-		}			
+		}
 		repaint();
 	}
 
 	@Override
 	public void mouseMoved(MouseEvent e) {
 		// TODO Auto-generated method stub
-		
+
 	}
 }