forked from LupusNobilis/java-org.hwo.ui
125 lines
2.5 KiB
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);
|
|
}
|
|
}
|