|
@@ -24,6 +24,7 @@ import java.util.LinkedList;
|
|
|
public class UnitGraph extends JPanel implements MouseListener, MouseMotionListener, ComponentListener {
|
|
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
+ public static final int STANDARD_GRAPH_ACCURACY = 100;
|
|
|
private GeneralPath graphCurve = new GeneralPath();
|
|
|
private float maximum = 0;
|
|
|
// Information shown when a Point is Dragged
|
|
@@ -38,7 +39,7 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
|
|
|
// Scale for the Graph
|
|
|
private double scaleX;
|
|
|
private double scaleY;
|
|
|
- private float[] arrayOfFloats = null;
|
|
|
+ //private float[] arrayOfFloats = null;
|
|
|
private boolean[] arrayOfBooleans = null;
|
|
|
private double width = -1;
|
|
|
private double height = -1;
|
|
@@ -105,13 +106,15 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
|
|
|
}
|
|
|
g2.drawLine(border, this.getHeight() - border, this.getWidth() - border, this.getHeight() - border);
|
|
|
|
|
|
- int effectiveX=getEffectiveIndex(current, model.getCurIteration());
|
|
|
+ int effectiveX;
|
|
|
+ if(current!=null)effectiveX=getEffectiveIndex(model, current, model.getCurIteration());
|
|
|
+ else effectiveX=0;
|
|
|
|
|
|
if (isElement) {
|
|
|
// fill array with values from the pointList in a HolonElement
|
|
|
fillArrayofValue();
|
|
|
|
|
|
- if (arrayOfFloats != null) {
|
|
|
+ if (current != null) {
|
|
|
// Draw the Lines
|
|
|
g2.setStroke(new BasicStroke(2));
|
|
|
g2.setColor(Color.BLACK);
|
|
@@ -134,17 +137,17 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
|
|
|
|
|
|
// Iteration Value
|
|
|
//TODO: added function getGraphIterations see if it works
|
|
|
- textWidth = g.getFontMetrics().stringWidth("" + arrayOfFloats[effectiveX]) + 2;
|
|
|
+ textWidth = g.getFontMetrics().stringWidth("" + ((HolonElement)current).getAvailableEnergyAt(model.getCurIteration())/*arrayOfFloats[effectiveX]*/) + 2;
|
|
|
if (textWidth
|
|
|
- + (effectiveX) * (this.getWidth() - (border * 2)) / (model.getIterations() - 1) + 2
|
|
|
+ + (effectiveX) * (this.getWidth() - (border * 2)) / (/*model.getIterations()*/100 - 1) + 2
|
|
|
+ border <= this.getWidth()) {
|
|
|
- g2.drawString("" + arrayOfFloats[effectiveX],
|
|
|
- (effectiveX) * (this.getWidth() - (border * 2)) / (model.getIterations() - 1)
|
|
|
+ g2.drawString("" + ((HolonElement)current).getAvailableEnergyAt(model.getCurIteration()),
|
|
|
+ (effectiveX) * (this.getWidth() - (border * 2)) / (/*model.getIterations()*/100 - 1)
|
|
|
+ 2 + border,
|
|
|
this.getHeight() - 10);
|
|
|
} else {
|
|
|
- g2.drawString("" + arrayOfFloats[effectiveX],
|
|
|
- (effectiveX) * (this.getWidth() - (border * 2)) / (model.getIterations() - 1)
|
|
|
+ g2.drawString("" + ((HolonElement)current).getAvailableEnergyAt(model.getCurIteration()),
|
|
|
+ (effectiveX) * (this.getWidth() - (border * 2)) / (/*model.getIterations()*/100 - 1)
|
|
|
+ border - textWidth,
|
|
|
this.getHeight() - 10);
|
|
|
}
|
|
@@ -556,7 +559,7 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
|
|
|
public void empty() {
|
|
|
pointList = null;
|
|
|
tempElements = null;
|
|
|
- arrayOfFloats = null;
|
|
|
+ current = null;
|
|
|
arrayOfBooleans = null;
|
|
|
isSwitch = false;
|
|
|
isElement = false;
|
|
@@ -604,7 +607,7 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
|
|
|
* @param selectedElement which should be visualized
|
|
|
*/
|
|
|
public void repaintWithNewElement(ArrayList<HolonElement> selectedElement) {
|
|
|
- arrayOfFloats = selectedElement.get(selectedElement.size() - 1).getAvailableEnergyPerElementAt();
|
|
|
+ //arrayOfFloats = selectedElement.get(selectedElement.size() - 1).getAvailableEnergyPerElementAt();
|
|
|
current = selectedElement.get(selectedElement.size()-1);
|
|
|
tempElements=selectedElement;
|
|
|
pointList = selectedElement.get(selectedElement.size() - 1).getGraphPoints();
|
|
@@ -691,10 +694,11 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
|
|
|
for (HolonElement he : tempElements) {
|
|
|
maximum = getMaximum(he);
|
|
|
he.setGraphPoints((LinkedList<Point>) pointList.clone());
|
|
|
- for (int i = 0; i < arrayOfFloats.length; i++) {
|
|
|
- he.getAvailableEnergyPerElementAt()[i] = convertToValueY(getYValueAt2((int) (i * width / (model.getIterations() - 1))));
|
|
|
+ for (int i = 0; i < STANDARD_GRAPH_ACCURACY; i++) {//!!!!!
|
|
|
+ he.setAvailableEnergyPerElementAt(i, convertToValueY(getYValueAt2((int) (i * width / (100 - 1)))));
|
|
|
+ //he.getAvailableEnergyPerElementAt()[i] = convertToValueY(getYValueAt2((int) (i * width / (100 - 1))));
|
|
|
}
|
|
|
- arrayOfFloats = he.getAvailableEnergyPerElementAt();
|
|
|
+ //arrayOfFloats = he.getAvailableEnergyPerElementAt();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -861,10 +865,18 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
|
|
|
else return model.getGraphIterations();//TODO: maybe rename
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ static int lv=0;
|
|
|
+
|
|
|
+ public static int getEffectiveIndex(Model m, IGraphedElement e, int timeStep){
|
|
|
+ int o;
|
|
|
+ if(e.isStretching())o= timeStep*100/m.getIterations();
|
|
|
+ else o= timeStep%e.getLocalPeriod()*100/e.getLocalPeriod();
|
|
|
+ return o;//TODO
|
|
|
+ }
|
|
|
+
|
|
|
public static int getEffectiveIndex(IGraphedElement e, int timeStep){
|
|
|
- Model m=SingletonControl.getInstance().getControl().getModel();
|
|
|
- if(e.isStretching())return timeStep*100/m.getIterations();
|
|
|
- else return timeStep%e.getLocalPeriod()*100/e.getLocalPeriod();
|
|
|
+ return getEffectiveIndex(SingletonControl.getInstance().getControl().getModel(),e,timeStep);
|
|
|
}
|
|
|
|
|
|
public static int getEffectiveIndex(IGraphedElement e){
|