package org.prevayler.demos.demo2.gui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.text.DecimalFormat; import java.text.ParseException; import javax.swing.Box; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.prevayler.Prevayler; abstract class AccountFrame extends JInternalFrame { protected final Prevayler _prevayler; protected final JTextField holderField=new JTextField(); protected String holderText(){ return holderField.getText(); } AccountFrame( String title, Prevayler prevayler, Container container){ super(title,false,true); _prevayler=prevayler; container.add(this); this.setBackground(new Color(204,204,204)); getContentPane().add(Box.createVerticalStrut(4),BorderLayout.NORTH); getContentPane().add(Box.createHorizontalStrut(4),BorderLayout.EAST); getContentPane().add(Box.createHorizontalStrut(4),BorderLayout.WEST); getContentPane().add(fieldBox(),BorderLayout.CENTER); getContentPane().add(buttonPanel(),BorderLayout.SOUTH); show(); holderField.requestFocus(); } private Box fieldBox(){ Box fieldBox=Box.createVerticalBox(); addFields(fieldBox); return fieldBox; } protected void addFields( Box fieldBox){ fieldBox.add(labelContainer("Holder")); fieldBox.add(holderField); } private JPanel buttonPanel(){ JPanel buttonPanel=new JPanel(); addButtons(buttonPanel); return buttonPanel; } abstract protected void addButtons( JPanel buttonPanel); protected Container labelContainer( String text){ Box box=Box.createHorizontalBox(); JLabel label=new JLabel(text); box.add(label); box.add(Box.createHorizontalGlue()); return box; } protected Component gap(){ return Box.createVerticalStrut(3); } protected long parse( String numericString) throws ParseException { return new DecimalFormat("#").parse(numericString).longValue(); } }