java-org.hwo.ui/src/org/hwo/ui/diagram/SimplePlotProvider.java

125 lines
2.5 KiB
Java

package org.hwo.ui.diagram;
import java.awt.Color;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
public class SimplePlotProvider implements PlotProvider2 {
int points;
int xmin;
ArrayList<Float[]> plots;
ArrayList<String> labels;
ArrayList<Integer> ordinates;
Color[] colors;
public SimplePlotProvider(int plots,int points) {
this.points = points;
this.plots = new ArrayList<Float[]>();
this.labels = new ArrayList<String>();
this.ordinates = new ArrayList<Integer>();
this.xmin = 0;
this.colors = new Color[plots];
for (int i=0;i<plots;i++){
this.plots.add(new Float[points]);
this.labels.add(String.format("Plot %d", i));
Arrays.fill(this.plots.get(i), 0.0f);
this.colors[i] = null;
this.ordinates.add(0);
}
}
public int getXmin() {
return xmin;
}
public void setXmin(int xmin) {
this.xmin = xmin;
}
@Override
public String getLabel(int plot) {
return this.labels.get(plot);
}
@Override
public Color[] getColors() {
return this.colors;
}
public void setPlot(int plot,Float[] values){
Float[] cv = Arrays.copyOf(values, points);
this.plots.set(plot, cv);
}
public Float[] getPlot(int plot){
return this.plots.get(plot);
}
@Override
public int getMaxOrdinate() {
int m = 0;
for (Integer o:ordinates)
if (o > m)
m = o;
return m;
}
@Override
public int getLength() {
return this.points;
}
@Override
public int getNumGraphs() {
return this.plots.size();
}
@Override
public Float getValue(int x, int graph) {
return this.plots.get(graph)[x];
}
@Override
public Float getPosition(int x, int graph) {
return (float)x;
}
@Override
public int getOrdinate(int graph) {
return this.ordinates.get(graph);
}
public void setOrdinate(int graph,int ordinate) {
this.ordinates.set(graph, ordinate);
}
@Override
public Float getPositionMaximum() {
return (float)(this.points-1);
}
@Override
public Float getPositionMinimum() {
return (float)0;
}
private LinkedList<PlotProviderListener> plotProviderListeners = new LinkedList<PlotProviderListener>();
@Override
public void addPlotProviderListener(PlotProviderListener listener) {
plotProviderListeners.add(listener);
}
@Override
public void removePlotProviderListener(PlotProviderListener listener) {
plotProviderListeners.remove(listener);
}
private void fireFundamentalsChanged(){
for (PlotProviderListener l: plotProviderListeners)
l.fundamentalsChanged(this);
}
}