/**
* 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.Vector;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
import avr8_burn_o_mat.AVR;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import de.lazyzero.kkMulticopterFlashTool.KKMulticopterFlashTool;
public class ControllerPanel extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
public static final String CONTROLLER_CHANGED = "controllerChanged";
private JComboBox controllerCombobox;
private AVR controller;
private Vector<AVR> controllers = new Vector<AVR>();
private KKMulticopterFlashTool parent;
private CellConstraints cc;
private JLabel controllerLabel;
private JCheckBox forceCheckbox;
public ControllerPanel(KKMulticopterFlashTool parent, Vector<AVR> controllers) {
this.parent = parent;
this.controllers = controllers;
init();
}
private void init() {
//create the CellContraints
cc = new CellConstraints();
// create the Layout for Panel this
String panelColumns = "pref,3dlu,fill:pref, 3dlu, pref";
String panelRows = "pref";
FormLayout panelLayout = new FormLayout(panelColumns, panelRows);
this.setLayout(panelLayout);
this.setBorder(new TitledBorder(_("controller.settings")));
controllerLabel = new JLabel(_("controller"));
controllerCombobox = new JComboBox(controllers);
controllerCombobox.setSelectedIndex(0);
controllerCombobox.setToolTipText(_("controller.tooltip"));
controller = (AVR)controllerCombobox.getSelectedItem();
parent.setController(controller);
controllerCombobox.addActionListener(this);
forceCheckbox = new JCheckBox(_("controller.force"), false);
forceCheckbox.addActionListener(this);
this.add(controllerLabel, cc.xy(1, 1));
this.add(controllerCombobox, cc.xy(3, 1));
// this.add(forceCheckbox, cc.xy(5, 1));
}
@Override
public void actionPerformed(ActionEvent action) {
if (action.getSource().equals(controllerCombobox)){
controller = (AVR)controllerCombobox.getSelectedItem();
parent.setController(controller);
System.out.println("Controller switched to: "+controller.toString());
parent.firePropertyChange(CONTROLLER_CHANGED, 0, 1);
}
if (action.getSource().equals(forceCheckbox)) {
parent.setForceFlashing(forceCheckbox.isSelected());
}
}
public void setController(String name) {
Iterator<AVR> iter = controllers.iterator();
for (; iter.hasNext();) {
AVR avr = iter.next();
if (avr.getName().equals(name)){
controller = avr;
parent.setController(controller);
controllerCombobox.setSelectedItem(controller);
parent.firePropertyChange(CONTROLLER_CHANGED, 0, 1);
}
}
}
}