Browse Source

First commit: fix done, but missed some debug code.

Ludwig Tietze 6 years ago
parent
commit
886a8f6d9f

+ 0 - 1
src/DataSets/GraphDataSet.java

@@ -38,5 +38,4 @@ public class GraphDataSet {
 	public Hashtable<String, PropertyDataSet> getPropertytTable(){
 		return propertyTable;
 	}
-	
 }

+ 14 - 2
src/classes/TrackedDataSet.java

@@ -2,6 +2,8 @@ package classes;
 
 import com.google.gson.annotations.Expose;
 
+import ui.controller.SingletonControl;
+
 import java.awt.*;
 
 public class TrackedDataSet {
@@ -53,12 +55,14 @@ public class TrackedDataSet {
 	 *            which value should be tracked
 	 * @param color
 	 *            color of the line in the graph
+	 * @param timeStep
+	 * 			  The time steps at the moment this object is created
 	 */
-	public TrackedDataSet(AbstractCpsObject cps, int property, Color color) {
+	public TrackedDataSet(AbstractCpsObject cps, int property, Color color, int timeSteps) {
 		this.cps = cps;
 		this.property = property;
 		this.color = color;
-		this.values = new float[100];
+		this.values = new float[timeSteps];
 		resetValues();
 	}
 
@@ -90,4 +94,12 @@ public class TrackedDataSet {
 			values[i] = -1;
 		}
 	}
+
+	public void updateIterations() {
+		float[] tmp=new float[
+		                      SingletonControl.getInstance().getControl().getModel().getIterations()
+		                     ];
+		for(int i=0;i<tmp.length;i++)tmp[i]=(i<values.length)?values[i]:-1;
+		values=tmp;
+	}
 }

+ 7 - 3
src/ui/view/GUI.java

@@ -2225,7 +2225,7 @@ public class GUI implements CategoryListener {
 			}
 		});
 
-		timePanel = new TimePanel(model, controller);
+		timePanel = new TimePanel(this,controller);
 		timePanel.setBorder(null);
 		((JSlider)
 				(
@@ -2761,7 +2761,7 @@ public class GUI implements CategoryListener {
 		int prop;
 		Color color;
 
-		StatisticGraphPanel stat = new StatisticGraphPanel(model, controller,
+		StatisticGraphPanel stat = new StatisticGraphPanel(model, controller,//TODO
 				json.get("KEY").getAsString(), model.getGraphTable());
 
 		for (String k : keys) {
@@ -2771,7 +2771,7 @@ public class GUI implements CategoryListener {
 						.searchTracked(obj.get("ID").getAsInt()));
 				prop = obj.get("PROPERTY").getAsInt();
 				color = model.getGson().fromJson(obj.get("COLOR"), Color.class);
-				stat.addObject(new TrackedDataSet(cps, prop, color));
+				stat.addObject(new TrackedDataSet(cps, prop, color, model.getIterations()));
 			}
 			model.getGraphTable().put(json.get("KEY").getAsString(), stat);
 			model.getStatPanel().getGraphPanel().add(stat);
@@ -2881,4 +2881,8 @@ public class GUI implements CategoryListener {
 		unitGraph.repaintWithNewSwitch(o);
 		unitGraphLocalPeriod.setText(""+unitGraph.getLocalPeriod());
 	}
+
+	public void updateIterations() {
+		this.statSplitPane.updateIterations();
+	}
 }

+ 8 - 0
src/ui/view/StatisticGraph.java

@@ -539,6 +539,7 @@ public class StatisticGraph extends JPanel {
             path.moveTo(DISTANCE_IN_GRAPH * this.getWidth() / model.getIterations(), convertToCanvasY(set.getValues()[1]));
         }
         for (int i = 0; i < range; i++) {
+        	System.out.println(i);
             if (set.getValues()[i + 1] != -1) {
                 path.lineTo((i + 1) * this.getWidth() / model.getIterations(),
                         convertToCanvasY(set.getValues()[i + 1]));
@@ -771,5 +772,12 @@ public class StatisticGraph extends JPanel {
         paintComponent(g);
     }
 
+	public void updateIterations() {
+		for(TrackedDataSet dataSet:dataSets){
+			System.out.println("Updating: "+dataSet);
+			dataSet.updateIterations();
+		}
+	}
+
 
 }

+ 9 - 3
src/ui/view/StatisticPanel.java

@@ -5,6 +5,7 @@ import DataSets.PropertyDataSet;
 import classes.*;
 import interfaces.GraphListener;
 import ui.controller.Control;
+import ui.controller.SingletonControl;
 
 import javax.swing.*;
 import javax.swing.border.EmptyBorder;
@@ -15,6 +16,7 @@ import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeModel;
 import java.awt.*;
 import java.util.ArrayList;
+import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Random;
 
@@ -57,7 +59,7 @@ public class StatisticPanel extends JSplitPane implements GraphListener {
     private DefaultMutableTreeNode groupNode;
 
     private Hashtable<String, GraphDataSet> objectHashtable;
-    private Hashtable<String, StatisticGraphPanel> graphHashtable;
+    private Hashtable<String, StatisticGraphPanel> graphHashtable;//TODO: this
     private Hashtable<String, PropertyDataSet> holonHashtable;
     private Hashtable<String, Integer> propValTable;
 
@@ -567,7 +569,7 @@ public class StatisticPanel extends JSplitPane implements GraphListener {
                             absCps = dataSet.getObject();
                         }
                         TrackedDataSet tds = new TrackedDataSet(absCps, propValTable.get(property),
-                                currentProperty.getColor());
+                                currentProperty.getColor(),cont.getModel().getIterations());//TODO
                         graphHashtable.get(graphNrTxtField.getText()).addObject(tds);
                     }
                 }
@@ -765,5 +767,9 @@ public class StatisticPanel extends JSplitPane implements GraphListener {
         return graphPanel;
     }
 
-
+	public void updateIterations() {
+		for(Enumeration<StatisticGraphPanel> dataEnum=graphHashtable.elements();dataEnum.hasMoreElements();){
+			dataEnum.nextElement().getStatGraph().updateIterations();
+		}
+	}
 }

+ 22 - 21
src/ui/view/TimePanel.java

@@ -70,13 +70,14 @@ public class TimePanel extends JPanel implements ActionListener{
 			addMouseListener(tl);
 		}
 	};
