package me.drton.flightplot; import me.drton.jmavlib.log.LogReader; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; /** * User: ton Date: 27.10.13 Time: 17:45 */ public class LogInfo { private JFrame mainFrame; private JPanel mainPanel; private JTable infoTable; private DefaultTableModel infoTableModel; private JTable parametersTable; private DefaultTableModel parametersTableModel; private DateFormat dateFormat; public LogInfo() { mainFrame = new JFrame("Log Info"); mainFrame.setContentPane(mainPanel); mainFrame.pack(); dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); } public JFrame getFrame() { return mainFrame; } public void setVisible(boolean visible) { mainFrame.setVisible(visible); } public void updateInfo(LogReader logReader) { while (infoTableModel.getRowCount() > 0) { infoTableModel.removeRow(0); } while (parametersTableModel.getRowCount() > 0) { parametersTableModel.removeRow(0); } if (logReader != null) { infoTableModel.addRow(new Object[]{"Format", logReader.getFormat()}); infoTableModel.addRow(new Object[]{"System", logReader.getSystemName()}); infoTableModel.addRow(new Object[]{ "Length, s", String.format(Locale.ROOT, "%.3f", logReader.getSizeMicroseconds() * 1e-6)}); String startTimeStr = ""; if (logReader.getUTCTimeReferenceMicroseconds() > 0) { startTimeStr = dateFormat.format( new Date((logReader.getStartMicroseconds() + logReader.getUTCTimeReferenceMicroseconds()) / 1000)) + " UTC"; } infoTableModel.addRow(new Object[]{ "Start Time", startTimeStr}); infoTableModel.addRow(new Object[]{"Updates count", logReader.getSizeUpdates()}); infoTableModel.addRow(new Object[]{"Errors", logReader.getErrors().size()}); Map<String, Object> ver = logReader.getVersion(); infoTableModel.addRow(new Object[]{"Hardware Version", ver.get("HW")}); infoTableModel.addRow(new Object[]{"Firmware Version", ver.get("FW")}); Map<String, Object> parameters = logReader.getParameters(); List<String> keys = new ArrayList<String>(parameters.keySet()); Collections.sort(keys); for (String key : keys) { parametersTableModel.addRow(new Object[]{key, parameters.get(key).toString()}); } } } private void createUIComponents() { // Info table infoTableModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int col) { return false; } }; infoTableModel.addColumn("Property"); infoTableModel.addColumn("Value"); infoTable = new JTable(infoTableModel); // Parameters table parametersTableModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int col) { return false; } }; parametersTableModel.addColumn("Parameter"); parametersTableModel.addColumn("Value"); parametersTable = new JTable(parametersTableModel); } }