package jas.util; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; /**Creates a jpanel that allows users to set the parameters used by ScientificFormat * objects for number formatting. The panel allows the setting of significant digits, * max width of number and formatting styles. * * @author Paul Spence * @version 03/20/2000 */ public class SciFormatPanel extends JPanel implements ActionListener { public SciFormatPanel(ScientificFormat s) { f=s; createPanel(); } private ScientificFormat f; private JLabel WidthLabel; private JLabel SigLabel; private JPanel DisplayStyle; private JRadioButton PureSci; private JRadioButton StandardSci; private SpinBox widthdigits; private SpinBox sigdigits; private void createPanel() { JPanel DisplayOptions = new JPanel(new FlowLayout(FlowLayout.CENTER)); SigLabel = new JLabel("Significant Digits"); WidthLabel = new JLabel("Maximum Digits"); sigdigits = new SpinBox(f.getSigDigits(),1,15); widthdigits = new SpinBox(f.getMaxWidth(),1,100); sigdigits.setValue(f.getSigDigits()); widthdigits.setValue(f.getMaxWidth()); sigdigits.addActionListener(new MySpinBoxListener()); widthdigits.addActionListener(new MySpinBoxListener()); if(f.getScientificNotationStyle()){ widthdigits.setEnabled(false); WidthLabel.setEnabled(false); } DisplayOptions.add(SigLabel); DisplayOptions.add(sigdigits); DisplayOptions.add(WidthLabel); DisplayOptions.add(widthdigits); JPanel Style = new JPanel(new FlowLayout(FlowLayout.CENTER)); PureSci = new JRadioButton("Use Pure Scientific Notation", f.getScientificNotationStyle()); PureSci.setActionCommand("PureSci"); PureSci.addActionListener(this); StandardSci = new JRadioButton("Use Standard Scientific Notation", !(f.getScientificNotationStyle())); StandardSci.setActionCommand("StandSci"); StandardSci.addActionListener(this); Style.add(PureSci); Style.add(StandardSci); final ButtonGroup group = new ButtonGroup(); group.add(PureSci); group.add(StandardSci); DisplayStyle = new JPanel(); DisplayStyle.setLayout(new GridLayout(2,1)); DisplayStyle.add(DisplayOptions); DisplayStyle.add(Style); } /**Sets the ScientificFormat objects parameters according to the SciFormatPanels values. * To be called when 'ok' or 'apply' buttons int the panels' parent container is * selected. */ public void updateSciFormat(){ f.setMaxWidth(widthdigits.getValue()); f.setSigDigits(sigdigits.getValue()); f.setScientificNotationStyle(PureSci.isSelected()); } /**Get the DisplayStyle panel */ public JPanel getPanel(){ return DisplayStyle; } public void actionPerformed(ActionEvent e) { if (e.getActionCommand() == "StandSci") { WidthLabel.setEnabled(true); widthdigits.setEnabled(true); }else if (e.getActionCommand() == "PureSci") { WidthLabel.setEnabled(false); widthdigits.setEnabled(false); } } class MySpinBoxListener implements ActionListener{ public void actionPerformed(ActionEvent evt){ if( (widthdigits.getValue() < sigdigits.getValue()) ){ widthdigits.setValue(sigdigits.getValue()); } } } }