mirror of https://github.com/rusefi/RomRaider.git
experimental dial gauge added (unfinished)
git-svn-id: https://svn2.assembla.com/svn/romraider/trunk@92 38686702-15cf-42e4-a595-3071df8bf5ea
This commit is contained in:
parent
0a53aab4a3
commit
b64dcb54c3
|
@ -24,7 +24,7 @@
|
|||
<classpathentry kind="lib" path="lib/logger/rxtx/RXTXcomm.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jdic/windows/jdic_stub.jar"/>
|
||||
<classpathentry kind="lib" path="lib/jdic/jdic.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logger/jfreechart-1.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logger/jcommon-1.0.11.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logger/jfreechart-1.0.9.jar"/>
|
||||
<classpathentry kind="lib" path="lib/logger/jcommon-1.0.12.jar"/>
|
||||
<classpathentry kind="output" path="build/classes"/>
|
||||
</classpath>
|
||||
|
|
|
@ -109,8 +109,8 @@
|
|||
classpath="${launch4j.dir}/launch4j.jar:${launch4j.dir}/lib/xstream.jar"/>
|
||||
|
||||
<!-- jar file dependencies that have versions specified in their names -->
|
||||
<property name="jar.jcommon" value="jcommon-1.0.11.jar"/>
|
||||
<property name="jar.jfreechart" value="jfreechart-1.0.6.jar"/>
|
||||
<property name="jar.jcommon" value="jcommon-1.0.12.jar"/>
|
||||
<property name="jar.jfreechart" value="jfreechart-1.0.9.jar"/>
|
||||
<property name="jar.jama" value="jama-1.0.2.jar"/>
|
||||
<property name="jar.log4j" value="log4j-1.2.14.jar"/>
|
||||
<property name="jar.swing-layout" value="swing-layout-1.0.jar"/>
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
4
manifest
4
manifest
|
@ -10,8 +10,8 @@ Class-Path:
|
|||
lib/jamlab.jar
|
||||
lib/JFontChooser.jar
|
||||
lib/swing-layout-1.0.jar
|
||||
lib/jcommon-1.0.7.jar
|
||||
lib/jfreechart-1.0.3.jar
|
||||
lib/jcommon-1.0.12.jar
|
||||
lib/jfreechart-1.0.9.jar
|
||||
lib/RXTXcomm.jar
|
||||
lib/jdic.jar
|
||||
lib/jama-1.0.2.jar
|
||||
|
|
|
@ -39,7 +39,7 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
|
||||
public final class DashboardUpdateHandler implements DataUpdateHandler, ConvertorUpdateListener {
|
||||
private static final Class[] STYLES = {PlainGauge.class, SmallGauge.class, NoFrillsGauge.class};
|
||||
private static final Class[] STYLES = {PlainGauge.class, SmallGauge.class, NoFrillsGauge.class, DialGauge.class};
|
||||
private final Map<LoggerData, Gauge> gauges = synchronizedMap(new HashMap<LoggerData, Gauge>());
|
||||
private final JPanel dashboardPanel;
|
||||
private int styleIndex;
|
||||
|
|
|
@ -0,0 +1,119 @@
|
|||
package com.romraider.logger.ecu.ui.handler.dash;
|
||||
|
||||
import com.romraider.logger.ecu.definition.LoggerData;
|
||||
import static com.romraider.util.ParamChecker.checkNotNull;
|
||||
import org.jfree.chart.ChartPanel;
|
||||
import org.jfree.chart.JFreeChart;
|
||||
import org.jfree.chart.plot.dial.DialBackground;
|
||||
import org.jfree.chart.plot.dial.DialCap;
|
||||
import org.jfree.chart.plot.dial.DialFrame;
|
||||
import org.jfree.chart.plot.dial.DialPlot;
|
||||
import org.jfree.chart.plot.dial.DialPointer;
|
||||
import org.jfree.chart.plot.dial.DialTextAnnotation;
|
||||
import org.jfree.chart.plot.dial.DialValueIndicator;
|
||||
import org.jfree.chart.plot.dial.StandardDialFrame;
|
||||
import org.jfree.chart.plot.dial.StandardDialRange;
|
||||
import org.jfree.chart.plot.dial.StandardDialScale;
|
||||
import org.jfree.data.general.DefaultValueDataset;
|
||||
import static org.jfree.ui.GradientPaintTransformType.VERTICAL;
|
||||
import org.jfree.ui.StandardGradientPaintTransformer;
|
||||
import javax.swing.JPanel;
|
||||
import java.awt.Color;
|
||||
import static java.awt.Color.GREEN;
|
||||
import static java.awt.Color.ORANGE;
|
||||
import static java.awt.Color.RED;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import static java.awt.Font.BOLD;
|
||||
import static java.awt.Font.PLAIN;
|
||||
import java.awt.GradientPaint;
|
||||
import java.awt.Point;
|
||||
|
||||
public final class DialGauge implements GaugeStyle {
|
||||
private final DefaultValueDataset dataset = new DefaultValueDataset(0.0);
|
||||
private final DialTextAnnotation unitsLabel = new DialTextAnnotation("");
|
||||
private final JFreeChart chart = buildChart(dataset, unitsLabel);
|
||||
private final LoggerData loggerData;
|
||||
|
||||
public DialGauge(LoggerData loggerData) {
|
||||
checkNotNull(loggerData);
|
||||
this.loggerData = loggerData;
|
||||
}
|
||||
|
||||
public void apply(JPanel panel) {
|
||||
refreshTitle();
|
||||
resetValue();
|
||||
int width = 200;
|
||||
int height = 200;
|
||||
ChartPanel chartPanel = new ChartPanel(chart);
|
||||
chartPanel.setPreferredSize(new Dimension(width, height));
|
||||
panel.setPreferredSize(new Dimension(width + 20, height + 20));
|
||||
panel.add(chartPanel);
|
||||
}
|
||||
|
||||
|
||||
public void refreshTitle() {
|
||||
chart.setTitle(loggerData.getName());
|
||||
unitsLabel.setLabel(loggerData.getSelectedConvertor().getUnits());
|
||||
}
|
||||
|
||||
public void updateValue(double value) {
|
||||
dataset.setValue(value);
|
||||
}
|
||||
|
||||
public void resetValue() {
|
||||
dataset.setValue(0);
|
||||
}
|
||||
|
||||
private JFreeChart buildChart(DefaultValueDataset dataset, DialTextAnnotation unitsLabel) {
|
||||
DialPlot plot = new DialPlot(dataset);
|
||||
plot.setView(0.0, 0.0, 1.0, 1.0);
|
||||
plot.setDataset(this.dataset);
|
||||
DialFrame dialFrame = new StandardDialFrame();
|
||||
plot.setDialFrame(dialFrame);
|
||||
|
||||
GradientPaint gp = new GradientPaint(new Point(),
|
||||
new Color(255, 255, 255), new Point(),
|
||||
new Color(170, 170, 220));
|
||||
DialBackground db = new DialBackground(gp);
|
||||
db.setGradientPaintTransformer(new StandardGradientPaintTransformer(VERTICAL));
|
||||
plot.setBackground(db);
|
||||
|
||||
unitsLabel.setFont(new Font("Dialog", BOLD, 14));
|
||||
unitsLabel.setRadius(0.7);
|
||||
plot.addLayer(unitsLabel);
|
||||
|
||||
DialValueIndicator dvi = new DialValueIndicator(0);
|
||||
plot.addLayer(dvi);
|
||||
|
||||
StandardDialScale scale = new StandardDialScale();
|
||||
scale.setTickRadius(0.88);
|
||||
scale.setTickLabelOffset(0.15);
|
||||
scale.setTickLabelFont(new Font("Dialog", PLAIN, 14));
|
||||
plot.addScale(0, scale);
|
||||
|
||||
StandardDialRange range = new StandardDialRange(75.0, 100.0, RED);
|
||||
range.setInnerRadius(0.52);
|
||||
range.setOuterRadius(0.55);
|
||||
plot.addLayer(range);
|
||||
|
||||
StandardDialRange range2 = new StandardDialRange(50.0, 75.0, ORANGE);
|
||||
range2.setInnerRadius(0.52);
|
||||
range2.setOuterRadius(0.55);
|
||||
plot.addLayer(range2);
|
||||
|
||||
StandardDialRange range3 = new StandardDialRange(0.0, 50.0, GREEN);
|
||||
range3.setInnerRadius(0.52);
|
||||
range3.setOuterRadius(0.55);
|
||||
plot.addLayer(range3);
|
||||
|
||||
DialPointer needle = new DialPointer.Pointer();
|
||||
plot.addLayer(needle);
|
||||
|
||||
DialCap cap = new DialCap();
|
||||
cap.setRadius(0.10);
|
||||
plot.setCap(cap);
|
||||
|
||||
return new JFreeChart(plot);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue