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:
kascade 2008-06-01 00:09:05 +00:00
parent 0a53aab4a3
commit b64dcb54c3
8 changed files with 126 additions and 7 deletions

View File

@ -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>

View File

@ -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.

View File

@ -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

View File

@ -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;

View File

@ -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);
}
}