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); //Not resizable. Closable.
_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(); //The exception thrown has a better message than Long.parseLong(String).
}
}