rusefi/java_console/ui/src/main/java/com/rusefi/ui/ChartHelper.java

146 lines
4.8 KiB
Java

package com.rusefi.ui;
import com.rusefi.FileLog;
import com.rusefi.models.Range;
import com.rusefi.models.XYData;
import com.rusefi.ui.util.UiUtils;
import com.rusefi.ui.util.JTextFieldWithWidth;
//import net.ericaro.surfaceplotter.DefaultSurfaceModel;
//import net.ericaro.surfaceplotter.JSurfacePanel;
//import net.ericaro.surfaceplotter.Mapper;
//import net.ericaro.surfaceplotter.surface.SurfaceModel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static com.rusefi.models.Utils.parseIntWithReason;
/**
* Date: 1/22/13
* Andrey Belomutskiy, (c) 2013-2020
*/
/*
public class ChartHelper {
private ChartHelper() {
}
public static JPanel create3DControl(final XYData data, SurfaceModel surfaceModel, String title) {
final JPanel result = new JPanel(new BorderLayout());
result.setBorder(BorderFactory.createLineBorder(Color.red));
final JSurfacePanel jsp = new JSurfacePanel(surfaceModel);
jsp.setTitleText(title);
jsp.setConfigurationVisible(true);
jsp.getSurface().setXLabel("RPM");
jsp.getSurface().setYLabel("MAF voltage");
result.add(BorderLayout.CENTER, jsp);
JButton saveImageButton = UiUtils.createSaveImageButton();
saveImageButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String fileName = FileLog.getDate() + "_3d.png";
UiUtils.saveImageWithPrompt(fileName, result, jsp);
}
});
JPanel upperPanel = new JPanel(new FlowLayout());
upperPanel.add(saveImageButton);
result.add(upperPanel, BorderLayout.NORTH);
JPanel bottomPanel = new JPanel(new FlowLayout());
bottomPanel.add(new JLabel("RPM: "));
final JTextField xField = new JTextFieldWithWidth("1200", 150);
final JTextField yField = new JTextFieldWithWidth("50", 150);
bottomPanel.add(xField);
bottomPanel.add(yField);
final JLabel currentValue = new JLabel();
bottomPanel.add(currentValue);
result.add(bottomPanel, BorderLayout.SOUTH);
ActionListener updateValue = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int rpm = parseIntWithReason(xField.getText(), "CH xField");
double y = Double.parseDouble(yField.getText());
currentValue.setText("" + data.getValue(rpm, y));
}
};
xField.addActionListener(updateValue);
yField.addActionListener(updateValue);
updateValue.actionPerformed(null);
return result;
}
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data) {
return createDefaultSurfaceModel(data, null);
}
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data, final XYData data2) {
Range xRange = new Range((float) data.getMinXValue(), (float) data.getMaxXValue());
Range yRange = new Range((float) data.getMinYValue(), (float) data.getMaxYValue());
return createDefaultSurfaceModel(data, xRange, yRange, data2);
}
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data, Range xRange, Range yRange) {
return createDefaultSurfaceModel(data, xRange, yRange, null);
}
public static DefaultSurfaceModel createDefaultSurfaceModel(final XYData data, Range xRange, Range yRange, final XYData data2) {
final DefaultSurfaceModel sm = new DefaultSurfaceModel();
sm.setPlotFunction2(false);
sm.setCalcDivisions(50);
sm.setDispDivisions(50);
sm.setContourLines(10);
sm.setXMin(xRange.getMin());
sm.setXMax(xRange.getMax());
setYRange(yRange, sm);
sm.setBoxed(true);
sm.setDisplayXY(true);
sm.setExpectDelay(false);
sm.setAutoScaleZ(true);
sm.setDisplayZ(true);
sm.setMesh(true);
sm.setPlotType(SurfaceModel.PlotType.SURFACE);
if (data2 == null)
sm.setFirstFunctionOnly(true);
else
sm.setBothFunction(true);
sm.setPlotColor(data2 != null ? SurfaceModel.PlotColor.FOG : SurfaceModel.PlotColor.SPECTRUM);
sm.setMapper(new Mapper() {
public float f1(float x, float y) {
return data.getValue(x, y);
}
public float f2(float x, float y) {
if (data2 == null)
return 0;
return data2.getValue(x, y);
}
});
sm.plot().execute();
return sm;
}
public static void setYRange(Range yRange, DefaultSurfaceModel sm) {
sm.setYMin(yRange.getMin());
sm.setYMax(yRange.getMax());
}
}
*/