diff --git a/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitConvertorPanel.java b/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitConvertorPanel.java new file mode 100644 index 00000000..345fc3e0 --- /dev/null +++ b/src/main/java/com/romraider/logger/external/phidget/interfacekit/plugin/IntfKitConvertorPanel.java @@ -0,0 +1,155 @@ +package com.romraider.logger.external.phidget.interfacekit.plugin; + +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.List; + +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableColumn; + +import com.romraider.logger.ecu.EcuLogger; +import com.romraider.logger.ecu.ui.swing.tools.tablemodels.renderers.CentreRenderer; + +public class IntfKitConvertorPanel extends JDialog { + private static final long serialVersionUID = -4785866140260703021L; + private final int IK_WIDTH = 600; + private final int IK_HEIGHT = 300; + private JTable table; + + public IntfKitConvertorPanel( + EcuLogger logger, List> ikData) { + + super(logger, true); + setTitle("Phidget InterfaceKit User Defined Convertors"); + setBounds( + (logger.getWidth() > IK_WIDTH) ? + logger.getX() + (logger.getWidth() - IK_WIDTH) / 2 : 0, + (logger.getHeight() > IK_HEIGHT) ? + logger.getY() + ((logger.getHeight() - IK_HEIGHT) / 2) : 0, + IK_WIDTH, + IK_HEIGHT); + getContentPane().setLayout(new BorderLayout()); + final JScrollPane scrollPane = new JScrollPane(); + getContentPane().add(scrollPane, BorderLayout.CENTER); + + final IntfKitTableModel model = new IntfKitTableModel(); + model.setIkRowData(ikData); + table = new JTable(model) { + private static final long serialVersionUID = -6967080466164619695L; + public final String getToolTipText(MouseEvent e) { + String tip = null; + final int colIndex = columnAtPoint(e.getPoint()); + final int column = convertColumnIndexToModel(colIndex); + switch (column) { + case 0: + tip = "Sensor module serial number and input number"; + break; + case 1: + tip = "Equation used to convert raw data to real value"; + break; + case 2: + tip = "Format of real value for display and logging"; + break; + case 3: + tip = "Units of measure of the real value"; + break; + case 4: + tip = "Minimum real value expected"; + break; + case 5: + tip = "Maximum real value expected"; + break; + case 6: + tip = "Tick mark step for Gauge Tab display, " + + "typically (max-min)/10"; + break; + default: + tip = super.getToolTipText(e); + } + return tip; + } + }; + + setTableBehaviour(table); + scrollPane.setViewportView(table); + + final JPanel buttonPane = new JPanel(); + buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); + getContentPane().add(buttonPane, BorderLayout.SOUTH); + + final JButton applyButton = new JButton("Apply"); + applyButton.setToolTipText("Apply current convertor settings then exit"); + applyButton.setMnemonic(KeyEvent.VK_A); + applyButton.addActionListener(new ActionListener() { + @Override + public final void actionPerformed(ActionEvent actionEvent) { + closeDialog(); + } + }); + buttonPane.add(applyButton); + getRootPane().setDefaultButton(applyButton); + + final JButton cancelButton = new JButton("Cancel"); + cancelButton.setToolTipText("Cancel/exit without applying changes"); + cancelButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + table = null; + closeDialog(); + } + }); + buttonPane.add(cancelButton); + } + + public final void displayPanel() { + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent we) { + table = null; + closeDialog(); + } + }); + setVisible(true); + } + + public final JTable getTable() { + return table; + } + + private final void setTableBehaviour(JTable table) { + table.setBorder(null); + table.setFillsViewportHeight(false); + table.setColumnSelectionAllowed(false); + table.setRowSelectionAllowed(false); + + final JTableHeader th = table.getTableHeader(); + th.setReorderingAllowed(false); + th.setDefaultRenderer(new CentreRenderer(table)); + + TableColumn column = null; + for (int i = 0; i < table.getColumnCount(); i++) { + column = table.getColumnModel().getColumn(i); + if (i == 0) { + column.setPreferredWidth(220); + } + else { + column.setPreferredWidth(100); + } + } + } + + private final void closeDialog() { + setVisible(false); + dispose(); + } +}