/* * ####################################################### * * 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 javax.swing.BorderFactory; import javax.swing.JTextField; import ale.view.gui.GUIConstants; public abstract class ContentField extends Field { private static final int FIELDHEIGHT = 60; private static final int MAXCONTENT = 50; public ContentField(String initialValue, Color bg, String fieldTitle) { if (bg == null) { setBackground(Color.WHITE); } if (fieldTitle == null) { fieldTitle = ""; } if (initialValue == null) { initialValue = ""; } create(initialValue, bg, fieldTitle); } public abstract void contentUpdate(String input); private void create(String initialValue, Color bg, String fieldTitle) { setPreferredSize(new Dimension(GUIConstants.DEFAULT_FIELD_WIDTH, FIELDHEIGHT)); setBackground(bg); setBorder(BorderFactory.createTitledBorder(fieldTitle)); final JTextField contentInputField = new JTextField(initialValue); contentInputField.setPreferredSize(GUIConstants.DEFAULT_BUTTON_DIM); contentInputField.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { if (contentInputField.getText().length() <= MAXCONTENT) { contentUpdate(contentInputField.getText()); } else { while (contentInputField.getText().length() > MAXCONTENT) { contentInputField.setText(contentInputField.getText().substring(0, contentInputField.getText().length() - 1)); } } } }); this.add(contentInputField); } }