KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > jmeter > visualizers > TableVisualizer


1 // $Header: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/TableVisualizer.java,v 1.13.2.1 2004/10/13 00:33:32 sebb Exp $
2
/*
3  * Copyright 2002-2004 The Apache Software Foundation.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17 */

18
19 package org.apache.jmeter.visualizers;
20
21 import java.awt.BorderLayout JavaDoc;
22 import java.awt.Color JavaDoc;
23 import java.awt.FlowLayout JavaDoc;
24
25 import javax.swing.BorderFactory JavaDoc;
26 import javax.swing.JLabel JavaDoc;
27 import javax.swing.JPanel JavaDoc;
28 import javax.swing.JScrollPane JavaDoc;
29 import javax.swing.JTable JavaDoc;
30 import javax.swing.JTextField JavaDoc;
31 import javax.swing.border.Border JavaDoc;
32 import javax.swing.border.EmptyBorder JavaDoc;
33 import javax.swing.event.TableModelEvent JavaDoc;
34
35 import org.apache.jmeter.samplers.Clearable;
36 import org.apache.jmeter.samplers.SampleResult;
37 import org.apache.jmeter.util.JMeterUtils;
38 import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
39 import org.apache.jorphan.gui.layout.VerticalLayout;
40 import org.apache.jorphan.logging.LoggingManager;
41 import org.apache.log.Logger;
42
43 /**
44  * This class implements a statistical analyser that calculates both the average
45  * and the standard deviation of the sampling process. The samples are displayed
46  * in a JTable, and the statistics are displayed at the bottom of the table.
47  *
48  * created March 10, 2002
49  *@version $Revision: 1.13.2.1 $ Updated on $Date: 2004/10/13 00:33:32 $
50  */

