package jas.hist; import jas.hist.normalization.Normalizer; import jas.util.CheckBoxBorderPanel; import jas.util.ColorChooser; import jas.util.DateChooser; import jas.util.JASTextField; import jas.util.JTextFieldBinding; import jas.util.PropertyBinding; import jas.util.PropertyDialog; import jas.util.PropertyPage; import jas.util.PropertySite; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Graphics; import java.awt.Insets; import java.awt.LayoutManager; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import java.util.Enumeration; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; import javax.swing.UIManager; import javax.swing.border.AbstractBorder; import javax.swing.border.Border; import javax.swing.border.TitledBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import tablelayout.TableLayout; public final class JASHistPropertyDialog extends PropertyDialog { public JASHistPropertyDialog(Frame f,JASHist bean) { this(f, bean, DEFAULT); } public JASHistPropertyDialog(final Frame f, final JASHist bean, final byte axis) { super(f,"Histogram properties...",bean); addPage("General",new JASHistPropGeneral(), false); addPage("Y Axis" ,new JASHistPropYAxis(axis == Y_AXIS_RIGHT), axis == Y_AXIS_LEFT || axis == Y_AXIS_RIGHT); addPage("X Axis" ,new JASHistPropXAxis(), axis == X_AXIS); DataManager dm = bean.getDataManager(); if (bean.numberOfDataSets() > 0) addPage("Data",new JASHistPropData(dm), false); if (dm instanceof SupportsFunctions) addPage("Functions",new JASHistPropFunctions(), false); pack(); } final static byte DEFAULT = 0; final static byte Y_AXIS_LEFT = 1; final static byte Y_AXIS_RIGHT = 2; final static byte X_AXIS = 3; } final class JASHistPropGeneral extends PropertyPage { public JASHistPropGeneral() { setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); JPanel p1 = new FixedHeightPanel(); p1.add(new JLabel("Title")); JASTextField title = new JASTextField(40); p1.add(title); add(p1); JPanel p4 = new FixedHeightPanel(); /* JCheckBox axis = new JCheckBox("Axis Bounding Box"); axis.setMnemonic('B'); p4.add(axis); */ JComboBox legend = new JComboBox(); legend.addItem("Hide Legend"); legend.addItem("Automatic"); legend.addItem("Show Legend"); p4.add(legend); add(p4); JPanel p3 = new FixedHeightPanel(); p3.setBorder(BorderFactory.createTitledBorder("Border")); JComboBox btype = new JComboBox(); btype.addItem("None"); btype.addItem("Bevel In"); btype.addItem("Bevel Out"); btype.addItem("Etched"); btype.addItem("Line"); btype.addItem("Shadow"); p3.add(btype); /* p3.add(new JLabel("Width")); SpinBox bwidth = new SpinBox(2,0,20); p3.add(bwidth); */ add(p3); JPanel p2 = new FixedHeightPanel(); p2.setBorder(BorderFactory.createTitledBorder("Color")); p2.add(new JLabel("Background")); ColorChooser back = new ColorChooser(); p2.add(back); p2.add(new JLabel("Foreground")); ColorChooser fore = new ColorChooser(); p2.add(fore); p2.add(new JLabel("Data Area")); ColorChooser data = new ColorChooser(); p2.add(data); add(p2); add(Box.createVerticalGlue()); addBinding(new PropertyBinding(title,"Title")); addBinding(new PropertyBinding(back,"Background")); addBinding(new PropertyBinding(fore,"Foreground")); addBinding(new PropertyBinding(data,"DataAreaColor")); addBinding(new PropertyBinding(btype,"DataAreaBorderType")); /* addBinding(new PropertyBinding(bwidth,"DataAreaBorderWidth")); addBinding(new PropertyBinding(axis,"AxisBoundingBox")); */ addBinding(new PropertyBinding(legend,"ShowLegend")); } public String getHelpTopic() { return "userInterface.propertiesDialog.generalTab"; } } final class JASHistPropYAxis extends PropertyPage implements ListSelectionListener, PropertySite { public JASHistPropYAxis(final boolean selectY2) { m_init = false; setLayout(new BorderLayout()); m_listModel = new DefaultListModel(); m_list = new JList(m_listModel); if (selectY2) m_list.setSelectedIndex(1); m_list.addListSelectionListener(this); JScrollPane scroll = new JScrollPane(); scroll.setViewportView(m_list); scroll.setPreferredSize(new Dimension(100,120)); add(scroll,BorderLayout.WEST); m_propAxis = new JASHistPropAxis(); m_propAxis.setPropertySite(this); add(m_propAxis,BorderLayout.CENTER); } public String getHelpTopic() { return "userInterface.propertiesDialog.axesTabs"; } public void activate() { m_init = false; // Recalculate list of axes each time page is activated } public void doDataExchange(boolean set,Object bean) { if (!m_init) { JASHist hist = (JASHist) bean; JASHistAxis[] axes = hist.getYAxes(); m_listModel.removeAllElements(); for (int i=0; i