-	private Model model;
+	//private Model model;
 	private Control controller;
 	private int dragResetIteration = 0;
 	private JLabel simSpeedLabel = new JLabel("Speed:");
 	private JSlider speedSlider = new JSlider();
 	private Timer timer;
 	private boolean running = false;
+	private GUI parentGUI;
 
 	/**
 	 * Constructor.
@@ -86,19 +87,18 @@ public class TimePanel extends JPanel implements ActionListener{
 	 * @param cont
 	 *            the Controller
 	 */
-	public TimePanel(Model mod, Control cont) {
+	public TimePanel(GUI parent, Control cont) {
 		super();
-		this.model = mod;
 		this.controller = cont;
-
+		this.parentGUI=parent;
 		// One Iteration
 		timer = new Timer(0, new ActionListener() {//TODO: Merge all these damned listeners.
 			@Override
 			public void actionPerformed(ActionEvent ae) {
 				timeSlider.setValue(timeSlider.getValue() + 1);
 				controller.setCurIteration(timeSlider.getValue());
-				timer.setDelay(model.getTimerSpeed());
-				if (timeSlider.getValue() >= model.getIterations() - 1) {
+				timer.setDelay(cont.getModel().getTimerSpeed());
+				if (timeSlider.getValue() >= cont.getModel().getIterations() - 1) {
 					/*/calc and print performance
 					performanceTime = System.nanoTime()-performanceTime;
 					
@@ -119,24 +119,24 @@ public class TimePanel extends JPanel implements ActionListener{
 		// Slider
 		timeSlider.setPaintTicks(true);
 		timeSlider.setPaintLabels(true);
-		timeSlider.setMajorTickSpacing((int)Math.ceil(((double)model.getIterations())/20));
-		timeSlider.setMinorTickSpacing((int)Math.ceil(((double)model.getIterations())/100));
+		timeSlider.setMajorTickSpacing((int)Math.ceil(((double)cont.getModel().getIterations())/20));
+		timeSlider.setMinorTickSpacing((int)Math.ceil(((double)cont.getModel().getIterations())/100));
 		timeSlider.setToolTipText(Languages.getLanguage()[93]);
-		timeSlider.setMaximum(model.getIterations() - 1);
+		timeSlider.setMaximum(cont.getModel().getIterations() - 1);
 		timeSlider.setValue(0);
 		timeSlider.addChangeListener(changeEvent -> controller.setCurIteration(timeSlider.getValue()));
 
 		timeSlider.addMouseListener(new MouseAdapter() {
 			@Override
 			public void mousePressed(MouseEvent e) {
-				dragResetIteration = model.getCurIteration();
+				dragResetIteration = cont.getModel().getCurIteration();
 			}
 		});
 
 		timeSlider.addMouseMotionListener(new MouseAdapter() {
 			@Override
 			public void mouseDragged(MouseEvent e) {
-				if (dragResetIteration != model.getCurIteration()) {
+				if (dragResetIteration != cont.getModel().getCurIteration()) {
 					controller.resetSimulation();
 					if (running) {
 						playBtn.doClick();
@@ -159,11 +159,11 @@ public class TimePanel extends JPanel implements ActionListener{
 		playBtn.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				if(model.getCurIteration()==model.getIterations()-1)timeSlider.setValue(timeSlider.getMinimum());
+				if(cont.getModel().getCurIteration()==cont.getModel().getIterations()-1)timeSlider.setValue(timeSlider.getMinimum());
 				running = !running;
 				controller.setIsSimRunning(running);
 				if (running) {
-					timer.setDelay(model.getTimerSpeed());
+					timer.setDelay(cont.getModel().getTimerSpeed());
 
 					/*
 					 * start the Performance Test
@@ -206,7 +206,7 @@ public class TimePanel extends JPanel implements ActionListener{
 		timeForwardBtn.setIcon(new ImageIcon(Util.loadImage(this,"/Button_Images/forward.png",30,30)));
 		timeForwardBtn.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent ae) {
-				if (!model.getIsSimRunning()) {
+				if (!cont.getModel().getIsSimRunning()) {
 					controller.setIsSimRunning(true);
 				}
 				timeSlider.setValue(timeSlider.getValue() + 1);
@@ -276,7 +276,7 @@ public class TimePanel extends JPanel implements ActionListener{
 		iterationsPanel.setLayout(new GridLayout(3,1));
 		iterationsPanel.add(iterationsLabel, BorderLayout.NORTH);
 		iterationsField=new JTextField(6);//Considering hundreds of thousands in an extreme case
-		iterationsField.setText(""+model.getIterations());
+		iterationsField.setText(""+cont.getModel().getIterations());
 		iterationsField.addActionListener(this);//TODO
 		iterationsPanel.add(iterationsField);
 		iterationsPanel.add(new JLabel(), BorderLayout.SOUTH);
@@ -313,7 +313,7 @@ public class TimePanel extends JPanel implements ActionListener{
 
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				if (!model.getIsSimRunning()) {
+				if (!cont.getModel().getIsSimRunning()) {
 					controller.setIsSimRunning(true);
 				}
 				timeSlider.setValue(timeSlider.getValue() + 1);
@@ -322,7 +322,7 @@ public class TimePanel extends JPanel implements ActionListener{
 	}
 
 	/**
-	 * Retunrs the TimeSlider.
+	 * Returns the TimeSlider.
 	 * 
 	 * @return the TimeSlider
 	 */
@@ -339,11 +339,12 @@ public class TimePanel extends JPanel implements ActionListener{
 			else if(iterations>MAX_ITERATIONS)iterations=MAX_ITERATIONS;
 			else resetField=false;
 			if(resetField)iterationsField.setText(""+iterations);
-			model.setIterations(Integer.parseInt(iterationsField.getText()));
-			timeSlider.setMaximum(model.getIterations());
+			controller.getModel().setIterations(Integer.parseInt(iterationsField.getText()));
+			timeSlider.setMaximum(controller.getModel().getIterations()-1);//TODO forgot this
 			timeSlider.setLabelTable(null);//Otherwise the ticks won't update
-			timeSlider.setMajorTickSpacing((int)Math.ceil(((double)model.getIterations())/20));
-			timeSlider.setMinorTickSpacing((int)Math.ceil(((double)model.getIterations())/100));
+			timeSlider.setMajorTickSpacing((int)Math.ceil(((double)controller.getModel().getIterations())/20));
+			timeSlider.setMinorTickSpacing((int)Math.ceil(((double)controller.getModel().getIterations())/100));
+			parentGUI.updateIterations();
 		}catch(NumberFormatException e){
 			
 		}