51 public class TableVisualizer
52     extends AbstractVisualizer
53     implements GraphListener, Clearable
54 {
55     private static transient Logger log =LoggingManager.getLoggerForClass();
56
57     private TableDataModel model = null;
58     private JTable JavaDoc table = null;
59     private JTextField JavaDoc dataField = null;
60     private JTextField JavaDoc averageField = null;
61     private JTextField JavaDoc deviationField = null;
62     private JTextField JavaDoc noSamplesField = null;
63     private JScrollPane JavaDoc tableScrollPanel = null;
64
65     /**
66      * Constructor for the TableVisualizer object.
67      */

68     public TableVisualizer()
69     {
70         super();
71         model = new TableDataModel();
72         model.addGraphListener(this);
73         init();
74     }
75
76     public String JavaDoc getLabelResource()
77     {
78         return "view_results_in_table";
79     }
80
81     public void updateGui()
82     {
83         // Not completely sure if this is the correct way of updating the table
84
table.tableChanged(new TableModelEvent JavaDoc(model));
85         tableScrollPanel.revalidate();
86         tableScrollPanel.repaint();
87         updateTextFields();
88     }
89
90     protected synchronized void updateTextFields()
91     {
92             noSamplesField.setText(Long.toString(model.getSampleCount()));
93             dataField.setText(Long.toString(model.getCurrentData()));
94             averageField.setText(Long.toString(model.getCurrentAverage()));
95             deviationField.setText(Long.toString(model.getCurrentDeviation()));
96     }
97
98     public void add(SampleResult res)
99     {
100         model.addSample(res);
101     }
102
103     public void updateGui(Sample s)
104     {
105         // We have received one more sample
106
// Not completely sure if this is the correct way of updating the table
107
table.tableChanged(new TableModelEvent JavaDoc(model));
108         tableScrollPanel.revalidate();
109         tableScrollPanel.repaint();
110         updateTextFields();
111     }
112
113     public synchronized void clear()
114     {
115         log.debug("Clear called",new Exception JavaDoc("Debug"));
116         // this.graph.clear();
117
model.clear();
118         dataField.setText("0000");
119         averageField.setText("0000");
120         deviationField.setText("0000");
121         repaint();
122     }
123
124     public String JavaDoc toString()
125     {
126         return "Show the samples in a table";
127     }
128
129     private void init()
130     {
131         this.setLayout(new BorderLayout JavaDoc());
132
133         // MAIN PANEL
134
JPanel JavaDoc mainPanel = new JPanel JavaDoc();
135         Border JavaDoc margin = new EmptyBorder JavaDoc(10, 10, 5, 10);
136
137         mainPanel.setBorder(margin);
138         mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT));
139
140         // NAME
141
mainPanel.add(makeTitlePanel());
142
143         // Set up the table itself
144
table = new JTable JavaDoc(model);
145         // table.getTableHeader().setReorderingAllowed(false);
146
tableScrollPanel = new JScrollPane JavaDoc(table);
147         tableScrollPanel.setViewportBorder(
148             BorderFactory.createEmptyBorder(2, 2, 2, 2));
149
150         // Set up footer of table which displays numerics of the graphs
151
JPanel JavaDoc dataPanel = new JPanel JavaDoc();
152         JLabel JavaDoc dataLabel =
153             new JLabel JavaDoc(JMeterUtils.getResString("graph_results_latest_sample"));
154         dataLabel.setForeground(Color.black);
155         dataField = new JTextField JavaDoc(5);
156         dataField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
157         dataField.setEditable(false);
158         dataField.setForeground(Color.black);
159         dataField.setBackground(getBackground());
160         dataPanel.add(dataLabel);
161         dataPanel.add(dataField);
162
163         JPanel JavaDoc averagePanel = new JPanel JavaDoc();
164         JLabel JavaDoc averageLabel =
165             new JLabel JavaDoc(JMeterUtils.getResString("graph_results_average"));
166         averageLabel.setForeground(Color.blue);
167         averageField = new JTextField JavaDoc(5);
168         averageField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
169         averageField.setEditable(false);
170         averageField.setForeground(Color.blue);
171         averageField.setBackground(getBackground());
172         averagePanel.add(averageLabel);
173         averagePanel.add(averageField);
174
175         JPanel JavaDoc deviationPanel = new JPanel JavaDoc();
176         JLabel JavaDoc deviationLabel =
177             new JLabel JavaDoc(JMeterUtils.getResString("graph_results_deviation"));
178         deviationLabel.setForeground(Color.red);
179         deviationField = new JTextField JavaDoc(5);
180         deviationField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
181         deviationField.setEditable(false);
182         deviationField.setForeground(Color.red);
183         deviationField.setBackground(getBackground());
184         deviationPanel.add(deviationLabel);
185         deviationPanel.add(deviationField);
186  
187         JPanel JavaDoc noSamplesPanel = new JPanel JavaDoc();
188         JLabel JavaDoc noSamplesLabel =
189             new JLabel JavaDoc(JMeterUtils.getResString("graph_results_no_samples"));
190
191         noSamplesField = new JTextField JavaDoc(10);
192         noSamplesField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
193         noSamplesField.setEditable(false);
194         noSamplesField.setForeground(Color.black);
195         noSamplesField.setBackground(getBackground());
196         noSamplesPanel.add(noSamplesLabel);
197         noSamplesPanel.add(noSamplesField);
198
199
200         JPanel JavaDoc tableInfoPanel = new JPanel JavaDoc();
201         tableInfoPanel.setLayout(new FlowLayout JavaDoc());
202         tableInfoPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
203
204         tableInfoPanel.add(noSamplesPanel);
205         tableInfoPanel.add(dataPanel);
206         tableInfoPanel.add(averagePanel);
207         tableInfoPanel.add(deviationPanel);
208
209         // Set up the table with footer
210
JPanel JavaDoc tablePanel = new JPanel JavaDoc();
211
212         tablePanel.setLayout(new BorderLayout JavaDoc());
213         tablePanel.add(tableScrollPanel, BorderLayout.CENTER);
214         tablePanel.add(tableInfoPanel, BorderLayout.SOUTH);
215
216         // Add the main panel and the graph
217
this.add(mainPanel, BorderLayout.NORTH);
218         this.add(tablePanel, BorderLayout.CENTER);
219     }
220 }
221
Popular Tags