package jas.hist; import jas.plot.TextBlock; import jas.util.DoubleWithError; import jas.util.ScientificFormat; import java.awt.Component; import java.awt.Frame; import java.awt.event.ActionEvent; import java.text.Format; import java.util.Enumeration; import java.util.Hashtable; import java.util.Vector; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; /** * The main class used to display and format statistics. * When a user selects showStatistics from the plots popupmenu, a statistics text block * is displayed showing each displayed plots' statistics (Vector stats) and name. The statistics block * requires a number formatting method to be set (setFormat), the default method is * implemented by jas.util.ScientificFormat. */ public class StatisticsBlock extends TextBlock { public StatisticsBlock() { this(new ScientificFormat()); } public StatisticsBlock(Format g) { super("Statistics"); //set default format types initializeDefaultFormats(g); setFormat(g); } /** * Calculates and returns the total number of lines to be displayed in the statistics block, * including a draw line seperator, plot title (if available) and formatted * statistics for each data set displayed in the plot area. */ public int getNLines() { NothingToShow =false; if (stats.isEmpty()) return 1; int n = 0; for (int i=0; i1 && s.length>0)) { addline = new String[s.length+2]; addline[0] = "\n"; addline[1] = "addplottitle"; for(int i=0;i0) { addline = new String[s.length+1]; addline[0] = "\n"; for(int i=0;i0)) { splitstringalign=a; }else throw new IllegalArgumentException("Integer splitstringalign must be set to 1,2 or 3"); } /**Sets the (int) showtitles to one of three values:SHOWTITLES_ALWAYS, * SHOWTITLES_NEVER, SHOWTITLES_AUTOMATIC. The value controls when a plot title is * displayed in the stat block. If showtitles = SHOWTITLES_AUTOMATIC then titles will * be displayed if there is more than one plot displayed. */ public void setShowTitles(int settitles) { if((settitles<4) && (settitles >0)) { showtitles = settitles; }else throw new IllegalArgumentException("Integer showtitles must be set to 1,2 or 3"); } /**Returns the (int) showtitles which has three values:SHOWTITLES_ALWAYS, * SHOWTITLES_NEVER, SHOWTITLES_AUTOMATIC. The value controls when a plot title is * displayed in the stat block. If showtitles = SHOWTITLES_AUTOMATIC then titles will * be displayed if there is more than one plot displayed. */ public int getShowTitles() { return showtitles; } public void modifyPopupMenu(final JPopupMenu menu, final Component source) { if (menu.getComponentCount() > 0) menu.addSeparator(); statpropertiesitem = new JMenuItem(getPrefix()+" Properties...") { protected void fireActionPerformed( final ActionEvent e) { statwin = new StatsWindow(StatisticsBlock.this); final Frame frame = (Frame) SwingUtilities.getAncestorOfClass(Frame.class, this); statwin.showStatsWindow(); } }; menu.add(statpropertiesitem); super.modifyPopupMenu(menu,source); } private boolean NothingToShow; private Format f; private Hashtable formats = new Hashtable(); private StatsWindow statwin; private Vector stats = new Vector(); private String[] selectedentries; private String[] listnames; private int showtitles = SHOWTITLES_AUTOMATIC; private int splitstringalign=RIGHTALIGNSPLIT; private String line; private JMenuItem statpropertiesitem; private boolean alwaysall=true; final public static int SHOWTITLES_ALWAYS = 1; final public static int SHOWTITLES_NEVER = 2; final public static int SHOWTITLES_AUTOMATIC = 3; final public static int LEFTALIGNSPLIT = 1; final public static int RIGHTALIGNSPLIT = 2; final public static int NOALIGNSPLIT = 3; }