mirror of https://github.com/rusefi/RomRaider.git
updated logger control bar with status indicator
git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@376 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d
This commit is contained in:
parent
ed17358051
commit
f019873a8f
|
@ -7,6 +7,7 @@ import enginuity.logger.definition.EcuDataLoaderImpl;
|
|||
import enginuity.logger.definition.EcuParameter;
|
||||
import enginuity.logger.definition.EcuSwitch;
|
||||
import enginuity.logger.io.serial.SerialPortRefresher;
|
||||
import enginuity.logger.ui.ControllerButton;
|
||||
import enginuity.logger.ui.DataRegistrationBroker;
|
||||
import enginuity.logger.ui.DataRegistrationBrokerImpl;
|
||||
import enginuity.logger.ui.EcuDataComparator;
|
||||
|
@ -17,6 +18,7 @@ import enginuity.logger.ui.ParameterListTable;
|
|||
import enginuity.logger.ui.ParameterListTableModel;
|
||||
import enginuity.logger.ui.ParameterRow;
|
||||
import enginuity.logger.ui.SerialPortComboBox;
|
||||
import enginuity.logger.ui.StatusIndicator;
|
||||
import enginuity.logger.ui.UserProfile;
|
||||
import enginuity.logger.ui.UserProfileImpl;
|
||||
import enginuity.logger.ui.UserProfileItem;
|
||||
|
@ -354,43 +356,62 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
|||
}
|
||||
|
||||
private JPanel buildControlToolbar() {
|
||||
JPanel controlPanel = new JPanel(new FlowLayout());
|
||||
controlPanel.add(buildStartButton());
|
||||
controlPanel.add(buildStopButton());
|
||||
JPanel controlPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 50, 0));
|
||||
controlPanel.add(buildPortsComboBox());
|
||||
controlPanel.add(buildStartStopButtons());
|
||||
controlPanel.add(buildStatusIndicator());
|
||||
return controlPanel;
|
||||
}
|
||||
|
||||
private JComboBox buildPortsComboBox() {
|
||||
private JPanel buildPortsComboBox() {
|
||||
portsComboBox.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
settings.setLoggerPort((String) portsComboBox.getSelectedItem());
|
||||
stopLogging();
|
||||
}
|
||||
});
|
||||
return portsComboBox;
|
||||
JPanel comboBoxPanel = new JPanel(new FlowLayout());
|
||||
comboBoxPanel.add(new JLabel("Select COM Port:"));
|
||||
comboBoxPanel.add(portsComboBox);
|
||||
return comboBoxPanel;
|
||||
}
|
||||
|
||||
private JButton buildStartButton() {
|
||||
JButton startButton = new JButton("Start");
|
||||
private JPanel buildStartStopButtons() {
|
||||
JPanel buttonPanel = new JPanel(new FlowLayout());
|
||||
buttonPanel.add(buildStartButton());
|
||||
buttonPanel.add(buildStopButton());
|
||||
return buttonPanel;
|
||||
}
|
||||
|
||||
private ControllerButton buildStartButton() {
|
||||
ControllerButton startButton = new ControllerButton("Start", true);
|
||||
startButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
startLogging();
|
||||
}
|
||||
});
|
||||
controller.addListener(startButton);
|
||||
return startButton;
|
||||
}
|
||||
|
||||
private JButton buildStopButton() {
|
||||
JButton stopButton = new JButton("Stop");
|
||||
private ControllerButton buildStopButton() {
|
||||
ControllerButton stopButton = new ControllerButton("Stop", false);
|
||||
stopButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
stopLogging();
|
||||
}
|
||||
});
|
||||
controller.addListener(stopButton);
|
||||
return stopButton;
|
||||
}
|
||||
|
||||
private StatusIndicator buildStatusIndicator() {
|
||||
StatusIndicator statusIndicator = new StatusIndicator();
|
||||
controller.addListener(statusIndicator);
|
||||
fileUpdateHandler.addListener(statusIndicator);
|
||||
return statusIndicator;
|
||||
}
|
||||
|
||||
private JComponent buildDataTab() {
|
||||
return new JScrollPane(new JTable(dataTableModel), VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER);
|
||||
}
|
||||
|
@ -400,7 +421,6 @@ public final class EcuLogger extends JFrame implements WindowListener, PropertyC
|
|||
}
|
||||
|
||||
private JComponent buildDashboardTab() {
|
||||
//return new JScrollPane(dashboardPanel, VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER);
|
||||
return dashboardPanel;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ import java.util.TreeSet;
|
|||
|
||||
public final class LoggerControllerImpl implements LoggerController {
|
||||
private final QueryManager queryManager;
|
||||
private List<ControllerListener> listeners = Collections.synchronizedList(new ArrayList<ControllerListener>());
|
||||
private final List<ControllerListener> listeners = Collections.synchronizedList(new ArrayList<ControllerListener>());
|
||||
private boolean started = false;
|
||||
|
||||
public LoggerControllerImpl(Settings settings, MessageListener messageListener) {
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package enginuity.logger.ui;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public final class ControllerButton extends JButton implements ControllerListener {
|
||||
private final boolean enabledOnInit;
|
||||
|
||||
public ControllerButton(String string, boolean enabledOnInit) {
|
||||
super(string);
|
||||
this.enabledOnInit = enabledOnInit;
|
||||
setEnabled(enabledOnInit);
|
||||
}
|
||||
|
||||
public void start() {
|
||||
setEnabled(!enabledOnInit);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
setEnabled(enabledOnInit);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
package enginuity.logger.ui;
|
||||
|
||||
public interface FileLoggerListener {
|
||||
|
||||
void setLoggingToFile(boolean loggingToFile);
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package enginuity.logger.ui;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import static java.awt.BorderLayout.WEST;
|
||||
|
||||
public final class StatusIndicator extends JPanel implements ControllerListener, FileLoggerListener {
|
||||
private final JLabel statusLabel = new JLabel();
|
||||
private static final String TEXT_LOGGING = "Logging...";
|
||||
private static final String TEXT_STOPPED = "Stopped.";
|
||||
private static final String TEXT_FILE_LOGGING = "Logging to file...";
|
||||
private static final ImageIcon ICON_FILE_LOGGING = new ImageIcon("./graphics/logger_green.png");
|
||||
private static final ImageIcon ICON_STOPPED = new ImageIcon("./graphics/logger_red.png");
|
||||
private static final ImageIcon ICON_LOGGING = new ImageIcon("./graphics/logger_blue.png");
|
||||
|
||||
public StatusIndicator() {
|
||||
setLayout(new BorderLayout());
|
||||
add(statusLabel, WEST);
|
||||
stop();
|
||||
}
|
||||
|
||||
public void start() {
|
||||
statusLabel.setText(TEXT_LOGGING);
|
||||
statusLabel.setIcon(ICON_LOGGING);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
statusLabel.setText(TEXT_STOPPED);
|
||||
statusLabel.setIcon(ICON_STOPPED);
|
||||
}
|
||||
|
||||
public void setLoggingToFile(boolean loggingToFile) {
|
||||
if (loggingToFile) {
|
||||
fileLogging();
|
||||
} else {
|
||||
start();
|
||||
}
|
||||
}
|
||||
|
||||
private void fileLogging() {
|
||||
statusLabel.setText(TEXT_FILE_LOGGING);
|
||||
statusLabel.setIcon(ICON_FILE_LOGGING);
|
||||
}
|
||||
}
|
|
@ -7,16 +7,21 @@ import enginuity.logger.definition.EcuDataConvertor;
|
|||
import enginuity.logger.definition.EcuSwitch;
|
||||
import enginuity.logger.io.file.FileLogger;
|
||||
import enginuity.logger.io.file.FileLoggerImpl;
|
||||
import enginuity.logger.ui.FileLoggerListener;
|
||||
import static enginuity.util.ParamChecker.checkNotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import static java.util.Collections.synchronizedMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public final class FileUpdateHandler implements DataUpdateHandler, ConvertorUpdateListener {
|
||||
private final FileLogger fileLogger;
|
||||
private final Map<EcuData, Integer> ecuDatas = synchronizedMap(new LinkedHashMap<EcuData, Integer>());
|
||||
private final List<FileLoggerListener> listeners = Collections.synchronizedList(new ArrayList<FileLoggerListener>());
|
||||
private Line currentLine = new Line(ecuDatas.keySet());
|
||||
|
||||
public FileUpdateHandler(Settings settings) {
|
||||
|
@ -24,6 +29,11 @@ public final class FileUpdateHandler implements DataUpdateHandler, ConvertorUpda
|
|||
fileLogger = new FileLoggerImpl(settings);
|
||||
}
|
||||
|
||||
public void addListener(FileLoggerListener listener) {
|
||||
checkNotNull(listener, "listener");
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
public synchronized void registerData(EcuData ecuData) {
|
||||
if (ecuDatas.keySet().contains(ecuData)) {
|
||||
ecuDatas.put(ecuData, ecuDatas.get(ecuData) + 1);
|
||||
|
@ -76,9 +86,11 @@ public final class FileUpdateHandler implements DataUpdateHandler, ConvertorUpda
|
|||
if (ecuSwitch.isFileLogController()) {
|
||||
if (value == 1 && !fileLogger.isStarted()) {
|
||||
fileLogger.start();
|
||||
notifyListeners(true);
|
||||
writeHeaders();
|
||||
} else if (value == 0 && fileLogger.isStarted()) {
|
||||
fileLogger.stop();
|
||||
notifyListeners(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -90,6 +102,12 @@ public final class FileUpdateHandler implements DataUpdateHandler, ConvertorUpda
|
|||
}
|
||||
}
|
||||
|
||||
private void notifyListeners(boolean loggingToFile) {
|
||||
for (FileLoggerListener listener : listeners) {
|
||||
listener.setLoggingToFile(loggingToFile);
|
||||
}
|
||||
}
|
||||
|
||||
private static final class Line {
|
||||
private static final char DELIMITER = ',';
|
||||
private final Map<EcuData, String> ecuDataValues;
|
||||
|
|
|
@ -1,19 +1,14 @@
|
|||
package enginuity.logger.xml;
|
||||
|
||||
import java.beans.XMLDecoder;
|
||||
import java.beans.XMLEncoder;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import javax.swing.JButton;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import javax.xml.parsers.SAXParser;
|
||||
import javax.xml.parsers.SAXParserFactory;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
||||
public final class SaxParserFactory {
|
||||
|
||||
|
@ -27,7 +22,7 @@ public final class SaxParserFactory {
|
|||
parserFactory.setXIncludeAware(false);
|
||||
return parserFactory.newSAXParser();
|
||||
}
|
||||
|
||||
|
||||
public static void main(String args[]) {
|
||||
try {
|
||||
SAXParser parser = SaxParserFactory.getSaxParser();
|
||||
|
@ -35,7 +30,7 @@ public final class SaxParserFactory {
|
|||
System.out.println(b.available());
|
||||
parser.parse(b, new DefaultHandler());
|
||||
System.out.println(parser.isValidating());
|
||||
|
||||
|
||||
} catch (Exception ex) {
|
||||
System.err.println(ex);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue