From f20a040e45999e4ce71fbd22fc63456ad1beea5f Mon Sep 17 00:00:00 2001 From: kascade Date: Mon, 27 Aug 2007 12:35:56 +0000 Subject: [PATCH] started adding some test log playback stuff to logger git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@787 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d --- src/enginuity/logger/ecu/EcuLogger.java | 26 ++++++++ .../ecu/ui/playback/PlaybackManager.java | 19 ++++++ .../ecu/ui/playback/PlaybackManagerImpl.java | 64 +++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 src/enginuity/logger/ecu/ui/playback/PlaybackManager.java create mode 100644 src/enginuity/logger/ecu/ui/playback/PlaybackManagerImpl.java diff --git a/src/enginuity/logger/ecu/EcuLogger.java b/src/enginuity/logger/ecu/EcuLogger.java index f866244d..ec49d1ad 100644 --- a/src/enginuity/logger/ecu/EcuLogger.java +++ b/src/enginuity/logger/ecu/EcuLogger.java @@ -120,6 +120,7 @@ import enginuity.logger.ecu.ui.handler.table.TableUpdateHandler; import enginuity.logger.ecu.ui.paramlist.ParameterListTable; import enginuity.logger.ecu.ui.paramlist.ParameterListTableModel; import enginuity.logger.ecu.ui.paramlist.ParameterRow; +import enginuity.logger.ecu.ui.playback.PlaybackManagerImpl; import enginuity.logger.ecu.ui.swing.menubar.EcuLoggerMenuBar; import enginuity.logger.ecu.ui.swing.menubar.action.ToggleButtonAction; import enginuity.logger.ecu.ui.tab.maf.MafTab; @@ -127,6 +128,7 @@ import enginuity.logger.ecu.ui.tab.maf.MafTabImpl; import static enginuity.util.ParamChecker.checkNotNull; import static enginuity.util.ParamChecker.isNullOrEmpty; import enginuity.util.SettingsManagerImpl; +import enginuity.util.ThreadUtil; import static enginuity.util.ThreadUtil.runAsDaemon; import static enginuity.util.ThreadUtil.sleep; import org.apache.log4j.Logger; @@ -190,6 +192,8 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC private JToggleButton logToFileButton; private List externalDataSources; + private List ecuParams; + public EcuLogger(Settings settings) { super(ENGINUITY_ECU_LOGGER_TITLE); construct(settings); @@ -482,6 +486,7 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC dashboardTabParamListTableModel.addParam(ecuParam, false); } mafTab.setEcuParams(ecuParams); + this.ecuParams = new ArrayList(ecuParams); } private void loadEcuSwitches(List ecuSwitches) { @@ -687,10 +692,31 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC private JPanel buildControlToolbar() { JPanel controlPanel = new JPanel(new BorderLayout()); controlPanel.add(buildPortsComboBox(), WEST); + //TODO: Finish log playback stuff... + //controlPanel.add(buildPlaybackControls(), CENTER); controlPanel.add(buildStatusIndicator(), EAST); return controlPanel; } + private Component buildPlaybackControls() { + JButton playButton = new JButton("Play"); + playButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent actionEvent) { + ThreadUtil.runAsDaemon(new Runnable() { + public void run() { + PlaybackManagerImpl playbackManager = new PlaybackManagerImpl(ecuParams, liveDataUpdateHandler, graphUpdateHandler, dashboardUpdateHandler, mafUpdateHandler, + TableUpdateHandler.getInstance()); + playbackManager.load(new File("foo.csv")); + playbackManager.play(); + } + }); + } + }); + JPanel panel = new JPanel(); + panel.add(playButton); + return panel; + } + private Component buildLogToFileButton() { logToFileButton = new JToggleButton("Log to file"); logToFileButton.setToolTipText("Start/stop file logging (F1)"); diff --git a/src/enginuity/logger/ecu/ui/playback/PlaybackManager.java b/src/enginuity/logger/ecu/ui/playback/PlaybackManager.java new file mode 100644 index 00000000..8ff70974 --- /dev/null +++ b/src/enginuity/logger/ecu/ui/playback/PlaybackManager.java @@ -0,0 +1,19 @@ +package enginuity.logger.ecu.ui.playback; + +import java.io.File; + +public interface PlaybackManager { + void load(File file); + + void play(); + + void play(int speed); + + void step(int increment); + + void pause(); + + void stop(); + + void reset(); +} diff --git a/src/enginuity/logger/ecu/ui/playback/PlaybackManagerImpl.java b/src/enginuity/logger/ecu/ui/playback/PlaybackManagerImpl.java new file mode 100644 index 00000000..1d1dd0f0 --- /dev/null +++ b/src/enginuity/logger/ecu/ui/playback/PlaybackManagerImpl.java @@ -0,0 +1,64 @@ +package enginuity.logger.ecu.ui.playback; + +import java.io.File; +import java.util.List; +import enginuity.logger.ecu.comms.query.Response; +import enginuity.logger.ecu.comms.query.ResponseImpl; +import enginuity.logger.ecu.definition.LoggerData; +import enginuity.logger.ecu.ui.handler.DataUpdateHandler; +import static enginuity.util.ThreadUtil.sleep; + +//TODO: Finish me. +public final class PlaybackManagerImpl implements PlaybackManager { + private final List loggerDatas; + private final DataUpdateHandler[] dataUpdateHandlers; + + public PlaybackManagerImpl(List loggerDatas, DataUpdateHandler... dataUpdateHandlers) { + this.loggerDatas = loggerDatas; + this.dataUpdateHandlers = dataUpdateHandlers; + } + + public void load(File file) { + // TODO: Finish me! + for (DataUpdateHandler handler : dataUpdateHandlers) { + handler.registerData(loggerDatas.get(10)); + handler.registerData(loggerDatas.get(20)); + handler.registerData(loggerDatas.get(30)); + } + } + + public void play() { + double d = 0.0; + while (true) { + for (DataUpdateHandler handler : dataUpdateHandlers) { + Response response = new ResponseImpl(); + response.setDataValue(loggerDatas.get(10), d); + response.setDataValue(loggerDatas.get(20), d); + response.setDataValue(loggerDatas.get(30), d); + handler.handleDataUpdate(response); + d += 100.0; + } + sleep(100L); + } + } + + public void play(int speed) { + throw new UnsupportedOperationException(); + } + + public void step(int increment) { + throw new UnsupportedOperationException(); + } + + public void pause() { + throw new UnsupportedOperationException(); + } + + public void stop() { + throw new UnsupportedOperationException(); + } + + public void reset() { + throw new UnsupportedOperationException(); + } +}