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:
kascade 2007-01-18 23:39:00 +00:00
parent ca8ade4152
commit 0b5f881f50
1 changed files with 26 additions and 6 deletions

View File

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