/*
* #######################################################
*
* Copyright (c) 2013, A. Weinberger. All rights reserved.
* --------------------------------------------------------
*/
package ale.view.gui.editor.fields;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import ale.view.gui.GUIConstants;
import ale.view.gui.util.VerticalLayout;
public abstract class Numberfield extends Field {
private static final long serialVersionUID = 1L;
private static final int FIELDHEIGHT = 88;
private JTextField numberfield;
private int numberLength;
public Numberfield(int initialValue, int maxInputLength, Color bg, String fieldTitle, String fieldlabel, boolean showResetBtn) {
this.numberLength = maxInputLength;
if (bg == null) {
bg = Color.WHITE;
}
if (fieldTitle == null) {
fieldTitle = "";
}
if (fieldlabel == null) {
fieldlabel = "";
}
create(initialValue, bg, fieldTitle, fieldlabel, showResetBtn);
}
public abstract void onKeyReleased(String input);
public abstract void resetOnClick();
public void update(int num) {
this.numberfield.setText(num + "");
}
public void update(Color color) {
this.numberfield.setForeground(color);
}
/*
*
*/
private void create(int initialValue, Color bg, String fieldTitle, String fieldlabel, boolean showResetBtn) {
setPreferredSize(new Dimension(GUIConstants.DEFAULT_FIELD_WIDTH, FIELDHEIGHT));
setBackground(bg);
setBorder(BorderFactory.createTitledBorder(fieldTitle));
setLayout(new VerticalLayout(5, VerticalLayout.CENTER));
JPanel panel = new JPanel();
panel.setBackground(bg);
this.add(panel);
JLabel label = new JLabel(fieldlabel + ": ");
panel.add(label);
this.numberfield = new JTextField();
this.numberfield.setColumns(this.numberLength);
this.numberfield.setToolTipText(Field.strHeightTooltip);
this.numberfield.setText(initialValue + "");
panel.add(this.numberfield);
this.numberfield.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (controlSizeInput(Numberfield.this.numberfield)
&& controlSizeInputLength(Numberfield.this.numberfield, Numberfield.this.numberLength)) {
Numberfield.this.numberfield.setForeground(Color.BLACK);
onKeyReleased(Numberfield.this.numberfield.getText());
} else {
Numberfield.this.numberfield.setForeground(Color.RED);
onKeyReleased(null);
}
}
});
JPanel panel2 = new JPanel();
panel2.setBackground(bg);
this.add(panel2);
JButton resetBtn = new JButton(Field.strReset);
resetBtn.setEnabled(showResetBtn);
resetBtn.setBackground(bg);
panel2.add(resetBtn);
resetBtn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
resetOnClick();
}
});
}
}