package edu.jsu.leathrum.mathlets.shared; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Dimension; public class InputSet extends JPanel implements FieldHandler, KeyHandler { JCheckBox check = new JCheckBox(); boolean checkshown = false; FormattedLabel name; JTextField inputField; FormattedLabel after = new FormattedLabel(""); private class CheckHandler implements FieldHandler { boolean def = false; public void setDefault(String dval) { def = dval.equalsIgnoreCase("true"); } public void setToDefault() { setState(def); } public void setField(String val) { setState(val.equalsIgnoreCase("true")); } public String getField() { return (getState()?"true":"false"); } } private CheckHandler handle = null; public FieldHandler getCheckHandler() { if (checkshown && (handle==null)) handle = new CheckHandler(); return handle; } private void init(String namestr, int size, boolean chbox, Color c) { this.setOpaque(false); name = new FormattedLabel(namestr); inputField = new JTextField(size); inputField.setText(""); name.setForeground(c); setLayout(new FlowLayout()); Box b = new Box(BoxLayout.X_AXIS); if (chbox) { checkshown = true; b.add(check); check.setOpaque(false); } b.add(name); inputField.setForeground(Color.black); b.add(inputField); b.add(after); add(b); } public InputSet(String namestr, int size, boolean chbox, Color c) { init(namestr, size, chbox, c); } public InputSet(String namestr, int size, boolean chbox) { init(namestr, size, chbox, Color.black); } public InputSet(String namestr, int size, Color c) { init(namestr, size, true, c); } public InputSet(String namestr, int size) { init(namestr, size, false, Color.black); } public void setName(String newName) { name.setText(newName); name.repaint(); } public void setAfter(String newAfter) { after.setText(newAfter); after.repaint(); } public void setState(boolean state) { check.setSelected(state); } public boolean getState() { return check.isSelected(); } public void setDefaultState(boolean newdef) { getCheckHandler().setDefault((newdef?"true":"false")); } public JCheckBox getCheckBox() { return check; } public String getInput() { return inputField.getText(); } public void setInputText(String text) { inputField.setText(text); } public void select(int start, int finish) { inputField.select(start, finish); } public void selectAll() { inputField.selectAll(); } public void setColor(Color c) { name.setForeground(c); } public void addKeyListener(KeyListener c) { inputField.addKeyListener(c); } public boolean isKey(KeyEvent e) { return ((e.getSource()==inputField)&&(e.getKeyCode()==e.VK_ENTER)); } public void doKeyAction(KeyEvent e) { setState(true); } public void requestFocus() { inputField.requestFocus(true); // temporary mode not generally recommended // but here needed to be sure parser errors properly indicated } private String def = ""; public void setDefault(String dval) { def = dval; } public void setToDefault() { setInputText(def); } public void setField(String val) { setInputText(val); } public String getField() { return getInput(); } }