浏览代码

statistic graph finished außer sachen entfernen und alles drumrum xD

Kevin Trometer 8 年之前
父节点
当前提交
53d7d1255d
共有 1 个文件被更改,包括 100 次插入50 次删除
  1. 100 50
      src/ui/view/StatisticGraph.java

+ 100 - 50
src/ui/view/StatisticGraph.java

@@ -4,11 +4,16 @@ import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
+import java.awt.Image;
 import java.awt.RenderingHints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.geom.GeneralPath;
 import java.util.ArrayList;
 
+import javax.swing.ImageIcon;
 import javax.swing.JPanel;
+import javax.swing.Timer;
 
 import classes.HolonElement;
 import classes.HolonObject;
@@ -53,7 +58,23 @@ public class StatisticGraph extends JPanel {
 		this.controller = control;
 		this.model = model;
 
+		// addObject(new TrackedDataSet(model.getObjectsOnCanvas().get(0),
+		// TrackedDataSet.CONSUMPTION, Color.RED));
+		// addObject(new TrackedDataSet(model.getObjectsOnCanvas().get(0),
+		// TrackedDataSet.PRODUCTION, Color.GREEN));
+		// addObject(new TrackedDataSet(model.getObjectsOnCanvas().get(0),
+		// TrackedDataSet.ACTIVATED_ELEMENTS, Color.CYAN));
+		addObject(new TrackedDataSet(model.getObjectsOnCanvas().get(0), TrackedDataSet.ON_OFF, Color.BLUE));
+
 		this.setBackground(Color.WHITE);
+
+		Timer timer = new Timer(200, new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent ae) {
+				repaint();
+			}
+		});
+		timer.start();
 	}
 
 	/**
@@ -81,39 +102,39 @@ public class StatisticGraph extends JPanel {
 			g2.drawLine(0, i, this.getWidth(), i);
 		}
 
-		if (model != null) {
-			isSimRunning = model.getIsSimulation();
-
-			// if sim is on
-			if (isSimRunning) {
-				g2.setStroke(new BasicStroke(3));
-
-				// Calculate the Maximum
-				calcMaximum();
-
-				// Calculate values for each set and add them
-				addValues();
-
-				// Create Paths and draw them
-				for (TrackedDataSet set : objects) {
-					path.reset();
-					switch (set.getProperty()) {
-					case TrackedDataSet.CONSUMPTION:
-					case TrackedDataSet.PRODUCTION:
-					case TrackedDataSet.ACTIVATED_ELEMENTS:
-						createPathFloats(set);
-						break;
-					case TrackedDataSet.ON_OFF:
-						createPathBooleans(set);
-						break;
-					default:
-						break;
-					}
-					g2.setColor(set.getColor());
-					g2.draw(path);
+		isSimRunning = model.getIsSimulation();
+
+		// if sim is on
+		if (isSimRunning) {
+			g2.setStroke(new BasicStroke(3));
+
+			// Calculate the Maximum
+			calcMaximum();
+
+			// Calculate values for each set and add them
+			addValues();
+
+			// Create Paths and draw them
+			for (TrackedDataSet set : objects) {
+				path.reset();
+				switch (set.getProperty()) {
+				case TrackedDataSet.CONSUMPTION:
+				case TrackedDataSet.PRODUCTION:
+				case TrackedDataSet.ACTIVATED_ELEMENTS:
+					createPathFloats(set);
+					break;
+				case TrackedDataSet.ON_OFF:
+					createPathBooleans(set);
+					break;
+				default:
+					break;
 				}
+				g2.setColor(set.getColor());
+				g2.draw(path);
+
 			}
 		}
+
 	}
 
 	/**
@@ -191,11 +212,12 @@ public class StatisticGraph extends JPanel {
 				break;
 			case TrackedDataSet.ACTIVATED_ELEMENTS:
 				for (HolonElement h : ((HolonObject) set.getCpsObject()).getElements()) {
-					if (h.getEnergy() < 0) {
-						val += h.getAmount();
-					}
+					val += h.getAmount();
 				}
 				break;
+			case TrackedDataSet.ON_OFF:
+				val = 1;
+				break;
 			default:
 				break;
 			}
@@ -210,34 +232,46 @@ public class StatisticGraph extends JPanel {
 	 */
 	private void addValues() {
 		for (TrackedDataSet set : objects) {
+			int val = 0;
 			switch (set.getProperty()) {
 			case TrackedDataSet.CONSUMPTION:
 				for (HolonElement h : ((HolonObject) set.getCpsObject()).getElements()) {
 					if (h.getEnergy() < 0) {
-						set.setValAt(-h.getEnergyAt()[model.getCurIteration()], model.getCurIteration());
+						val += Math.abs(h.getEnergyAt()[model.getCurIteration()]);
 					}
+					set.setValAt(val, model.getCurIteration());
 				}
 				break;
 			case TrackedDataSet.PRODUCTION:
 				for (HolonElement h : ((HolonObject) set.getCpsObject()).getElements()) {
 					if (h.getEnergy() > 0) {
-						set.setValAt(h.getEnergyAt()[model.getCurIteration()], model.getCurIteration());
+						val += Math.abs(h.getEnergyAt()[model.getCurIteration()]);
 					}
+					set.setValAt(val, model.getCurIteration());
 				}
 
 				break;
 			case TrackedDataSet.ACTIVATED_ELEMENTS:
 				for (HolonElement h : ((HolonObject) set.getCpsObject()).getElements()) {
-					if (h.getEnergy() < 0) {
-
+					if (h.getActive()) {
+						val += h.getAmount();
 					}
+					set.setValAt(val, model.getCurIteration());
 				}
 				break;
 			case TrackedDataSet.ON_OFF:
-				if (((HolonSwitch) set.getCpsObject()).getState()) {
-					set.setValAt(1, model.getCurIteration());
+				if (((HolonSwitch) set.getCpsObject()).getManualMode()) {
+					if (((HolonSwitch) set.getCpsObject()).getActiveManual()) {
+						set.setValAt(1, model.getCurIteration());
+					} else {
+						set.setValAt(0, model.getCurIteration());
+					}
 				} else {
-					set.setValAt(0, model.getCurIteration());
+					if (((HolonSwitch) set.getCpsObject()).getActiveAt()[model.getCurIteration()]) {
+						set.setValAt(1, model.getCurIteration());
+					} else {
+						set.setValAt(0, model.getCurIteration());
+					}
 				}
 				break;
 			default:
@@ -253,13 +287,22 @@ public class StatisticGraph extends JPanel {
 	 */
 	private void createPathFloats(TrackedDataSet set) {
 		boolean init = true;
-		for (int i = 0; i < set.getValues().length - 1; i++) {
-			if (init && set.getValues()[i] != -1) {
-				path.moveTo(model.getCurIteration() * this.getWidth() / model.getIterations() - 1,
-						convertToCanvasY(Math.abs(set.getValues()[i])));
+		path.moveTo(0, 0);
+		for (int i = 0; i < model.getCurIteration() - 1; i++) {
+			controller.addTextToConsole(path.getCurrentPoint().getX() + ", " + path.getCurrentPoint().getY());
+			if (init /* && set.getValues()[i] != -1 */) {
+				path.moveTo(i * this.getWidth() / model.getIterations() - 1, convertToCanvasY(set.getValues()[i]));
+				init = false;
+			}
+			if (!init) {
+				if (set.getValues()[i + 1] != -1) {
+					path.lineTo((i + 1) * this.getWidth() / model.getIterations(),
+							convertToCanvasY(set.getValues()[i + 1]));
+				} else {
+					break;
+				}
 			}
-			path.lineTo(model.getCurIteration() * this.getWidth() / model.getIterations(),
-					convertToCanvasY(Math.abs(set.getValues()[i + 1])));
+
 		}
 	}
 
@@ -270,13 +313,20 @@ public class StatisticGraph extends JPanel {
 	 */
 	private void createPathBooleans(TrackedDataSet set) {
 		boolean init = true;
-		for (int i = 0; i < set.getValues().length - 1; i++) {
+		for (int i = 0; i < model.getCurIteration() - 1; i++) {
 			if (init && set.getValues()[i] != -1) {
-				path.moveTo(model.getCurIteration() * this.getWidth() / model.getIterations() - 1,
+				path.moveTo(i * this.getWidth() / model.getIterations() - 1,
 						convertToCanvasY((float) (set.getValues()[i] * maximum)));
+				init = false;
+			}
+			if (!init) {
+				if (set.getValues()[i + 1] != -1) {
+					path.lineTo((i + 1) * this.getWidth() / model.getIterations(),
+							convertToCanvasY((float) (set.getValues()[i + 1] * maximum)));
+				} else {
+					break;
+				}
 			}
-			path.lineTo(model.getCurIteration() * this.getWidth() / model.getIterations(),
-					convertToCanvasY((float) (set.getValues()[i + 1] * maximum)));
 		}
 	}