package org.hwo.pulscounter; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.BorderLayout; import javax.swing.JButton; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import javax.swing.JLabel; import javax.swing.JComboBox; import org.hwo.csv.CSV; import org.hwo.io.SerialPort; import org.hwo.models.TableMapper.TableMapper; import java.awt.Insets; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.prefs.Preferences; import javax.swing.JTable; import javax.swing.JScrollPane; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class PulsCounterWindow extends JFrame{ private JComboBox cbInterfaces; private JTable tCounter; private TableMapper tmCounter; private Preferences prefs; private List counterChannels; List timeBarriers; public PulsCounterWindow() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 732, 350); setTitle("PulsCounter"); GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[]{0, 0}; gridBagLayout.rowHeights = new int[]{0, 0, 0}; gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; gridBagLayout.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; getContentPane().setLayout(gridBagLayout); JPanel panel = new JPanel(); GridBagConstraints gbc_panel = new GridBagConstraints(); gbc_panel.insets = new Insets(0, 0, 5, 0); gbc_panel.fill = GridBagConstraints.BOTH; gbc_panel.gridx = 0; gbc_panel.gridy = 0; getContentPane().add(panel, gbc_panel); GridBagLayout gbl_panel = new GridBagLayout(); gbl_panel.columnWidths = new int[]{0, 0, 0, 0, 0, 0}; gbl_panel.rowHeights = new int[]{0, 0, 0}; gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; gbl_panel.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; panel.setLayout(gbl_panel); JLabel lblNewLabel = new JLabel("Schnittstelle:"); GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5); gbc_lblNewLabel.anchor = GridBagConstraints.WEST; gbc_lblNewLabel.gridx = 0; gbc_lblNewLabel.gridy = 0; panel.add(lblNewLabel, gbc_lblNewLabel); cbInterfaces = new JComboBox(); cbInterfaces.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { System.err.println("Save Pref PORT"); prefs.put("io.port", cbInterfaces.getSelectedItem().toString()); try { prefs.sync(); } catch (Exception e) { System.err.println("Exception: " + e); e.printStackTrace(); } } }); GridBagConstraints gbc_cbInterfaces = new GridBagConstraints(); gbc_cbInterfaces.insets = new Insets(0, 0, 5, 5); gbc_cbInterfaces.fill = GridBagConstraints.HORIZONTAL; gbc_cbInterfaces.gridx = 1; gbc_cbInterfaces.gridy = 0; panel.add(cbInterfaces, gbc_cbInterfaces); JButton btnNewButton = new JButton("Jetzt aktualisieren..."); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { updateCounter(); } }); GridBagConstraints gbc_btnNewButton = new GridBagConstraints(); gbc_btnNewButton.insets = new Insets(0, 0, 5, 5); gbc_btnNewButton.gridx = 2; gbc_btnNewButton.gridy = 0; panel.add(btnNewButton, gbc_btnNewButton); JButton btnTagesdateiSchreiben = new JButton("Tagesdatei schreiben..."); btnTagesdateiSchreiben.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { writeDayFile(); } }); GridBagConstraints gbc_btnTagesdateiSchreiben = new GridBagConstraints(); gbc_btnTagesdateiSchreiben.insets = new Insets(0, 0, 5, 5); gbc_btnTagesdateiSchreiben.gridx = 3; gbc_btnTagesdateiSchreiben.gridy = 0; panel.add(btnTagesdateiSchreiben, gbc_btnTagesdateiSchreiben); JButton btnNewButton_1 = new JButton("New button"); GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints(); gbc_btnNewButton_1.insets = new Insets(0, 0, 5, 0); gbc_btnNewButton_1.gridx = 4; gbc_btnNewButton_1.gridy = 0; panel.add(btnNewButton_1, gbc_btnNewButton_1); JScrollPane scrollPane = new JScrollPane(); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.gridx = 0; gbc_scrollPane.gridy = 1; getContentPane().add(scrollPane, gbc_scrollPane); tCounter = new JTable(); scrollPane.setViewportView(tCounter); initialize(); } private void initialize() { prefs = Preferences.userRoot(); String defaultPort = prefs.get("io.port", "COM1"); for (String portName:SerialPort.getPortNames()) cbInterfaces.addItem(portName); System.err.println("Default Port: " + defaultPort); for (int i=0;i < cbInterfaces.getItemCount();i++) { if (cbInterfaces.getItemAt(i).equals(defaultPort)) cbInterfaces.setSelectedIndex(i); } counterChannels = new ArrayList(); for (int i=0;i<32;i++) counterChannels.add(new CounterChannel( i + 1) ); tmCounter = new TableMapper(CounterChannel.class, tCounter); tmCounter.setRows(counterChannels); tmCounter.getColumnInfo().get(0).setReadOnly(true); tmCounter.getColumnInfo().get(1).setReadOnly(true); tmCounter.getColumnInfo().get(3).setReadOnly(true); timeBarriers = new ArrayList(); timeBarriers.add(new TimeBarrier(01,00)); timeBarriers.add(new TimeBarrier(03,00)); timeBarriers.add(new TimeBarrier(06,00)); } private void updateCounter() { PulsCounterInterface intf = new PulsCounterInterface(cbInterfaces.getSelectedItem().toString()); List values = intf.readCounter(); for (int i=0;i