/* * This file is part of the OSMembrane project. * More informations under www.osmembrane.de * * The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0. * for more details about the license see http://www.osmembrane.de/license/ * * Source: $HeadURL$ ($Revision$) * Last changed: $Date$ */ package de.osmembrane.view.components; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.FocusListener; import java.awt.event.KeyListener; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTextField; import de.osmembrane.view.panels.InspectorPanel; /** * A Panel that contains a {@link JTextField} and a {@link JButton} * simultaneously. Is used in the {@link InspectorPanel} to easily access * editing dialogs. * * @author tobias_kuhn * */ public class JTextFieldWithButton extends JPanel { private static final long serialVersionUID = -5112638853742176120L; private JTextField field; private JButton button; /** * Creates a new {@link JTextFieldWithButton}. */ public JTextFieldWithButton() { this(null); } /** * Creates a new {@link JTextFieldWithButton}. * * @param value * Sets the contents of the text field to value */ public JTextFieldWithButton(String value) { this(value, new String()); } /** * Creates a new {@link JTextFieldWithButton}. * * @param value * Sets the contents of the text field to value * @param caption * Sets the caption of the button to caption */ public JTextFieldWithButton(String value, String caption) { field = (value != null) ? new JTextField(value) : new JTextField(); button = (caption != null) ? new JButton(caption) : new JButton(); this.setLayout(new BorderLayout()); this.add(field, BorderLayout.CENTER); this.add(button, BorderLayout.EAST); } /** * Creates a new {@link JTextFieldWithButton}. * * @param value * Sets the contents of the text field to value * @param action * Sets the action of the button to action */ public JTextFieldWithButton(String value, Action action) { field = (value != null) ? new JTextField(value) : new JTextField(); button = (action != null) ? new JButton(action) : new JButton(); this.setLayout(new BorderLayout()); this.add(field, BorderLayout.CENTER); this.add(button, BorderLayout.EAST); } /** * Unsets the borders of the field */ public void fieldNoBorders() { field.setOpaque(true); field.setBorder(null); } /** * Sets the content value to value * * @param value */ public void setValue(String value) { field.setText(value); } /** * Sets the content value to value * * @param value * @param fixed * whether the value shall be editable */ public void setValue(String value, boolean fixed) { field.setEditable(!fixed); field.setText(value); } /** * @return the content value */ public String getValue() { return field.getText(); } /** * Sets the button caption to caption * * @param caption */ public void setCaption(String caption) { button.setText(caption); } /** * @return the button caption */ public String getCaption() { return button.getText(); } /** * Adds the {@link ActionListener} al to the button component * * @param al */ public void addButtonActionListener(ActionListener al) { button.addActionListener(al); } /** * Adds the {@link FocusListener} fl to the field component * * @param fl */ public void addFieldFocusListener(FocusListener fl) { field.addFocusListener(fl); } /** * @see JTextField#setHorizontalAlignment(int) */ public void setValueHorizontalAlignment(int align) { field.setHorizontalAlignment(align); } /** * Adds the {@link java.awt.event.KeyListener} kl to the field component * * @param kl * the key listener to add */ public void addFieldKeyListener(KeyListener kl) { field.addKeyListener(kl); } /** * Sets the color of the value text field to color. * * @param color * the new foreground color */ public void setValueForeground(Color color) { field.setForeground(color); } }