/* * @(#)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); } }