/**
 * 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.widgets;

import java.awt.Color;
import java.awt.event.FocusListener;

import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.MaskFormatter;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class JNamedIntMenuItem extends JPanel {

	private static final long serialVersionUID = 1L;
	private CellConstraints cc;
	private String label;
	private JLabel marker;
	private JFormattedTextField valueField;
	private MaskFormatter mf;
	private FocusListener listener;

	public JNamedIntMenuItem(String label, FocusListener listener) {
		this.label = label;
		this.listener = listener;
		init();
	}

	private void init() {
		//create the CellContraints
		cc  = new CellConstraints();
		
		// create the Layout for Panel this
		String panelColumns = "pref,3dlu,fill:pref:grow";
		String panelRows = "pref";
		FormLayout panelLayout = new FormLayout(panelColumns, panelRows);
		this.setLayout(panelLayout);
		
		this.marker = new JLabel(label+":");
		this.valueField = new JFormattedTextField();
		if (this.valueField.getBackground().equals(Color.BLACK)) {
			this.valueField.setBackground(Color.WHITE);
		}
		
		try {
		        mf = new MaskFormatter ("##");
		} catch (java.text.ParseException e) {
			
		}
		javax.swing.text.DefaultFormatterFactory dff = new  DefaultFormatterFactory(mf);
		valueField.setFormatterFactory(dff);
		valueField.addFocusListener(listener);
		
		this.add(marker, cc.xy(1, 1));
		this.add(valueField, cc.xy(3,1));
	}
	
	public void setValue(int value) {
		valueField.setText(value+"");
	}
	
	public int getValue() {
		return Integer.parseInt(valueField.getText().trim());
	}
}