/*
* @(#)CSamplerWrapperUI.java 0.0.0 99/05/27
*
* Copyright (c) 1999 by Willie Wheeler. All rights reserved.
*/
package stats.plaf.concrete;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.plaf.*;
import stats.*;
import stats.plaf.*;
/**
* @version 0.0.0 05/27/99
* @author Willie Wheeler
*/
public class CSamplerWrapperUI extends SamplerWrapperUI
implements ActionListener, ItemListener {
protected static final String DRAW = "draw";
protected SamplerWrapper wrapper;
protected JCheckBox replaceBox;
/**
* Adds the given component to the given container, assuming that the
* container has a GridBagLayout. This method comes from
* O'Reilly's Java AWT Reference, pp. 275-276.
*
* @param container container with a GridBagLayout
* @param component component to add to the container
* @param gridx grid x coord
* @param gridy grid y coord
* @param gridwidth grid width
* @param gridheight grid height
* @param fill fill value
* @param anchor anchor value
*/
protected static void addComponent(Container container, Component component,
int gridx, int gridy, int gridwidth, int gridheight, int fill,
int anchor) {
GridBagLayout lm = (GridBagLayout)container.getLayout();
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = gridx;
gbc.gridy = gridy;
gbc.gridwidth = gridwidth;
gbc.gridheight = gridheight;
gbc.fill = fill;
gbc.anchor = anchor;
lm.setConstraints(component, gbc);
container.add(component);
}
public static ComponentUI createUI(JComponent c) {
return new CSamplerWrapperUI();
}
public void installUI(JComponent c) {
wrapper = (SamplerWrapper)c;
installDefaults();
installComponents();
installListeners();
}
public void installDefaults() { wrapper.setLayout(new BorderLayout()); }
public void installComponents() {
// Add sampler.
Sampler sampler = wrapper.getSampler();
wrapper.add(sampler, BorderLayout.CENTER);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0, 1));
wrapper.add(panel, BorderLayout.WEST);
{
JLabel psLabel = new JLabel("N=" + wrapper.getPopulationSize(),
JLabel.CENTER);
panel.add(psLabel);
JPanel ssPanel = new JPanel();
ssPanel.setLayout(new GridBagLayout());
panel.add(ssPanel);
{
JLabel ssLabel = new JLabel("n=");
addComponent(ssPanel, ssLabel, 0, 0, 1, 1,
GridBagConstraints.NONE, GridBagConstraints.CENTER);
ssPanel.add(ssLabel);
JComboBox ssBox = new JComboBox(
new String[] { "25", "50", "100", "250" });
ssBox.setEditable(true);
Component editor = ssBox.getEditor().getEditorComponent();
if (editor instanceof JTextField) {
((JTextField)editor).setColumns(5);
}
addComponent(ssPanel, ssBox, 0, 1, 1, 1,
GridBagConstraints.NONE, GridBagConstraints.CENTER);
}
JPanel nsPanel = new JPanel();
nsPanel.setLayout(new GridBagLayout());
panel.add(nsPanel);
{
JLabel nsLabel = new JLabel("# samples=");
addComponent(nsPanel, nsLabel, 0, 0, 1, 1,
GridBagConstraints.NONE, GridBagConstraints.CENTER);
JComboBox nsBox = new JComboBox(
new String[] { "1", "5", "10", "50", "100", "500", "1000" });
nsBox.setEditable(true);
Component editor = nsBox.getEditor().getEditorComponent();
if (editor instanceof JTextField) {
((JTextField)editor).setColumns(5);
}
addComponent(nsPanel, nsBox, 0, 1, 1, 1,
GridBagConstraints.NONE, GridBagConstraints.CENTER);
}
replaceBox = new JCheckBox("Replace", sampler.getReplace());
replaceBox.setHorizontalAlignment(JCheckBox.CENTER);
panel.add(replaceBox);
JPanel drawPanel = new JPanel();
drawPanel.setLayout(new GridBagLayout());
panel.add(drawPanel);
{
JButton drawButton = new JButton("Sample");
drawButton.setActionCommand(DRAW);
drawButton.addActionListener(this);
addComponent(drawPanel, drawButton, 0, 0, 1, 1,
GridBagConstraints.NONE, GridBagConstraints.CENTER);
}
}
}
public void installListeners() {
replaceBox.addItemListener(this);
}
public void uninstallUI(JComponent c) { }
public void uninstallDefaults() { }
public void uninstallComponents() { }
public void uninstallListeners() { }
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd == DRAW) { wrapper.drawSample(); }
}
public void itemStateChanged(ItemEvent e) {
wrapper.setReplace(e.getStateChange() == ItemEvent.SELECTED);
}
}