/** * KKMulticopterFlashTool, a avrdude GUI for flashing KK boards and other * equipment. * Copyright (C) 2011 Christian Moll * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package de.lazyzero.kkMulticopterFlashTool.gui; import static lu.tudor.santec.i18n.Translatrix._; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.TitledBorder; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import de.lazyzero.kkMulticopterFlashTool.gui.widgets.GyroEvaluationPanel; import de.lazyzero.kkMulticopterFlashTool.gui.widgets.PotEvaluationPanel; import de.lazyzero.kkMulticopterFlashTool.gui.widgets.ReceiverEvaluationPanel; import de.lazyzero.kkMulticopterFlashTool.utils.Icons; import de.lazyzero.kkMulticopterFlashTool.utils.SendLogFile; public class TestEvaluationPanel extends JPanel implements ActionListener, SeriealListener{ private static final long serialVersionUID = 1L; private CellConstraints cc; private JLabel testFirmwareLabel; private JTextField testFirmwareVersionTextField; private JLabel authorLabel; private JTextField authorTextField; private JLabel submitDescriptionLabel; private JButton submitButton; private JLabel instructionLabel; private JButton instructionButton; private ReceiverEvaluationPanel receiverEvaluationPanel; private PotEvaluationPanel potEvaluationPanel; private GyroEvaluationPanel gyroEvaluationPanel; private LinkedHashMap<String, String> data; public TestEvaluationPanel() { initGUI(); } private void initGUI() { // create the CellContraints cc = new CellConstraints(); // create the Layout for Panel this String panelColumns = "3dlu,pref,3dlu,pref,3dlu,pref:grow,3dlu,pref:grow,3dlu,pref:grow,3dlu"; String panelRows = "3dlu,pref,3dlu,pref,3dlu,pref,3dlu,pref,3dlu,pref,3dlu,pref,3dlu,fill:pref,3dlu"; FormLayout panelLayout = new FormLayout(panelColumns, panelRows); this.setLayout(panelLayout); this.setBorder(new TitledBorder(_("TestEvaluationPanel.title"))); testFirmwareLabel = new JLabel(_("TestEvaluationPanel.testFirmwareLabel") + ":"); testFirmwareVersionTextField = new JTextField(); testFirmwareVersionTextField.setEditable(false); testFirmwareVersionTextField.setHorizontalAlignment(JTextField.RIGHT); authorLabel = new JLabel(_("TestEvaluationPanel.authorLabel") + ":"); authorTextField = new JTextField(); authorTextField.setEditable(false); authorTextField.setHorizontalAlignment(JTextField.RIGHT); submitDescriptionLabel = new JLabel(_("TestEvaluationPanel.submitDescriptionLabel")); submitButton = new JButton(_("submit"), Icons.getIcon16(Icons.MAIL)); submitButton.addActionListener(this); instructionLabel = new JLabel(_("TestEvaluationPanel.instructionLabel")); instructionButton = new JButton(_("TestEvaluationPanel.instructionButton"), Icons.getIcon16(Icons.INFO)); instructionButton.addActionListener(this); receiverEvaluationPanel = new ReceiverEvaluationPanel(); potEvaluationPanel = new PotEvaluationPanel(); gyroEvaluationPanel = new GyroEvaluationPanel(); this.add(testFirmwareLabel, cc.xy(2, 2)); this.add(testFirmwareVersionTextField, cc.xy(4, 2)); this.add(authorLabel, cc.xy(2, 4)); this.add(authorTextField, cc.xy(4, 4)); this.add(submitDescriptionLabel, cc.xyw(2, 6, 3)); this.add(submitButton, cc.xy(4, 8)); this.add(instructionLabel, cc.xyw(2, 10, 3)); this.add(instructionButton, cc.xy(4, 12)); this.add(receiverEvaluationPanel, cc.xywh(6, 2, 1, 13)); this.add(potEvaluationPanel, cc.xywh(8, 2, 1, 13)); this.add(gyroEvaluationPanel, cc.xywh(10, 2, 1, 13)); } @Override public void actionPerformed(ActionEvent event) { if (event.getSource().equals(instructionButton)) { kkMenu.openURL("http://www.lazyzero.de/en/modellbau/kkmulticopterflashtool/manual#hardware_test"); } else if (event.getSource().equals(submitButton)) { SendLogFile slf = new SendLogFile(); if (data != null) { slf.sendMail(data); } else { JOptionPane.showMessageDialog(this, _("TestEvaluationPanel.measureFirstMessage")); } } } @Override public void dataReceived(LinkedHashMap<String, String> data) { this.data = data; Set<String> keys = data.keySet(); for (Iterator<String> iterator = keys.iterator(); iterator.hasNext();) { String key = iterator.next(); if (key.equals("Author")) authorTextField.setText(data.get(key).replace("_", " ")); else if (key.equals("version")) testFirmwareVersionTextField.setText(data.get(key)); else if (key.equals("rxRoll")) receiverEvaluationPanel.setRoll(data.get(key)); else if (key.equals("rxPitch")) receiverEvaluationPanel.setPitch(data.get(key)); else if (key.equals("rxColl")) receiverEvaluationPanel.setThrottle(data.get(key)); else if (key.equals("rxYaw")) receiverEvaluationPanel.setYaw(data.get(key)); else if (key.equals("adcRollPot")) potEvaluationPanel.setRollPot(data.get(key)); else if (key.equals("adcPitchPot")) potEvaluationPanel.setPitchPot(data.get(key)); else if (key.equals("adcYawPot")) potEvaluationPanel.setYawPot(data.get(key)); else if (key.equals("adcRollGyro")) gyroEvaluationPanel.setRollGyro(data.get(key)); else if (key.equals("adcPitchGyro")) gyroEvaluationPanel.setPitchGyro(data.get(key)); else if (key.equals("adcYawGyro")) gyroEvaluationPanel.setYawGyro(data.get(key)); else System.out.println(key + "==" + data.get(key)); } } }