mirror of https://github.com/rusefi/RomRaider.git
convertor update listeners added
git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@287 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
parent
eedf4fd76b
commit
1ebf3b307f
|
@ -43,7 +43,6 @@ import java.beans.PropertyChangeListener;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO: finish multi-conversion support for ecu params (already defined in xml)
|
|
||||||
TODO: add better debug logging, preferably to a file and switchable (on/off)
|
TODO: add better debug logging, preferably to a file and switchable (on/off)
|
||||||
TODO: finish dashboard tab
|
TODO: finish dashboard tab
|
||||||
TODO: add configuration screen (log file destination, etc)
|
TODO: add configuration screen (log file destination, etc)
|
||||||
|
@ -55,27 +54,40 @@ So much to do, so little time....
|
||||||
public final class EcuLogger extends JFrame implements WindowListener, PropertyChangeListener, MessageListener {
|
public final class EcuLogger extends JFrame implements WindowListener, PropertyChangeListener, MessageListener {
|
||||||
private static final String HEADING_PARAMETERS = "Parameters";
|
private static final String HEADING_PARAMETERS = "Parameters";
|
||||||
private static final String HEADING_SWITCHES = "Switches";
|
private static final String HEADING_SWITCHES = "Switches";
|
||||||
|
|
||||||
private final Settings settings = new Settings();
|
private final Settings settings = new Settings();
|
||||||
private final LoggerController controller = new LoggerControllerImpl(settings, this);
|
private final LoggerController controller = new LoggerControllerImpl(settings, this);
|
||||||
private final JLabel statusBarLabel = new JLabel("Enginuity ECU Logger");
|
private final JLabel statusBarLabel = new JLabel("Enginuity ECU Logger");
|
||||||
private final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);
|
private final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);
|
||||||
private final SerialPortComboBox portsComboBox = new SerialPortComboBox(settings);
|
private final SerialPortComboBox portsComboBox = new SerialPortComboBox(settings);
|
||||||
private final LoggerDataTableModel dataTableModel = new LoggerDataTableModel();
|
|
||||||
private final JPanel graphPanel = new JPanel();
|
|
||||||
private final JPanel dashboardPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
|
|
||||||
private final DataUpdateHandlerManager dataHandlerManager = new DataUpdateHandlerManagerImpl();
|
private final DataUpdateHandlerManager dataHandlerManager = new DataUpdateHandlerManagerImpl();
|
||||||
|
|
||||||
private final ParameterRegistrationBroker dataTabBroker = new ParameterRegistrationBrokerImpl(controller, dataHandlerManager);
|
private final ParameterRegistrationBroker dataTabBroker = new ParameterRegistrationBrokerImpl(controller, dataHandlerManager);
|
||||||
private final ParameterListTableModel dataTabParamListTableModel = new ParameterListTableModel(dataTabBroker, HEADING_PARAMETERS);
|
private final ParameterListTableModel dataTabParamListTableModel = new ParameterListTableModel(dataTabBroker, HEADING_PARAMETERS);
|
||||||
private final ParameterListTableModel dataTabSwitchListTableModel = new ParameterListTableModel(dataTabBroker, HEADING_SWITCHES);
|
private final ParameterListTableModel dataTabSwitchListTableModel = new ParameterListTableModel(dataTabBroker, HEADING_SWITCHES);
|
||||||
|
|
||||||
private final DataUpdateHandlerManager graphHandlerManager = new DataUpdateHandlerManagerImpl();
|
private final DataUpdateHandlerManager graphHandlerManager = new DataUpdateHandlerManagerImpl();
|
||||||
private final ParameterRegistrationBroker graphTabBroker = new ParameterRegistrationBrokerImpl(controller, graphHandlerManager);
|
private final ParameterRegistrationBroker graphTabBroker = new ParameterRegistrationBrokerImpl(controller, graphHandlerManager);
|
||||||
private final ParameterListTableModel graphTabParamListTableModel = new ParameterListTableModel(graphTabBroker, HEADING_PARAMETERS);
|
private final ParameterListTableModel graphTabParamListTableModel = new ParameterListTableModel(graphTabBroker, HEADING_PARAMETERS);
|
||||||
private final ParameterListTableModel graphTabSwitchListTableModel = new ParameterListTableModel(graphTabBroker, HEADING_SWITCHES);
|
private final ParameterListTableModel graphTabSwitchListTableModel = new ParameterListTableModel(graphTabBroker, HEADING_SWITCHES);
|
||||||
|
|
||||||
private final DataUpdateHandlerManager dashboardHandlerManager = new DataUpdateHandlerManagerImpl();
|
private final DataUpdateHandlerManager dashboardHandlerManager = new DataUpdateHandlerManagerImpl();
|
||||||
private final ParameterRegistrationBroker dashboardTabBroker = new ParameterRegistrationBrokerImpl(controller, dashboardHandlerManager);
|
private final ParameterRegistrationBroker dashboardTabBroker = new ParameterRegistrationBrokerImpl(controller, dashboardHandlerManager);
|
||||||
private final ParameterListTableModel dashboardTabParamListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_PARAMETERS);
|
private final ParameterListTableModel dashboardTabParamListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_PARAMETERS);
|
||||||
private final ParameterListTableModel dashboardTabSwitchListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_SWITCHES);
|
private final ParameterListTableModel dashboardTabSwitchListTableModel = new ParameterListTableModel(dashboardTabBroker, HEADING_SWITCHES);
|
||||||
|
|
||||||
|
private final FileUpdateHandler fileUpdateHandler = new FileUpdateHandler(settings);
|
||||||
|
|
||||||
|
private final LoggerDataTableModel dataTableModel = new LoggerDataTableModel();
|
||||||
|
private final LiveDataUpdateHandler liveDataUpdateHandler = new LiveDataUpdateHandler(dataTableModel);
|
||||||
|
|
||||||
|
private final JPanel graphPanel = new JPanel();
|
||||||
|
private final GraphUpdateHandler graphUpdateHandler = new GraphUpdateHandler(graphPanel);
|
||||||
|
|
||||||
|
private final JPanel dashboardPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
|
||||||
|
private final DashboardUpdateHandler dashboardUpdateHandler = new DashboardUpdateHandler(dashboardPanel);
|
||||||
|
|
||||||
public EcuLogger(String title) {
|
public EcuLogger(String title) {
|
||||||
super(title);
|
super(title);
|
||||||
|
|
||||||
|
@ -129,6 +141,10 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
dataTabParamListTableModel.addParam(ecuParam);
|
dataTabParamListTableModel.addParam(ecuParam);
|
||||||
graphTabParamListTableModel.addParam(ecuParam);
|
graphTabParamListTableModel.addParam(ecuParam);
|
||||||
dashboardTabParamListTableModel.addParam(ecuParam);
|
dashboardTabParamListTableModel.addParam(ecuParam);
|
||||||
|
ecuParam.addConvertorUpdateListener(fileUpdateHandler);
|
||||||
|
ecuParam.addConvertorUpdateListener(liveDataUpdateHandler);
|
||||||
|
ecuParam.addConvertorUpdateListener(graphUpdateHandler);
|
||||||
|
ecuParam.addConvertorUpdateListener(dashboardUpdateHandler);
|
||||||
}
|
}
|
||||||
List<EcuSwitch> ecuSwitches = dataLoader.getEcuSwitches();
|
List<EcuSwitch> ecuSwitches = dataLoader.getEcuSwitches();
|
||||||
for (EcuSwitch ecuSwitch : ecuSwitches) {
|
for (EcuSwitch ecuSwitch : ecuSwitches) {
|
||||||
|
@ -143,12 +159,11 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initParameterUpdateHandlers() {
|
private void initParameterUpdateHandlers() {
|
||||||
FileUpdateHandler fileUpdateHandler = new FileUpdateHandler(settings);
|
dataHandlerManager.addHandler(liveDataUpdateHandler);
|
||||||
dataHandlerManager.addHandler(new LiveDataUpdateHandler(dataTableModel));
|
|
||||||
dataHandlerManager.addHandler(fileUpdateHandler);
|
dataHandlerManager.addHandler(fileUpdateHandler);
|
||||||
graphHandlerManager.addHandler(new GraphUpdateHandler(graphPanel));
|
graphHandlerManager.addHandler(graphUpdateHandler);
|
||||||
graphHandlerManager.addHandler(fileUpdateHandler);
|
graphHandlerManager.addHandler(fileUpdateHandler);
|
||||||
dashboardHandlerManager.addHandler(new DashboardUpdateHandler(dashboardPanel));
|
dashboardHandlerManager.addHandler(dashboardUpdateHandler);
|
||||||
dashboardHandlerManager.addHandler(fileUpdateHandler);
|
dashboardHandlerManager.addHandler(fileUpdateHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package enginuity.logger.definition;
|
||||||
|
|
||||||
|
public interface ConvertorUpdateListener {
|
||||||
|
|
||||||
|
void notifyConvertorUpdate(EcuData updatedEcuData);
|
||||||
|
|
||||||
|
}
|
|
@ -4,12 +4,16 @@ import static enginuity.logger.definition.EcuDataType.PARAMETER;
|
||||||
import static enginuity.util.ParamChecker.checkNotNull;
|
import static enginuity.util.ParamChecker.checkNotNull;
|
||||||
import static enginuity.util.ParamChecker.checkNotNullOrEmpty;
|
import static enginuity.util.ParamChecker.checkNotNullOrEmpty;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public final class EcuDerivedParameterImpl implements EcuParameter {
|
public final class EcuDerivedParameterImpl implements EcuParameter {
|
||||||
private final String id;
|
private final String id;
|
||||||
private final String name;
|
private final String name;
|
||||||
private final String description;
|
private final String description;
|
||||||
private final EcuDerivedParameterConvertor[] convertors;
|
private final EcuDerivedParameterConvertor[] convertors;
|
||||||
private final String[] addresses;
|
private final String[] addresses;
|
||||||
|
private final Set<ConvertorUpdateListener> listeners = new HashSet<ConvertorUpdateListener>();
|
||||||
private int selectedConvertorIndex = 0;
|
private int selectedConvertorIndex = 0;
|
||||||
|
|
||||||
public EcuDerivedParameterImpl(String id, String name, String description, EcuData[] ecuDatas, EcuDerivedParameterConvertor[] convertors) {
|
public EcuDerivedParameterImpl(String id, String name, String description, EcuData[] ecuDatas, EcuDerivedParameterConvertor[] convertors) {
|
||||||
|
@ -51,11 +55,14 @@ public final class EcuDerivedParameterImpl implements EcuParameter {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectConvertor(EcuDataConvertor convertor) {
|
public void selectConvertor(EcuDataConvertor convertor) {
|
||||||
for (int i = 0; i < convertors.length; i++) {
|
if (convertor != getSelectedConvertor()) {
|
||||||
EcuDerivedParameterConvertor parameterConvertor = convertors[i];
|
for (int i = 0; i < convertors.length; i++) {
|
||||||
if (convertor == parameterConvertor) {
|
EcuDerivedParameterConvertor parameterConvertor = convertors[i];
|
||||||
selectedConvertorIndex = i;
|
if (convertor == parameterConvertor) {
|
||||||
|
selectedConvertorIndex = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
notifyUpdateListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,6 +70,11 @@ public final class EcuDerivedParameterImpl implements EcuParameter {
|
||||||
return PARAMETER;
|
return PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addConvertorUpdateListener(ConvertorUpdateListener listener) {
|
||||||
|
checkNotNull(listener, "listener");
|
||||||
|
listeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
private String[] setAddresses(EcuData[] ecuDatas) {
|
private String[] setAddresses(EcuData[] ecuDatas) {
|
||||||
String[] addresses = new String[0];
|
String[] addresses = new String[0];
|
||||||
for (EcuData ecuData : ecuDatas) {
|
for (EcuData ecuData : ecuDatas) {
|
||||||
|
@ -80,4 +92,10 @@ public final class EcuDerivedParameterImpl implements EcuParameter {
|
||||||
convertor.setEcuDatas(ecuDatas);
|
convertor.setEcuDatas(ecuDatas);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void notifyUpdateListeners() {
|
||||||
|
for (ConvertorUpdateListener listener : listeners) {
|
||||||
|
listener.notifyConvertorUpdate(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,6 @@ package enginuity.logger.definition;
|
||||||
|
|
||||||
public interface EcuParameter extends EcuData {
|
public interface EcuParameter extends EcuData {
|
||||||
|
|
||||||
EcuDataConvertor getSelectedConvertor();
|
void addConvertorUpdateListener(ConvertorUpdateListener listener);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,16 @@ import static enginuity.logger.definition.EcuDataType.PARAMETER;
|
||||||
import static enginuity.util.ParamChecker.checkNotNull;
|
import static enginuity.util.ParamChecker.checkNotNull;
|
||||||
import static enginuity.util.ParamChecker.checkNotNullOrEmpty;
|
import static enginuity.util.ParamChecker.checkNotNullOrEmpty;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public final class EcuParameterImpl implements EcuParameter {
|
public final class EcuParameterImpl implements EcuParameter {
|
||||||
private final String id;
|
private final String id;
|
||||||
private final String name;
|
private final String name;
|
||||||
private final String description;
|
private final String description;
|
||||||
private final String[] addresses;
|
private final String[] addresses;
|
||||||
private final EcuDataConvertor[] convertors;
|
private final EcuDataConvertor[] convertors;
|
||||||
|
private final Set<ConvertorUpdateListener> listeners = new HashSet<ConvertorUpdateListener>();
|
||||||
private int selectedConvertorIndex = 0;
|
private int selectedConvertorIndex = 0;
|
||||||
|
|
||||||
public EcuParameterImpl(String id, String name, String description, String[] address, EcuDataConvertor[] convertors) {
|
public EcuParameterImpl(String id, String name, String description, String[] address, EcuDataConvertor[] convertors) {
|
||||||
|
@ -50,15 +54,30 @@ public final class EcuParameterImpl implements EcuParameter {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectConvertor(EcuDataConvertor convertor) {
|
public void selectConvertor(EcuDataConvertor convertor) {
|
||||||
for (int i = 0; i < convertors.length; i++) {
|
if (convertor != getSelectedConvertor()) {
|
||||||
EcuDataConvertor dataConvertor = convertors[i];
|
for (int i = 0; i < convertors.length; i++) {
|
||||||
if (convertor == dataConvertor) {
|
EcuDataConvertor dataConvertor = convertors[i];
|
||||||
selectedConvertorIndex = i;
|
if (convertor == dataConvertor) {
|
||||||
|
selectedConvertorIndex = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
notifyUpdateListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public EcuDataType getDataType() {
|
public EcuDataType getDataType() {
|
||||||
return PARAMETER;
|
return PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addConvertorUpdateListener(ConvertorUpdateListener listener) {
|
||||||
|
checkNotNull(listener, "listener");
|
||||||
|
listeners.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyUpdateListeners() {
|
||||||
|
for (ConvertorUpdateListener listener : listeners) {
|
||||||
|
listener.notifyConvertorUpdate(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@ package enginuity.logger.definition;
|
||||||
|
|
||||||
public interface EcuSwitch extends EcuData {
|
public interface EcuSwitch extends EcuData {
|
||||||
|
|
||||||
EcuDataConvertor getSelectedConvertor();
|
|
||||||
|
|
||||||
boolean isFileLogController();
|
boolean isFileLogController();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ public final class QueryManagerImpl implements QueryManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildStatsMessage(long start, int count) {
|
private String buildStatsMessage(long start, int count) {
|
||||||
double duration = ((double) (System.currentTimeMillis() - start)) / 1000D;
|
double duration = ((double) (System.currentTimeMillis() - start)) / 1000.0;
|
||||||
return "Logging [Total queries sent: " + count + ", Queries per second: " + format.format(((double) count) / duration)
|
return "Logging [Total queries sent: " + count + ", Queries per second: " + format.format(((double) count) / duration)
|
||||||
+ ", Avg. Query Time: " + format.format(duration / ((double) count)) + "s]";
|
+ ", Avg. Query Time: " + format.format(duration / ((double) count)) + "s]";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package enginuity.logger.ui.handler;
|
package enginuity.logger.ui.handler;
|
||||||
|
|
||||||
|
import enginuity.logger.definition.ConvertorUpdateListener;
|
||||||
import enginuity.logger.definition.EcuData;
|
import enginuity.logger.definition.EcuData;
|
||||||
import enginuity.logger.definition.EcuDataConvertor;
|
import enginuity.logger.definition.EcuDataConvertor;
|
||||||
|
|
||||||
|
@ -10,7 +11,7 @@ import static java.util.Collections.synchronizedMap;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public final class DashboardUpdateHandler implements DataUpdateHandler {
|
public final class DashboardUpdateHandler implements DataUpdateHandler, ConvertorUpdateListener {
|
||||||
private final JPanel dashboardPanel;
|
private final JPanel dashboardPanel;
|
||||||
private final Map<EcuData, JLabel> gauges = synchronizedMap(new HashMap<EcuData, JLabel>());
|
private final Map<EcuData, JLabel> gauges = synchronizedMap(new HashMap<EcuData, JLabel>());
|
||||||
|
|
||||||
|
@ -44,6 +45,9 @@ public final class DashboardUpdateHandler implements DataUpdateHandler {
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void notifyConvertorUpdate(EcuData updatedEcuData) {
|
||||||
|
}
|
||||||
|
|
||||||
private void repaintDashboardPanel() {
|
private void repaintDashboardPanel() {
|
||||||
dashboardPanel.doLayout();
|
dashboardPanel.doLayout();
|
||||||
dashboardPanel.repaint();
|
dashboardPanel.repaint();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package enginuity.logger.ui.handler;
|
package enginuity.logger.ui.handler;
|
||||||
|
|
||||||
import enginuity.Settings;
|
import enginuity.Settings;
|
||||||
|
import enginuity.logger.definition.ConvertorUpdateListener;
|
||||||
import enginuity.logger.definition.EcuData;
|
import enginuity.logger.definition.EcuData;
|
||||||
import enginuity.logger.definition.EcuDataConvertor;
|
import enginuity.logger.definition.EcuDataConvertor;
|
||||||
import enginuity.logger.definition.EcuSwitch;
|
import enginuity.logger.definition.EcuSwitch;
|
||||||
|
@ -14,7 +15,7 @@ import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public final class FileUpdateHandler implements DataUpdateHandler {
|
public final class FileUpdateHandler implements DataUpdateHandler, ConvertorUpdateListener {
|
||||||
private final FileLogger fileLogger;
|
private final FileLogger fileLogger;
|
||||||
private final List<EcuData> ecuDatas = synchronizedList(new LinkedList<EcuData>());
|
private final List<EcuData> ecuDatas = synchronizedList(new LinkedList<EcuData>());
|
||||||
private Line currentLine = new Line(ecuDatas);
|
private Line currentLine = new Line(ecuDatas);
|
||||||
|
@ -53,6 +54,9 @@ public final class FileUpdateHandler implements DataUpdateHandler {
|
||||||
fileLogger.stop();
|
fileLogger.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void notifyConvertorUpdate(EcuData updatedEcuData) {
|
||||||
|
}
|
||||||
|
|
||||||
private void checkStartStopFileLogging(EcuData ecuData, int value) {
|
private void checkStartStopFileLogging(EcuData ecuData, int value) {
|
||||||
if (ecuData instanceof EcuSwitch) {
|
if (ecuData instanceof EcuSwitch) {
|
||||||
EcuSwitch ecuSwitch = (EcuSwitch) ecuData;
|
EcuSwitch ecuSwitch = (EcuSwitch) ecuData;
|
||||||
|
@ -103,7 +107,7 @@ public final class FileUpdateHandler implements DataUpdateHandler {
|
||||||
|
|
||||||
public String values() {
|
public String values() {
|
||||||
StringBuilder buffer = new StringBuilder();
|
StringBuilder buffer = new StringBuilder();
|
||||||
buffer.append(lastTimestamp / 1000.0);
|
buffer.append(lastTimestamp);
|
||||||
for (EcuData ecuData : ecuDataValues.keySet()) {
|
for (EcuData ecuData : ecuDataValues.keySet()) {
|
||||||
String value = ecuDataValues.get(ecuData);
|
String value = ecuDataValues.get(ecuData);
|
||||||
buffer.append(DELIMITER).append(value);
|
buffer.append(DELIMITER).append(value);
|
||||||
|
@ -113,9 +117,9 @@ public final class FileUpdateHandler implements DataUpdateHandler {
|
||||||
|
|
||||||
public String headers() {
|
public String headers() {
|
||||||
StringBuilder buffer = new StringBuilder();
|
StringBuilder buffer = new StringBuilder();
|
||||||
buffer.append("Timestamp");
|
buffer.append("Time");
|
||||||
for (EcuData ecuData : ecuDataValues.keySet()) {
|
for (EcuData ecuData : ecuDataValues.keySet()) {
|
||||||
buffer.append(DELIMITER).append(ecuData.getName());
|
buffer.append(DELIMITER).append(ecuData.getName()).append(" (").append(ecuData.getSelectedConvertor().getUnits()).append(')');
|
||||||
}
|
}
|
||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package enginuity.logger.ui.handler;
|
package enginuity.logger.ui.handler;
|
||||||
|
|
||||||
|
import enginuity.logger.definition.ConvertorUpdateListener;
|
||||||
import enginuity.logger.definition.EcuData;
|
import enginuity.logger.definition.EcuData;
|
||||||
import static enginuity.logger.ui.SpringUtilities.makeCompactGrid;
|
import static enginuity.logger.ui.SpringUtilities.makeCompactGrid;
|
||||||
import org.jfree.chart.ChartFactory;
|
import org.jfree.chart.ChartFactory;
|
||||||
|
@ -15,7 +16,7 @@ import static java.util.Collections.synchronizedMap;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public final class GraphUpdateHandler implements DataUpdateHandler {
|
public final class GraphUpdateHandler implements DataUpdateHandler, ConvertorUpdateListener {
|
||||||
private final JPanel graphPanel;
|
private final JPanel graphPanel;
|
||||||
private final Map<EcuData, ChartPanel> chartMap = synchronizedMap(new HashMap<EcuData, ChartPanel>());
|
private final Map<EcuData, ChartPanel> chartMap = synchronizedMap(new HashMap<EcuData, ChartPanel>());
|
||||||
private final Map<EcuData, XYSeries> seriesMap = synchronizedMap(new HashMap<EcuData, XYSeries>());
|
private final Map<EcuData, XYSeries> seriesMap = synchronizedMap(new HashMap<EcuData, XYSeries>());
|
||||||
|
@ -31,8 +32,8 @@ public final class GraphUpdateHandler implements DataUpdateHandler {
|
||||||
//TODO: Make chart max item count configurable via settings
|
//TODO: Make chart max item count configurable via settings
|
||||||
series.setMaximumItemCount(100);
|
series.setMaximumItemCount(100);
|
||||||
final XYDataset xyDataset = new XYSeriesCollection(series);
|
final XYDataset xyDataset = new XYSeriesCollection(series);
|
||||||
final JFreeChart chart = ChartFactory.createXYLineChart(ecuData.getName(), "Time (sec)", ecuData.getName()
|
final JFreeChart chart = ChartFactory.createXYLineChart(ecuData.getName(), "Time (sec)", buildRangeAxisTitle(ecuData), xyDataset,
|
||||||
+ " (" + ecuData.getSelectedConvertor().getUnits() + ")", xyDataset, VERTICAL, false, true, false);
|
VERTICAL, false, true, false);
|
||||||
ChartPanel chartPanel = new ChartPanel(chart, false, true, true, true, true);
|
ChartPanel chartPanel = new ChartPanel(chart, false, true, true, true, true);
|
||||||
graphPanel.add(chartPanel);
|
graphPanel.add(chartPanel);
|
||||||
seriesMap.put(ecuData, series);
|
seriesMap.put(ecuData, series);
|
||||||
|
@ -58,6 +59,16 @@ public final class GraphUpdateHandler implements DataUpdateHandler {
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void notifyConvertorUpdate(EcuData updatedEcuData) {
|
||||||
|
seriesMap.get(updatedEcuData).clear();
|
||||||
|
JFreeChart chart = chartMap.get(updatedEcuData).getChart();
|
||||||
|
chart.getXYPlot().getRangeAxis().setLabel(buildRangeAxisTitle(updatedEcuData));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildRangeAxisTitle(EcuData ecuData) {
|
||||||
|
return ecuData.getName() + " (" + ecuData.getSelectedConvertor().getUnits() + ")";
|
||||||
|
}
|
||||||
|
|
||||||
private void repaintGraphPanel(int parentRepaintLevel) {
|
private void repaintGraphPanel(int parentRepaintLevel) {
|
||||||
if (loggerCount < parentRepaintLevel) {
|
if (loggerCount < parentRepaintLevel) {
|
||||||
graphPanel.doLayout();
|
graphPanel.doLayout();
|
||||||
|
@ -70,4 +81,5 @@ public final class GraphUpdateHandler implements DataUpdateHandler {
|
||||||
graphPanel.getParent().repaint();
|
graphPanel.getParent().repaint();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
package enginuity.logger.ui.handler;
|
package enginuity.logger.ui.handler;
|
||||||
|
|
||||||
|
import enginuity.logger.definition.ConvertorUpdateListener;
|
||||||
import enginuity.logger.definition.EcuData;
|
import enginuity.logger.definition.EcuData;
|
||||||
import enginuity.logger.ui.LoggerDataTableModel;
|
import enginuity.logger.ui.LoggerDataTableModel;
|
||||||
|
|
||||||
public final class LiveDataUpdateHandler implements DataUpdateHandler {
|
public final class LiveDataUpdateHandler implements DataUpdateHandler, ConvertorUpdateListener {
|
||||||
private final LoggerDataTableModel dataTableModel;
|
private final LoggerDataTableModel dataTableModel;
|
||||||
|
|
||||||
public LiveDataUpdateHandler(LoggerDataTableModel dataTableModel) {
|
public LiveDataUpdateHandler(LoggerDataTableModel dataTableModel) {
|
||||||
|
@ -28,4 +29,7 @@ public final class LiveDataUpdateHandler implements DataUpdateHandler {
|
||||||
public void cleanUp() {
|
public void cleanUp() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void notifyConvertorUpdate(EcuData updatedEcuData) {
|
||||||
|
dataTableModel.fireTableDataChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue