package uk.co.mmscomputing.util; import java.util.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.event.*; import javax.swing.border.*; public class UtilTextField implements DocumentListener{ private Document td; public UtilTextField(JPanel p, Hashtable map, String key, String defaultValue, String label, int size){ if(label!=null){ JLabel l=new JLabel(label); l.setBorder(new EtchedBorder()); p.add(l); } JTextField tf=new JTextField(size); tf.setText(getString(map,key,defaultValue)); td=tf.getDocument(); td.addDocumentListener(this); td.putProperty("key",key); td.putProperty("map",map); p.add(tf); } public void addDocumentListener(DocumentListener listener){ td.addDocumentListener(listener); } public void changedUpdate(DocumentEvent e){ setMap(e);} public void insertUpdate(DocumentEvent e){ setMap(e);} public void removeUpdate(DocumentEvent e){ setMap(e);} protected String getString(Hashtable map,String key, String value){ Object s=map.get(key); if(s==null){ map.put(key,value); return value; }else if(s instanceof String){ return (String)s; }else{ System.out.println("9\b"+getClass().getName()+"\n\tExpect Type String for key ["+key+"]."); return ""; } } protected void setMap(DocumentEvent de){ try{ Document d=de.getDocument(); Map map=(Map)d.getProperty("map"); String key=(String)d.getProperty("key"); String value=d.getText(d.getStartPosition().getOffset(),d.getEndPosition().getOffset()).trim(); map.put(key,value); }catch(Exception e){ System.out.println("9\b"+e.getMessage()); } } }