mstover1 02/04/28 20:01:54 Modified: src_1/org/apache/jmeter/visualizers GraphVisualizer.java Log: no message Revision Changes Path 1.4 +371 -370 jakarta-jmeter/src_1/org/apache/jmeter/visualizers/GraphVisualizer.java Index: GraphVisualizer.java =================================================================== RCS file: /home/cvs/jakarta-jmeter/src_1/org/apache/jmeter/visualizers/GraphVisualizer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- GraphVisualizer.java 26 Apr 2002 23:26:14 -0000 1.3 +++ GraphVisualizer.java 29 Apr 2002 03:01:54 -0000 1.4 @@ -1,370 +1,371 @@ -/* - * ==================================================================== - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2001 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, - * if any, must include the following acknowledgment: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowledgment may appear in the software itself, - * if and wherever such third-party acknowledgments normally appear. - * - * 4. The names "Apache" and "Apache Software Foundation" and - * "Apache JMeter" must not be used to endorse or promote products - * derived from this software without prior written permission. For - * written permission, please contact [EMAIL PROTECTED] - * - * 5. Products derived from this software may not be called "Apache", - * "Apache JMeter", nor may "Apache" appear in their name, without - * prior written permission of the Apache Software Foundation. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - */ -package org.apache.jmeter.visualizers; -import java.awt.*; -import java.awt.event.*; -import java.util.*; -import javax.swing.*; -import javax.swing.border.*; -import org.apache.jmeter.gui.*; -import org.apache.jmeter.gui.util.VerticalLayout; -import org.apache.jmeter.samplers.SampleResult; -import org.apache.jmeter.samplers.Clearable; -import org.apache.jmeter.util.JMeterUtils; -import org.apache.jmeter.visualizers.gui.AbstractVisualizer; - -/**************************************** - * This class implements a statistical analyser that calculates both the average - * and the standard deviation of the sampling process and outputs them as - * autoscaling plots. - * - *@author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> - *@created February 8, 2001 - *@version $Revision: 1.3 $ $Date: 2002/04/26 23:26:14 $ - ***************************************/ -public class GraphVisualizer extends AbstractVisualizer - implements ImageVisualizer, ItemListener, GraphListener,Clearable -{ - GraphModel model; - private JTextField maxYField = null; - private JTextField minYField = null; - private JTextField noSamplesField = null; - - private Graph graph; - private JCheckBox data; - private JCheckBox average; - private JCheckBox deviation; - private JTextField dataField; - private JTextField averageField; - private JTextField deviationField; - - - /**************************************** - * Constructor for the GraphVisualizer object - ***************************************/ - public GraphVisualizer() - { - model = new GraphModel(); - model.addGraphListener(this); - graph = new Graph(model); - init(); - } - - - /**************************************** - * Gets the Image attribute of the GraphVisualizer object - * - *@return The Image value - ***************************************/ - public Image getImage() - { - Image result = graph.createImage(graph.getWidth(), graph.getHeight()); - graph.paintComponent(result.getGraphics()); - - return result; - } - - - /**************************************** - * !ToDo (Method description) - ***************************************/ - public void updateGui() - { - graph.updateGui(); - noSamplesField.setText(Long.toString(model.getSampleCount())); - dataField.setText(Long.toString(model.getCurrentData())); - averageField.setText(Long.toString(model.getCurrentAverage())); - deviationField.setText(Long.toString(model.getCurrentDeviation())); - updateYAxis(); - } - - - /**************************************** - * !ToDo (Method description) - * - *@param s !ToDo (Parameter description) - ***************************************/ - public void updateGui(Sample s) - { - // We have received one more sample - noSamplesField.setText(Long.toString(model.getSampleCount())); - dataField.setText(Long.toString(s.data)); - averageField.setText(Long.toString(s.average)); - deviationField.setText(Long.toString(s.deviation)); - updateYAxis(); - } - - /**************************************** - * !ToDo (Method description) - * - *@param res !ToDo (Parameter description) - ***************************************/ - public void add(SampleResult res) - { - model.addSample(res); - } - - /**************************************** - * !ToDoo (Method description) - * - *@return !ToDo (Return description) - ***************************************/ - public String getStaticLabel() - { - return JMeterUtils.getResString("graph_results_title"); - } - - /**************************************** - * Description of the Method - * - *@param e Description of Parameter - ***************************************/ - public void itemStateChanged(ItemEvent e) - { - if(e.getItem() == data) - { - this.graph.enableData(e.getStateChange() == ItemEvent.SELECTED); - } - else if(e.getItem() == average) - { - this.graph.enableAverage(e.getStateChange() == ItemEvent.SELECTED); - } - else if(e.getItem() == deviation) - { - this.graph.enableDeviation(e.getStateChange() == ItemEvent.SELECTED); - } - this.graph.repaint(); - } - - - /**************************************** - * Description of the Method - ***************************************/ - public synchronized void clear() - { - //this.graph.clear(); - model.clear(); - dataField.setText("0000"); - averageField.setText("0000"); - deviationField.setText("0000"); - updateYAxis(); - repaint(); - } - - - /**************************************** - * Description of the Method - * - *@return Description of the Returned Value - ***************************************/ - public String toString() - { - return "Show the samples analysis as dot plots"; - } - - - /**************************************** - * Update the max and min value of the Y axis - ***************************************/ - private void updateYAxis() - { - maxYField.setText(Long.toString(model.getMax())); - minYField.setText("0"); - } - - - /**************************************** - * Description of the Method - ***************************************/ - private void init() - { - this.setLayout(new BorderLayout()); - - // MAIN PANEL - JPanel mainPanel = new JPanel(); - Border margin = new EmptyBorder(10, 10, 5, 10); - mainPanel.setBorder(margin); - mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); - - // TITLE - JLabel panelTitleLabel = new JLabel(JMeterUtils.getResString("graph_results_title")); - Font curFont = panelTitleLabel.getFont(); - int curFontSize = curFont.getSize(); - curFontSize += 4; - panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize)); - mainPanel.add(panelTitleLabel); - - // NAME - mainPanel.add(getNamePanel()); - - // Set up panel where user can choose which graphs to display - JPanel chooseGraphsPanel = new JPanel(); - chooseGraphsPanel.setLayout(new FlowLayout()); - JLabel selectGraphsLabel = new JLabel(JMeterUtils.getResString("graph_choose_graphs")); - data = new JCheckBox(JMeterUtils.getResString("graph_results_data")); - data.setSelected(true); - data.addItemListener(this); - data.setForeground(Color.black); - average = new JCheckBox(JMeterUtils.getResString("graph_results_average")); - average.setSelected(true); - average.addItemListener(this); - average.setForeground(Color.blue); - deviation = new JCheckBox(JMeterUtils.getResString("graph_results_deviation")); - deviation.setSelected(true); - deviation.addItemListener(this); - deviation.setForeground(Color.red); - - chooseGraphsPanel.add(selectGraphsLabel); - chooseGraphsPanel.add(data); - chooseGraphsPanel.add(average); - chooseGraphsPanel.add(deviation); - - // Set up the graph itself - JScrollPane graphScrollPanel = new JScrollPane(graph, JScrollPane.VERTICAL_SCROLLBAR_NEVER, - JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - graphScrollPanel.setViewportBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); - //graphScrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); - //graphScrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); - - - // Set up Y axis panel - JPanel graphYAxisPanel = new JPanel(); - graphYAxisPanel.setLayout(new BorderLayout()); - JPanel maxYPanel = new JPanel(new FlowLayout()); - JLabel maxYLabel = new JLabel(JMeterUtils.getResString("graph_results_ms")); - maxYField = new JTextField(5); - maxYField.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); - maxYField.setEditable(false); - maxYField.setForeground(Color.black); - maxYField.setBackground(getBackground()); - maxYField.setHorizontalAlignment(JTextField.RIGHT); - maxYPanel.add(maxYField); - maxYPanel.add(maxYLabel); - JPanel minYPanel = new JPanel(new FlowLayout()); - JLabel minYLabel = new JLabel(JMeterUtils.getResString("graph_results_ms")); - minYField = new JTextField(3); - minYField.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); - minYField.setEditable(false); - minYField.setForeground(Color.black); - minYField.setBackground(getBackground()); - minYField.setHorizontalAlignment(JTextField.RIGHT); - minYPanel.add(minYField); - minYPanel.add(minYLabel); - graphYAxisPanel.add(maxYPanel, BorderLayout.NORTH); - graphYAxisPanel.add(minYPanel, BorderLayout.SOUTH); - - // Set up footer of graph which displays numerics of the graphs - JPanel dataPanel = new JPanel(); - JLabel dataLabel = new JLabel(JMeterUtils.getResString("graph_results_latest_sample")); - dataLabel.setForeground(Color.black); - dataField = new JTextField(5); - dataField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - dataField.setEditable(false); - dataField.setForeground(Color.black); - dataField.setBackground(getBackground()); - dataPanel.add(dataLabel); - dataPanel.add(dataField); - JPanel averagePanel = new JPanel(); - JLabel averageLabel = new JLabel(JMeterUtils.getResString("graph_results_average")); - averageLabel.setForeground(Color.blue); - averageField = new JTextField(5); - averageField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - averageField.setEditable(false); - averageField.setForeground(Color.blue); - averageField.setBackground(getBackground()); - averagePanel.add(averageLabel); - averagePanel.add(averageField); - JPanel deviationPanel = new JPanel(); - JLabel deviationLabel = new JLabel(JMeterUtils.getResString("graph_results_deviation")); - deviationLabel.setForeground(Color.red); - deviationField = new JTextField(5); - deviationField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - deviationField.setEditable(false); - deviationField.setForeground(Color.red); - deviationField.setBackground(getBackground()); - deviationPanel.add(deviationLabel); - deviationPanel.add(deviationField); - JPanel noSamplesPanel = new JPanel(); - JLabel noSamplesLabel = new JLabel(JMeterUtils.getResString("graph_results_no_samples")); - noSamplesField = new JTextField(10); - noSamplesField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - noSamplesField.setEditable(false); - noSamplesField.setForeground(Color.black); - noSamplesField.setBackground(getBackground()); - noSamplesPanel.add(noSamplesLabel); - noSamplesPanel.add(noSamplesField); - - JPanel graphInfoPanel = new JPanel(); - graphInfoPanel.setLayout(new FlowLayout()); - graphInfoPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - - graphInfoPanel.add(noSamplesPanel); - graphInfoPanel.add(dataPanel); - graphInfoPanel.add(averagePanel); - graphInfoPanel.add(deviationPanel); - - // Set up the graph with header, footer, Y axis and graph display - JPanel graphPanel = new JPanel(); - graphPanel.setLayout(new BorderLayout()); - graphPanel.add(graphYAxisPanel, BorderLayout.WEST); - graphPanel.add(chooseGraphsPanel, BorderLayout.NORTH); - graphPanel.add(graphScrollPanel, BorderLayout.CENTER); - graphPanel.add(graphInfoPanel, BorderLayout.SOUTH); - - // Add the main panel and the graph - this.add(mainPanel, BorderLayout.NORTH); - this.add(graphPanel, BorderLayout.CENTER); - } -} +/* + * ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache JMeter" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache", + * "Apache JMeter", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + */ +package org.apache.jmeter.visualizers; +import java.awt.*; +import java.awt.event.*; +import java.util.*; +import javax.swing.*; +import javax.swing.border.*; +import org.apache.jmeter.gui.*; +import org.apache.jmeter.gui.util.VerticalLayout; +import org.apache.jmeter.samplers.SampleResult; +import org.apache.jmeter.samplers.Clearable; +import org.apache.jmeter.util.JMeterUtils; +import org.apache.jmeter.visualizers.gui.AbstractVisualizer; + +/**************************************** + * This class implements a statistical analyser that calculates both the average + * and the standard deviation of the sampling process and outputs them as + * autoscaling plots. + * + *@author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a> + *@created February 8, 2001 + *@version $Revision: 1.4 $ $Date: 2002/04/29 03:01:54 $ + ***************************************/ +public class GraphVisualizer extends AbstractVisualizer + implements ImageVisualizer, ItemListener, GraphListener,Clearable +{ + GraphModel model; + private JTextField maxYField = null; + private JTextField minYField = null; + private JTextField noSamplesField = null; + + private Graph graph; + private JCheckBox data; + private JCheckBox average; + private JCheckBox deviation; + private JTextField dataField; + private JTextField averageField; + private JTextField deviationField; + + + /**************************************** + * Constructor for the GraphVisualizer object + ***************************************/ + public GraphVisualizer() + { + model = new GraphModel(); + model.addGraphListener(this); + graph = new Graph(model); + init(); + } + + + /**************************************** + * Gets the Image attribute of the GraphVisualizer object + * + *@return The Image value + ***************************************/ + public Image getImage() + { + Image result = graph.createImage(graph.getWidth(), graph.getHeight()); + graph.paintComponent(result.getGraphics()); + + return result; + } + + + /**************************************** + * !ToDo (Method description) + ***************************************/ + public void updateGui() + { + graph.updateGui(); + noSamplesField.setText(Long.toString(model.getSampleCount())); + dataField.setText(Long.toString(model.getCurrentData())); + averageField.setText(Long.toString(model.getCurrentAverage())); + deviationField.setText(Long.toString(model.getCurrentDeviation())); + updateYAxis(); + } + + + /**************************************** + * !ToDo (Method description) + * + *@param s !ToDo (Parameter description) + ***************************************/ + public void updateGui(Sample s) + { + // We have received one more sample + noSamplesField.setText(Long.toString(model.getSampleCount())); + dataField.setText(Long.toString(s.data)); + averageField.setText(Long.toString(s.average)); + deviationField.setText(Long.toString(s.deviation)); + updateYAxis(); + } + + /**************************************** + * !ToDo (Method description) + * + *@param res !ToDo (Parameter description) + ***************************************/ + public void add(SampleResult res) + { + model.addSample(res); + } + + /**************************************** + * !ToDoo (Method description) + * + *@return !ToDo (Return description) + ***************************************/ + public String getStaticLabel() + { + return JMeterUtils.getResString("graph_results_title"); + } + + /**************************************** + * Description of the Method + * + *@param e Description of Parameter + ***************************************/ + public void itemStateChanged(ItemEvent e) + { + if(e.getItem() == data) + { + this.graph.enableData(e.getStateChange() == ItemEvent.SELECTED); + } + else if(e.getItem() == average) + { + this.graph.enableAverage(e.getStateChange() == ItemEvent.SELECTED); + } + else if(e.getItem() == deviation) + { + this.graph.enableDeviation(e.getStateChange() == ItemEvent.SELECTED); + } + this.graph.repaint(); + } + + + /**************************************** + * Description of the Method + ***************************************/ + public synchronized void clear() + { + //this.graph.clear(); + model.clear(); + dataField.setText("0000"); + averageField.setText("0000"); + deviationField.setText("0000"); + updateYAxis(); + repaint(); + } + + + /**************************************** + * Description of the Method + * + *@return Description of the Returned Value + ***************************************/ + public String toString() + { + return "Show the samples analysis as dot plots"; + } + + + /**************************************** + * Update the max and min value of the Y axis + ***************************************/ + private void updateYAxis() + { + maxYField.setText(Long.toString(model.getMax())); + minYField.setText("0"); + } + + + /**************************************** + * Description of the Method + ***************************************/ + private void init() + { + this.setLayout(new BorderLayout()); + + // MAIN PANEL + JPanel mainPanel = new JPanel(); + Border margin = new EmptyBorder(10, 10, 5, 10); + mainPanel.setBorder(margin); + mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); + + // TITLE + JLabel panelTitleLabel = new JLabel(JMeterUtils.getResString("graph_results_title")); + Font curFont = panelTitleLabel.getFont(); + int curFontSize = curFont.getSize(); + curFontSize += 4; + panelTitleLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), curFontSize)); + mainPanel.add(panelTitleLabel); + + // NAME + mainPanel.add(getNamePanel()); + mainPanel.add(this.getFilePanel()); + + // Set up panel where user can choose which graphs to display + JPanel chooseGraphsPanel = new JPanel(); + chooseGraphsPanel.setLayout(new FlowLayout()); + JLabel selectGraphsLabel = new JLabel(JMeterUtils.getResString("graph_choose_graphs")); + data = new JCheckBox(JMeterUtils.getResString("graph_results_data")); + data.setSelected(true); + data.addItemListener(this); + data.setForeground(Color.black); + average = new JCheckBox(JMeterUtils.getResString("graph_results_average")); + average.setSelected(true); + average.addItemListener(this); + average.setForeground(Color.blue); + deviation = new JCheckBox(JMeterUtils.getResString("graph_results_deviation")); + deviation.setSelected(true); + deviation.addItemListener(this); + deviation.setForeground(Color.red); + + chooseGraphsPanel.add(selectGraphsLabel); + chooseGraphsPanel.add(data); + chooseGraphsPanel.add(average); + chooseGraphsPanel.add(deviation); + + // Set up the graph itself + JScrollPane graphScrollPanel = new JScrollPane(graph, JScrollPane.VERTICAL_SCROLLBAR_NEVER, + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + graphScrollPanel.setViewportBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + //graphScrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + //graphScrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); + + + // Set up Y axis panel + JPanel graphYAxisPanel = new JPanel(); + graphYAxisPanel.setLayout(new BorderLayout()); + JPanel maxYPanel = new JPanel(new FlowLayout()); + JLabel maxYLabel = new JLabel(JMeterUtils.getResString("graph_results_ms")); + maxYField = new JTextField(5); + maxYField.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); + maxYField.setEditable(false); + maxYField.setForeground(Color.black); + maxYField.setBackground(getBackground()); + maxYField.setHorizontalAlignment(JTextField.RIGHT); + maxYPanel.add(maxYField); + maxYPanel.add(maxYLabel); + JPanel minYPanel = new JPanel(new FlowLayout()); + JLabel minYLabel = new JLabel(JMeterUtils.getResString("graph_results_ms")); + minYField = new JTextField(3); + minYField.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); + minYField.setEditable(false); + minYField.setForeground(Color.black); + minYField.setBackground(getBackground()); + minYField.setHorizontalAlignment(JTextField.RIGHT); + minYPanel.add(minYField); + minYPanel.add(minYLabel); + graphYAxisPanel.add(maxYPanel, BorderLayout.NORTH); + graphYAxisPanel.add(minYPanel, BorderLayout.SOUTH); + + // Set up footer of graph which displays numerics of the graphs + JPanel dataPanel = new JPanel(); + JLabel dataLabel = new JLabel(JMeterUtils.getResString("graph_results_latest_sample")); + dataLabel.setForeground(Color.black); + dataField = new JTextField(5); + dataField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + dataField.setEditable(false); + dataField.setForeground(Color.black); + dataField.setBackground(getBackground()); + dataPanel.add(dataLabel); + dataPanel.add(dataField); + JPanel averagePanel = new JPanel(); + JLabel averageLabel = new JLabel(JMeterUtils.getResString("graph_results_average")); + averageLabel.setForeground(Color.blue); + averageField = new JTextField(5); + averageField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + averageField.setEditable(false); + averageField.setForeground(Color.blue); + averageField.setBackground(getBackground()); + averagePanel.add(averageLabel); + averagePanel.add(averageField); + JPanel deviationPanel = new JPanel(); + JLabel deviationLabel = new JLabel(JMeterUtils.getResString("graph_results_deviation")); + deviationLabel.setForeground(Color.red); + deviationField = new JTextField(5); + deviationField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + deviationField.setEditable(false); + deviationField.setForeground(Color.red); + deviationField.setBackground(getBackground()); + deviationPanel.add(deviationLabel); + deviationPanel.add(deviationField); + JPanel noSamplesPanel = new JPanel(); + JLabel noSamplesLabel = new JLabel(JMeterUtils.getResString("graph_results_no_samples")); + noSamplesField = new JTextField(10); + noSamplesField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + noSamplesField.setEditable(false); + noSamplesField.setForeground(Color.black); + noSamplesField.setBackground(getBackground()); + noSamplesPanel.add(noSamplesLabel); + noSamplesPanel.add(noSamplesField); + + JPanel graphInfoPanel = new JPanel(); + graphInfoPanel.setLayout(new FlowLayout()); + graphInfoPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + + graphInfoPanel.add(noSamplesPanel); + graphInfoPanel.add(dataPanel); + graphInfoPanel.add(averagePanel); + graphInfoPanel.add(deviationPanel); + + // Set up the graph with header, footer, Y axis and graph display + JPanel graphPanel = new JPanel(); + graphPanel.setLayout(new BorderLayout()); + graphPanel.add(graphYAxisPanel, BorderLayout.WEST); + graphPanel.add(chooseGraphsPanel, BorderLayout.NORTH); + graphPanel.add(graphScrollPanel, BorderLayout.CENTER); + graphPanel.add(graphInfoPanel, BorderLayout.SOUTH); + + // Add the main panel and the graph + this.add(mainPanel, BorderLayout.NORTH); + this.add(graphPanel, BorderLayout.CENTER); + } +}
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
