mirror of https://github.com/rusefi/RomRaider.git
logger dash panel enhanced with bar tracking
git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@440 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
parent
ca8ade4152
commit
0b5f881f50
|
@ -23,6 +23,7 @@ package enginuity.logger.ui.handler.dash;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import static java.awt.BorderLayout.*;
|
import static java.awt.BorderLayout.*;
|
||||||
|
import static java.awt.Font.BOLD;
|
||||||
import static java.awt.Font.PLAIN;
|
import static java.awt.Font.PLAIN;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.border.BevelBorder;
|
import javax.swing.border.BevelBorder;
|
||||||
|
@ -38,6 +39,7 @@ public final class PlainGauge extends Gauge {
|
||||||
private final JLabel maxLabel = new JLabel(BLANK, JLabel.CENTER);
|
private final JLabel maxLabel = new JLabel(BLANK, JLabel.CENTER);
|
||||||
private final JLabel minLabel = new JLabel(BLANK, JLabel.CENTER);
|
private final JLabel minLabel = new JLabel(BLANK, JLabel.CENTER);
|
||||||
private final JLabel title = new JLabel(BLANK, JLabel.CENTER);
|
private final JLabel title = new JLabel(BLANK, JLabel.CENTER);
|
||||||
|
private final JProgressBar progressBar = new JProgressBar(JProgressBar.VERTICAL);
|
||||||
private double max = Double.MIN_VALUE;
|
private double max = Double.MIN_VALUE;
|
||||||
private double min = Double.MAX_VALUE;
|
private double min = Double.MAX_VALUE;
|
||||||
|
|
||||||
|
@ -62,6 +64,9 @@ public final class PlainGauge extends Gauge {
|
||||||
maxLabel.setText(zeroText);
|
maxLabel.setText(zeroText);
|
||||||
min = Double.MAX_VALUE;
|
min = Double.MAX_VALUE;
|
||||||
minLabel.setText(zeroText);
|
minLabel.setText(zeroText);
|
||||||
|
progressBar.setMinimum(scaleForProgressBar(min));
|
||||||
|
progressBar.setMaximum(scaleForProgressBar(max));
|
||||||
|
progressBar.setValue(scaleForProgressBar(min));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initGaugeLayout() {
|
private void initGaugeLayout() {
|
||||||
|
@ -72,13 +77,14 @@ public final class PlainGauge extends Gauge {
|
||||||
setLayout(new BorderLayout(3, 3));
|
setLayout(new BorderLayout(3, 3));
|
||||||
|
|
||||||
// title
|
// title
|
||||||
|
title.setFont(getFont().deriveFont(BOLD, 12F));
|
||||||
add(title, NORTH);
|
add(title, NORTH);
|
||||||
|
|
||||||
// data panel
|
// data panel
|
||||||
JPanel data = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 3));
|
JPanel data = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 3));
|
||||||
data.setBackground(Color.YELLOW);
|
data.setBackground(Color.YELLOW);
|
||||||
data.setBorder(new BevelBorder(LOWERED));
|
data.setBorder(new BevelBorder(LOWERED));
|
||||||
currentLabel.setFont(data.getFont().deriveFont(PLAIN, 40F));
|
currentLabel.setFont(getFont().deriveFont(PLAIN, 40F));
|
||||||
JPanel currentPanel = new JPanel(new BorderLayout());
|
JPanel currentPanel = new JPanel(new BorderLayout());
|
||||||
currentPanel.setPreferredSize(new Dimension(140, 80));
|
currentPanel.setPreferredSize(new Dimension(140, 80));
|
||||||
currentPanel.add(currentLabel, CENTER);
|
currentPanel.add(currentLabel, CENTER);
|
||||||
|
@ -87,21 +93,27 @@ public final class PlainGauge extends Gauge {
|
||||||
// max/min panel
|
// max/min panel
|
||||||
JPanel maxMinPanel = new JPanel(new BorderLayout(2, 2));
|
JPanel maxMinPanel = new JPanel(new BorderLayout(2, 2));
|
||||||
maxMinPanel.setBackground(Color.YELLOW);
|
maxMinPanel.setBackground(Color.YELLOW);
|
||||||
JPanel maxPanel = buildMaxMinPanel("max", maxLabel, data.getFont());
|
JPanel maxPanel = buildMaxMinPanel("max", maxLabel);
|
||||||
JPanel minPanel = buildMaxMinPanel("min", minLabel, data.getFont());
|
JPanel minPanel = buildMaxMinPanel("min", minLabel);
|
||||||
maxMinPanel.add(maxPanel, NORTH);
|
maxMinPanel.add(maxPanel, NORTH);
|
||||||
maxMinPanel.add(minPanel, SOUTH);
|
maxMinPanel.add(minPanel, SOUTH);
|
||||||
data.add(maxMinPanel);
|
data.add(maxMinPanel);
|
||||||
|
|
||||||
|
// progress bar
|
||||||
|
progressBar.setStringPainted(false);
|
||||||
|
progressBar.setIndeterminate(false);
|
||||||
|
progressBar.setPreferredSize(new Dimension(20, 82));
|
||||||
|
data.add(progressBar);
|
||||||
add(data, CENTER);
|
add(data, CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JPanel buildMaxMinPanel(String title, JLabel label, Font font) {
|
private JPanel buildMaxMinPanel(String title, JLabel label) {
|
||||||
label.setFont(font.deriveFont(PLAIN, 12F));
|
label.setFont(getFont().deriveFont(PLAIN, 12F));
|
||||||
JPanel panel = new JPanel(new BorderLayout(1, 1));
|
JPanel panel = new JPanel(new BorderLayout(1, 1));
|
||||||
panel.setPreferredSize(new Dimension(60, 38));
|
panel.setPreferredSize(new Dimension(60, 38));
|
||||||
panel.setBackground(Color.CYAN);
|
panel.setBackground(Color.CYAN);
|
||||||
JLabel titleLabel = new JLabel(title, JLabel.CENTER);
|
JLabel titleLabel = new JLabel(title, JLabel.CENTER);
|
||||||
titleLabel.setFont(font.deriveFont(Font.BOLD, 12F));
|
titleLabel.setFont(getFont().deriveFont(BOLD, 12F));
|
||||||
JPanel dataPanel = new JPanel(new BorderLayout());
|
JPanel dataPanel = new JPanel(new BorderLayout());
|
||||||
dataPanel.setBackground(Color.PINK);
|
dataPanel.setBackground(Color.PINK);
|
||||||
dataPanel.add(label, CENTER);
|
dataPanel.add(label, CENTER);
|
||||||
|
@ -112,19 +124,27 @@ public final class PlainGauge extends Gauge {
|
||||||
|
|
||||||
private void refreshValue(double value) {
|
private void refreshValue(double value) {
|
||||||
String text = format(value);
|
String text = format(value);
|
||||||
|
int scaledValue = scaleForProgressBar(value);
|
||||||
if (value > max) {
|
if (value > max) {
|
||||||
max = value;
|
max = value;
|
||||||
maxLabel.setText(text);
|
maxLabel.setText(text);
|
||||||
|
progressBar.setMaximum(scaledValue);
|
||||||
}
|
}
|
||||||
if (value < min) {
|
if (value < min) {
|
||||||
min = value;
|
min = value;
|
||||||
minLabel.setText(text);
|
minLabel.setText(text);
|
||||||
|
progressBar.setMinimum(scaledValue);
|
||||||
}
|
}
|
||||||
currentLabel.setText(text);
|
currentLabel.setText(text);
|
||||||
|
progressBar.setValue(scaledValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String format(double value) {
|
private String format(double value) {
|
||||||
return ecuData.getSelectedConvertor().format(value);
|
return ecuData.getSelectedConvertor().format(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int scaleForProgressBar(double value) {
|
||||||
|
return (int) (value * 1000.0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue