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
This commit is contained in:
kascade 2007-08-27 12:35:56 +00:00
parent 351f5f9989
commit f20a040e45
3 changed files with 109 additions and 0 deletions

View File

@ -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<ExternalDataSource> externalDataSources;
private List<EcuParameter> 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<EcuParameter>(ecuParams);
}
private void loadEcuSwitches(List<EcuSwitch> 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)");

View File

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

View File

@ -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<? extends LoggerData> loggerDatas;
private final DataUpdateHandler[] dataUpdateHandlers;
public PlaybackManagerImpl(List<? extends LoggerData> 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();
}
}