1 18 19 package org.apache.jmeter.visualizers; 20 21 import java.awt.BorderLayout ; 22 import java.awt.Color ; 23 import java.awt.FlowLayout ; 24 25 import javax.swing.BorderFactory ; 26 import javax.swing.JLabel ; 27 import javax.swing.JPanel ; 28 import javax.swing.JScrollPane ; 29 import javax.swing.JTable ; 30 import javax.swing.JTextField ; 31 import javax.swing.border.Border ; 32 import javax.swing.border.EmptyBorder ; 33 import javax.swing.event.TableModelEvent ; 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 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 table = null; 59 private JTextField dataField = null; 60 private JTextField averageField = null; 61 private JTextField deviationField = null; 62 private JTextField noSamplesField = null; 63 private JScrollPane tableScrollPanel = null; 64 65 68 public TableVisualizer() 69 { 70 super(); 71 model = new TableDataModel(); 72 model.addGraphListener(this); 73 init(); 74 } 75 76 public String getLabelResource() 77 { 78 return "view_results_in_table"; 79 } 80 81 public void updateGui() 82 { 83 table.tableChanged(new TableModelEvent (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 table.tableChanged(new TableModelEvent (model)); 108 tableScrollPanel.revalidate(); 109 tableScrollPanel.repaint(); 110 updateTextFields(); 111 } 112 113 public synchronized void clear() 114 { 115 log.debug("Clear called",new Exception ("Debug")); 116 model.clear(); 118 dataField.setText("0000"); 119 averageField.setText("0000"); 120 deviationField.setText("0000"); 121 repaint(); 122 } 123 124 public String toString() 125 { 126 return "Show the samples in a table"; 127 } 128 129 private void init() 130 { 131 this.setLayout(new BorderLayout ()); 132 133 JPanel mainPanel = new JPanel (); 135 Border margin = new EmptyBorder (10, 10, 5, 10); 136 137 mainPanel.setBorder(margin); 138 mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); 139 140 mainPanel.add(makeTitlePanel()); 142 143 table = new JTable (model); 145 tableScrollPanel = new JScrollPane (table); 147 tableScrollPanel.setViewportBorder( 148 BorderFactory.createEmptyBorder(2, 2, 2, 2)); 149 150 JPanel dataPanel = new JPanel (); 152 JLabel dataLabel = 153 new JLabel (JMeterUtils.getResString("graph_results_latest_sample")); 154 dataLabel.setForeground(Color.black); 155 dataField = new JTextField (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 averagePanel = new JPanel (); 164 JLabel averageLabel = 165 new JLabel (JMeterUtils.getResString("graph_results_average")); 166 averageLabel.setForeground(Color.blue); 167 averageField = new JTextField (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 deviationPanel = new JPanel (); 176 JLabel deviationLabel = 177 new JLabel (JMeterUtils.getResString("graph_results_deviation")); 178 deviationLabel.setForeground(Color.red); 179 deviationField = new JTextField (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 noSamplesPanel = new JPanel (); 188 JLabel noSamplesLabel = 189 new JLabel (JMeterUtils.getResString("graph_results_no_samples")); 190 191 noSamplesField = new JTextField (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 tableInfoPanel = new JPanel (); 201 tableInfoPanel.setLayout(new FlowLayout ()); 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 JPanel tablePanel = new JPanel (); 211 212 tablePanel.setLayout(new BorderLayout ()); 213 tablePanel.add(tableScrollPanel, BorderLayout.CENTER); 214 tablePanel.add(tableInfoPanel, BorderLayout.SOUTH); 215 216 this.add(mainPanel, BorderLayout.NORTH); 218 this.add(tablePanel, BorderLayout.CENTER); 219 } 220 } 221 | Popular Tags |