From b252a3bac8e45eef3229a1e4ed19656d2a8b07c3 Mon Sep 17 00:00:00 2001 From: wspear Date: Thu, 7 May 2009 00:02:21 +0000 Subject: [PATCH] Custom charts now generate a new window like pre-defined charts. The custom charts tab UI has been adjusted accordingly. git-svn-id: file:///mnt/fast/tau2git/svnroot/trunk/tau2@7182 a8e31b63-e6ca-409b-a01b-2eec1b506579 --- .../perfexplorer/src/client/ChartPane.java | 551 +++++++++++------- .../client/PerfExplorerActionListener.java | 19 +- .../src/client/PerfExplorerMainJMenuBar.java | 6 - .../client/PerfExplorerProbabilityPlot.java | 38 +- 4 files changed, 356 insertions(+), 258 deletions(-) diff --git a/tools/src/perfexplorer/src/client/ChartPane.java b/tools/src/perfexplorer/src/client/ChartPane.java index 9eaaf58d7..7f3b42279 100644 --- a/tools/src/perfexplorer/src/client/ChartPane.java +++ b/tools/src/perfexplorer/src/client/ChartPane.java @@ -2,9 +2,8 @@ import java.awt.BasicStroke; import java.awt.BorderLayout; -import java.awt.Color; import java.awt.Dimension; -import java.awt.Graphics2D; +import java.awt.GridLayout; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -15,39 +14,39 @@ import java.util.NoSuchElementException; import java.util.StringTokenizer; +import javax.swing.BorderFactory; +import javax.swing.Box; import javax.swing.BoxLayout; +import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JRadioButton; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import javax.swing.JTextField; -import javax.swing.JToggleButton; +import javax.swing.border.TitledBorder; import javax.swing.plaf.basic.BasicComboPopup; import javax.swing.plaf.basic.ComboPopup; import javax.swing.plaf.metal.MetalComboBoxUI; import org.jfree.chart.ChartFactory; -import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.LogarithmicAxis; import org.jfree.chart.axis.NumberAxis; -import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.category.LineAndShapeRenderer; -import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.xy.DefaultTableXYDataset; import org.jfree.data.xy.XYSeries; -import edu.uoregon.tau.common.ImageExport; import edu.uoregon.tau.common.Utility; import edu.uoregon.tau.perfdmf.Application; import edu.uoregon.tau.perfdmf.Experiment; @@ -57,13 +56,17 @@ import edu.uoregon.tau.perfexplorer.common.TransformationType; import edu.uoregon.tau.perfexplorer.common.RMIGeneralChartData.CategoryDataRow; -public class ChartPane extends JScrollPane implements ActionListener, ImageExport { +public class ChartPane extends JScrollPane implements ActionListener { /** * */ private static final String IDEAL="Ideal"; + +// private static int VALUE_DEX=0; +// private static int SCALA_DEX=1; +// private static int EFFIC_DEX=2; private static final long serialVersionUID = -8971827392560223964L; private static ChartPane thePane = null; @@ -72,16 +75,32 @@ public class ChartPane extends JScrollPane implements ActionListener, ImageExpor private JPanel mainPanel = null; private ScriptFacade facade = null; //private static String UPDATE_COMMAND = "UPDATE_COMMAND"; - private JPanel chartPanel = null; - - private JToggleButton mainOnly = new JToggleButton ("Main Only"); - private JToggleButton callPath = new JToggleButton ("Call Paths"); - private JToggleButton logY = new JToggleButton ("Log Y"); - private JToggleButton scalability = new JToggleButton ("Scalability"); - private JToggleButton efficiency = new JToggleButton ("Efficiency"); - private JToggleButton constantProblem = new JToggleButton ("Strong Scaling"); - private JToggleButton horizontal = new JToggleButton ("Horizontal"); - private JToggleButton showZero = new JToggleButton ("Show Y-Axis Zero"); + //private JPanel chartPanel = null; + + private JCheckBox mainOnly = new JCheckBox ("Main Only"); + private JCheckBox callPath = new JCheckBox ("Call Paths"); + private JCheckBox logY = new JCheckBox ("Log Y"); + + + //private JLabel chartTypeLabel = new JLabel("Chart Type:"); + //private JComboBox chartType = new MyJComboBox(); + + JRadioButton valueRB = new JRadioButton("Value Chart"); + JRadioButton scalaRB = new JRadioButton("Scalability Chart"); + JRadioButton efficRB = new JRadioButton("Efficency Chart"); + ButtonGroup chartType = new ButtonGroup(); + + JRadioButton strongScaling = new JRadioButton("Strong Scaling"); + JRadioButton weakScaling = new JRadioButton("Weak Scaling"); + ButtonGroup scalingType = new ButtonGroup(); + +// private JRadioButton default = new JRadioButton ("Scalability"); +// private JRadioButton scalability = new JRadioButton ("Scalability"); +// private JRadioButton efficiency = new JRadioButton ("Efficiency"); + + //private JCheckBox constantProblem = new JCheckBox ("Strong Scaling"); + private JCheckBox horizontal = new JCheckBox ("Horizontal"); + private JCheckBox showZero = new JCheckBox ("Show Y-Axis Zero"); private List tableColumns = null; private JLabel titleLabel = new JLabel("Chart Title:"); @@ -96,7 +115,7 @@ public class ChartPane extends JScrollPane implements ActionListener, ImageExpor private JComboBox xaxisValue = null; private JLabel yaxisValueLabel = new JLabel("Y Axis Value:"); private JComboBox yaxisValue = null; - private JLabel dimensionLabel = new JLabel("Dimension reduction:"); + private JLabel dimensionLabel = new JLabel("Dimension Reduction Type:"); private JComboBox dimension = new MyJComboBox(); private JLabel dimensionXLabel = new JLabel("Cutoff (0 foo())"); + this.callPath.addActionListener(this); + panel.add(this.callPath); + + return (panel); + } + + private JPanel createXAxisMenu() { + // create a new panel, with a vertical box layout + JPanel panel = new JPanel(); + TitledBorder tb = BorderFactory.createTitledBorder("X Axis"); + panel.setBorder(tb); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + //left.setLayout(new FlowLayout(FlowLayout.LEFT)); + //left.setLayout(new GridLayout(0,1,0,0)); + + panel.add(Box.createVerticalStrut(10)); + // x axis name + panel.add(xaxisNameLabel); + this.xaxisName.addActionListener(this); + panel.add(xaxisName); + + panel.add(Box.createVerticalStrut(10)); + // x axis value + panel.add(xaxisValueLabel); + xaxisValue = new MyJComboBox(tableColumns.toArray()); + xaxisValue.addActionListener(this); + this.xaxisValue.addActionListener(this); + panel.add(xaxisValue); + + panel.add(Box.createVerticalStrut(10)); + // XML metadata + panel.add(xmlNameLabel); + xmlName = new MyJComboBox(); + this.xmlName.addActionListener(this); + panel.add(xmlName); + + panel.add(Box.createVerticalStrut(10)); + panel.add(this.angleXLabels); + + panel.add(Box.createVerticalStrut(10)); + panel.add(this.alwaysCategory); + + return (panel); + } + + private JPanel createYAxisMenu() { + JPanel panel = new JPanel(); + TitledBorder tb = BorderFactory.createTitledBorder("Y Axis"); + panel.setBorder(tb); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + + panel.add(Box.createVerticalStrut(10)); + // y axis name + panel.add(yaxisNameLabel); + this.yaxisName.addActionListener(this); + panel.add(yaxisName); + + panel.add(Box.createVerticalStrut(10)); + // y axis value + panel.add(yaxisValueLabel); + String[] valueOptions = {"tmp"};// this will get reset in a few lines... + yaxisValue = new MyJComboBox(valueOptions); + this.yaxisValue.addActionListener(this); + resetYAxisValues(true); // ...right here! + panel.add(yaxisValue); + + panel.add(Box.createVerticalStrut(10)); + // log y + this.logY.setToolTipText("Use a Logarithmic Y axis"); + this.logY.addActionListener(this); + panel.add(this.logY); + + panel.add(Box.createVerticalStrut(10)); + // show 0 + this.showZero.setToolTipText("Include zero value in y-axis range"); + this.showZero.addActionListener(this); + panel.add(this.showZero); + + return (panel); + } + + private JPanel createSeriesMenu() { + JPanel panel = new JPanel(); + TitledBorder tb = BorderFactory.createTitledBorder("Series"); + panel.setBorder(tb); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + + panel.add(Box.createVerticalStrut(10)); + // series name + panel.add(seriesLabel); + series = new MyJComboBox(tableColumns.toArray()); + series.addItem(INTERVAL_EVENT_NAME); + series.addItem(INTERVAL_EVENT_GROUP_NAME); + series.addItem(ATOMIC_EVENT_NAME); + series.addActionListener(this); + panel.add(series); + + panel.add(Box.createVerticalStrut(10)); + // series xml + panel.add(seriesXmlNameLabel); + seriesXmlName = new MyJComboBox(); + this.seriesXmlName.addActionListener(this); + panel.add(seriesXmlName); + + + return (panel); + } + + + private JPanel createChartTypeMenu() { + JPanel panel = new JPanel(); + + TitledBorder tb = BorderFactory.createTitledBorder("Chart Type"); + panel.setBorder(tb); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + //This is necessary to make this panel fill the column, but I'm not sure why... + panel.setAlignmentX(CENTER_ALIGNMENT); + + + panel.add(Box.createVerticalStrut(10)); +// panel.add(this.chartTypeLabel); +// this.chartType.addItem("Value"); +// this.chartType.addItem("Scalability"); +// this.chartType.addItem("Efficency"); +// this.chartType.setSelectedIndex(VALUE_DEX); +// panel.add(this.chartType); + panel.add(valueRB); + panel.add(scalaRB); + panel.add(efficRB); + chartType.add(valueRB); + chartType.add(scalaRB); + chartType.add(efficRB); +// JLabel l = new JLabel("---"); +// panel.add(l); +// l.setVisible(false); + panel.add(Box.createVerticalStrut(10)); + panel.add(weakScaling); + panel.add(strongScaling); + scalingType.add(strongScaling); + scalingType.add(weakScaling); + panel.add(Box.createVerticalStrut(10)); +// this.constantProblem.setToolTipText("Scaling type (Strong Scaling or Weak Scaling)"); +// this.constantProblem.addActionListener(this); +// panel.add(this.constantProblem); + + this.horizontal.setToolTipText("Create a horizontal chart"); + this.horizontal.addActionListener(this); + panel.add(this.horizontal); + + // excl100.setToolTipText(""); + // top.add(excl100); + + return (panel); + } + + + private JPanel createButtonMenu() { + JPanel panel = new JPanel(); + //TitledBorder tb = BorderFactory.createTitledBorder("Chart"); + //panel.setBorder(tb); + panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); + + // apply button + apply = new JButton ("Apply"); + apply.setToolTipText("Apply changes and redraw chart"); + apply.addActionListener(this); + panel.add(apply); + + // reset button + reset = new JButton ("Reset"); + reset.setToolTipText("Change back to default settings"); + reset.addActionListener(this); + panel.add(reset); + + return (panel); + } + private void resetChartSettings() { // top toggle buttons this.mainOnly.setSelected(true); this.callPath.setSelected(false); this.logY.setSelected(false); - this.scalability.setSelected(false); - this.efficiency.setSelected(false); - this.constantProblem.setSelected(false); + //chartType.setSelectedIndex(0); + valueRB.setSelected(true); + //this.scalability.setSelected(false); + //this.efficiency.setSelected(false); + //this.constantProblem.setSelected(false); + weakScaling.setSelected(true); this.horizontal.setSelected(false); this.showZero.setSelected(true); // left text fields @@ -379,163 +678,6 @@ private void resetYAxisValues(boolean intervalEvent) { return; } - private JPanel createTopMenu() { - JPanel top = new JPanel(); - top.setLayout(new BoxLayout(top, BoxLayout.X_AXIS)); - - this.mainOnly.setToolTipText("Only select the \"main\" event (i.e. maximum inclusive)"); - this.mainOnly.addActionListener(this); - top.add(this.mainOnly); - - this.callPath.setToolTipText("Include \"call path\" events (i.e. main() => foo())"); - this.callPath.addActionListener(this); - top.add(this.callPath); - - // excl100.setToolTipText(""); - // top.add(excl100); - - this.logY.setToolTipText("Use a Logarithmic Y axis"); - this.logY.addActionListener(this); - top.add(this.logY); - - this.scalability.setToolTipText("Create a Scalability Chart"); - this.scalability.addActionListener(this); - top.add(this.scalability); - - this.efficiency.setToolTipText("Create a Relative Efficiency Chart"); - this.efficiency.addActionListener(this); - top.add(this.efficiency); - - this.constantProblem.setToolTipText("Scaling type (Strong Scaling or Weak Scaling)"); - this.constantProblem.addActionListener(this); - top.add(this.constantProblem); - - this.horizontal.setToolTipText("Create a horizontal chart"); - this.horizontal.addActionListener(this); - top.add(this.horizontal); - - this.showZero.setToolTipText("Include zero value in y-axis range"); - this.showZero.addActionListener(this); - top.add(this.showZero); - - return (top); - } - - private JPanel createLeftMenu() { - // create a new panel, with a vertical box layout - JPanel left = new JPanel(); - left.setLayout(new BoxLayout(left, BoxLayout.Y_AXIS)); - //left.setLayout(new FlowLayout(FlowLayout.LEFT)); - //left.setLayout(new GridLayout(0,1,0,0)); - - // chart title - left.add(titleLabel); - this.chartTitle.addActionListener(this); - left.add(chartTitle); - - this.tableColumns = server.getChartFieldNames(); - - // series name - left.add(seriesLabel); - series = new MyJComboBox(tableColumns.toArray()); - series.addItem(INTERVAL_EVENT_NAME); - series.addItem(INTERVAL_EVENT_GROUP_NAME); - series.addItem(ATOMIC_EVENT_NAME); - series.addActionListener(this); - left.add(series); - - // x axis value - left.add(xaxisValueLabel); - xaxisValue = new MyJComboBox(tableColumns.toArray()); - xaxisValue.addActionListener(this); - this.xaxisValue.addActionListener(this); - left.add(xaxisValue); - left.add(xaxisNameLabel); - this.xaxisName.addActionListener(this); - left.add(xaxisName); - - // y axis value - left.add(yaxisValueLabel); - String[] valueOptions = {"tmp"};// this will get reset in a few lines... - yaxisValue = new MyJComboBox(valueOptions); - this.yaxisValue.addActionListener(this); - resetYAxisValues(true); // ...right here! - left.add(yaxisValue); - left.add(yaxisNameLabel); - this.yaxisName.addActionListener(this); - left.add(yaxisName); - - // dimension reduction - left.add(dimensionLabel); - Object[] dimensionOptions = TransformationType.getDimensionReductions(); - dimension = new MyJComboBox(dimensionOptions); - dimension.addActionListener(this); - this.dimension.addActionListener(this); - left.add(dimension); - left.add(dimensionXLabel); - this.dimensionXValue.addActionListener(this); - left.add(dimensionXValue); - - // metric of interest - left.add(metricLabel); - metric = new MyJComboBox(); - this.metric.addActionListener(this); - left.add(metric); - - // units of interest - left.add(unitsLabel); - units = new MyJComboBox(unitOptions); - this.units.addActionListener(this); - this.units.setSelectedIndex(2); // default to seconds - left.add(this.units); - - // event of interest - left.add(eventLabel); - event = new MyJComboBox(); - this.event.addActionListener(this); - left.add(event); - - // XML metadata - left.add(seriesXmlNameLabel); - seriesXmlName = new MyJComboBox(); - this.seriesXmlName.addActionListener(this); - left.add(seriesXmlName); - - left.add(xmlNameLabel); - xmlName = new MyJComboBox(); - this.xmlName.addActionListener(this); - left.add(xmlName); - - left.add(this.angleXLabels); - left.add(this.alwaysCategory); - //left.add(xmlValueLabel); - //xmlValue = new MyJComboBox(); - //left.add(xmlValue); - - // apply button - apply = new JButton ("Apply"); - apply.setToolTipText("Apply changes and redraw chart"); - apply.addActionListener(this); - left.add(apply); - - // reset button - reset = new JButton ("Reset"); - reset.setToolTipText("Change back to default settings"); - reset.addActionListener(this); - left.add(reset); - - return (left); - } - - private JPanel createChartPanel() { - this.chartPanel = new JPanel(new BorderLayout()); - return (this.chartPanel); - } - - public JPanel getChartPanel() { - return (this.chartPanel); - } - private void updateChart () { // the user has selected the application, experiment, trial // from the navigation tree. Now set the other parameters. @@ -695,18 +837,14 @@ private void updateChart () { facade.setChartEventNoCallPath(this.callPath.isSelected()?0:1); //reversed logic facade.setChartLogYAxis(this.logY.isSelected()?1:0); - facade.setChartScalability(this.scalability.isSelected()?1:0); - facade.setChartEfficiency(this.efficiency.isSelected()?1:0); - facade.setChartConstantProblem(this.constantProblem.isSelected()?1:0); + facade.setChartScalability(this.scalaRB.isSelected()?1:0); + facade.setChartEfficiency(this.efficRB.isSelected()?1:0); + facade.setChartConstantProblem(this.strongScaling.isSelected()?1:0); facade.setChartHorizontal(this.horizontal.isSelected()?1:0); facade.setShowZero(this.showZero.isSelected()?1:0); // create the Chart - this.chartPanel.setVisible(false); - this.chartPanel.removeAll(); - this.chartPanel.add(new ChartPanel(doGeneralChart()), BorderLayout.CENTER); - this.repaint(); - this.chartPanel.setVisible(true); + doGeneralChart(); } public void actionPerformed(ActionEvent e) { @@ -728,20 +866,6 @@ public void actionPerformed(ActionEvent e) { } } else if (source == reset) { resetChartSettings(); - } else if (source == scalability) { - if (scalability.isSelected()) { - efficiency.setSelected(false); - } - } else if (source == efficiency) { - if (efficiency.isSelected()) { - scalability.setSelected(false); - } - } else if (source == constantProblem) { - if (constantProblem.isSelected()) { - constantProblem.setText("Weak Scaling"); - } else { - constantProblem.setText("Strong Scaling"); - } } else if (source == mainOnly) { if (mainOnly.isSelected()) { this.eventLabel.setEnabled(false); @@ -852,7 +976,7 @@ public void drawChart() { * the x-axis, and some measurement on the y-axis. * */ - private JFreeChart doGeneralChart () { + private PerfExplorerChart doGeneralChart () { // get the data PerfExplorerModel model = PerfExplorerModel.getModel(); @@ -1076,9 +1200,9 @@ private JFreeChart doGeneralChart () { customizeCategoryChart(model, rawData, chart); } - //PerfExplorerChart pec = new PerfExplorerChart(chart, model.getChartTitle()); + PerfExplorerChart pec = new PerfExplorerChart(chart, model.getChartTitle()); - return chart; + return pec; } private void customizeLineChart(PerfExplorerModel model,RMIGeneralChartData rawData, JFreeChart chart) { @@ -1170,15 +1294,6 @@ private void customizeCategoryChart(PerfExplorerModel model, } } - public Dimension getImageSize(boolean fullScreen, boolean header) { - return this.getChartPanel().getSize(); - } - - public void export(Graphics2D g2D, boolean toScreen, boolean fullWindow, boolean drawHeader) { - this.getChartPanel().setDoubleBuffered(false); - this.getChartPanel().paintAll(g2D); - this.getChartPanel().setDoubleBuffered(true); - } private String shortName(String longName) { StringTokenizer st = new StringTokenizer(longName, "("); diff --git a/tools/src/perfexplorer/src/client/PerfExplorerActionListener.java b/tools/src/perfexplorer/src/client/PerfExplorerActionListener.java index 8f56a3ab3..e1d8e3347 100644 --- a/tools/src/perfexplorer/src/client/PerfExplorerActionListener.java +++ b/tools/src/perfexplorer/src/client/PerfExplorerActionListener.java @@ -8,9 +8,7 @@ import java.util.ArrayList; import java.util.List; import java.util.ListIterator; -import java.util.Map; -import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JFileChooser; @@ -45,7 +43,6 @@ public class PerfExplorerActionListener implements ActionListener { public final static String LOADSCRIPT = "Load Analysis Script"; public final static String RERUNSCRIPT = "Re-run Analysis Script"; public final static String SAVE_MAIN = "Save Main Window As Vector Image"; - public final static String SAVE = "Save As Vector Image"; public final static String CONSOLE = "Open New Console Window"; public final static String QUIT = "Quit PerfExplorer"; public final static String QUIT_SERVER = "Quit PerfExplorer (Shutdown Server)"; @@ -145,10 +142,8 @@ public void actionPerformed (ActionEvent event) { saveMain(); } else if (arg.equals(CONSOLE)) { new Console(); - } else if (arg.equals(SAVE)) { - saveThyself(); - // help menu items - } else if (arg.equals(ABOUT)) { + } + else if (arg.equals(ABOUT)) { createAboutWindow(); } else if (arg.equals(SEARCH)) { createHelpWindow(); @@ -844,16 +839,6 @@ public boolean runScript() { return true; } } - public void saveThyself() { - //System.out.println("Daemon come out!"); - try { - VectorExport.promptForVectorExport (ChartPane.getPane(), "PerfExplorer"); - } catch (Exception e) { - System.out.println("File Export Failed!"); - } - return; - } - public void saveMain() { //System.out.println("Daemon come out!"); diff --git a/tools/src/perfexplorer/src/client/PerfExplorerMainJMenuBar.java b/tools/src/perfexplorer/src/client/PerfExplorerMainJMenuBar.java index 7485b9954..00997178c 100644 --- a/tools/src/perfexplorer/src/client/PerfExplorerMainJMenuBar.java +++ b/tools/src/perfexplorer/src/client/PerfExplorerMainJMenuBar.java @@ -39,12 +39,6 @@ private void createFileMenu(ActionListener listener) { rerunItem.addActionListener(listener); fileMenu.add(rerunItem); - //Add a menu item. - JMenuItem saveItem = new JMenuItem( - PerfExplorerActionListener.SAVE); - saveItem.addActionListener(listener); - fileMenu.add(saveItem); - //Add a menu item. JMenuItem consoleItem = new JMenuItem( PerfExplorerActionListener.CONSOLE); diff --git a/tools/src/perfexplorer/src/client/PerfExplorerProbabilityPlot.java b/tools/src/perfexplorer/src/client/PerfExplorerProbabilityPlot.java index 3b1c6b0cc..2fd38f44a 100644 --- a/tools/src/perfexplorer/src/client/PerfExplorerProbabilityPlot.java +++ b/tools/src/perfexplorer/src/client/PerfExplorerProbabilityPlot.java @@ -1,31 +1,30 @@ package edu.uoregon.tau.perfexplorer.client; -import java.io.IOException; -import java.util.List; -import java.util.ArrayList; -import java.util.Collections; +import java.awt.Toolkit; +import java.net.URL; + import javax.swing.JFrame; -import java.lang.Math; + import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.labels.StandardXYToolTipGenerator; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; -import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; -import org.jfree.data.xy.XYSeries; -import org.jfree.data.xy.XYSeriesCollection; import org.jfree.data.xy.XYDataset; -import org.jfree.chart.labels.StandardXYToolTipGenerator; -import java.text.DecimalFormat; -import java.text.FieldPosition; -import java.net.URL; -import edu.uoregon.tau.common.Utility; -import edu.uoregon.tau.perfexplorer.common.*; -import java.awt.Toolkit; +import edu.uoregon.tau.common.Utility; +import edu.uoregon.tau.perfexplorer.common.ChartDataType; +import edu.uoregon.tau.perfexplorer.common.RMIChartData; +import edu.uoregon.tau.perfexplorer.common.RMISortableIntervalEvent; public class PerfExplorerProbabilityPlot extends PerfExplorerChartWindow { + /** + * + */ + private static final long serialVersionUID = -3673272562377355045L; + public PerfExplorerProbabilityPlot(JFreeChart chart, String name) { super(chart, name); } @@ -66,8 +65,13 @@ public static JFrame doProbabilityPlot() { else renderer.setSeriesLinesVisible(y, false); } - renderer.setToolTipGenerator(new StandardXYToolTipGenerator() { - public String generateToolTip(XYDataset inDataset, int arg1, int arg2) { + renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator() { + /** + * + */ + private static final long serialVersionUID = 5374367919012452021L; + + public String generateToolTip(XYDataset inDataset, int arg1, int arg2) { ProbabilityPlotDataset dataset = (ProbabilityPlotDataset) inDataset; return dataset.getTooltip(arg1, arg2); }