View | Details | Raw Unified | Return to bug 52452
Collapse All | Expand All

(-)src/components/org/apache/jmeter/visualizers/AxisGraph.java (-6 / +142 lines)
Lines 19-24 Link Here
19
19
20
import java.awt.Color;
20
import java.awt.Color;
21
import java.awt.Dimension;
21
import java.awt.Dimension;
22
import java.awt.Font;
22
import java.awt.Graphics;
23
import java.awt.Graphics;
23
import java.awt.Graphics2D;
24
import java.awt.Graphics2D;
24
import java.awt.LayoutManager;
25
import java.awt.LayoutManager;
Lines 27-32 Link Here
27
28
28
import javax.swing.JPanel;
29
import javax.swing.JPanel;
29
30
31
import org.apache.jmeter.util.JMeterUtils;
30
import org.apache.jorphan.logging.LoggingManager;
32
import org.apache.jorphan.logging.LoggingManager;
31
import org.apache.log.Logger;
33
import org.apache.log.Logger;
32
import org.jCharts.axisChart.AxisChart;
34
import org.jCharts.axisChart.AxisChart;
Lines 42-47 Link Here
42
import org.jCharts.properties.LabelAxisProperties;
44
import org.jCharts.properties.LabelAxisProperties;
43
import org.jCharts.properties.LegendProperties;
45
import org.jCharts.properties.LegendProperties;
44
import org.jCharts.properties.PropertyException;
46
import org.jCharts.properties.PropertyException;
47
import org.jCharts.properties.util.ChartFont;
45
import org.jCharts.types.ChartType;
48
import org.jCharts.types.ChartType;
46
49
47
/**
50
/**
Lines 64-69 Link Here
64
    protected String[] xAxisLabels;
67
    protected String[] xAxisLabels;
65
    protected int width, height;
68
    protected int width, height;
66
69
70
    protected Font titleFont;
71
72
    protected Font legendFont;
73
74
    protected Color color;
75
76
    protected Color foreColor;
77
78
    protected boolean outlinesBarFlag = false;
79
80
    protected boolean showGrouping = true;
81
82
    protected int legendPlacement = LegendProperties.BOTTOM;
83
67
    /**
84
    /**
68
     *
85
     *
69
     */
86
     */
Lines 122-134 Link Here
122
        this.height = h;
139
        this.height = h;
123
    }
140
    }
124
141
142
    /**
143
     * @return the color
144
     */
145
    public Color getColor() {
146
        return color;
147
    }
148
149
    /**
150
     * @param color the color to set
151
     */
152
    public void setColor(Color color) {
153
        this.color = color;
154
    }
155
156
    /**
157
     * @return the foreColor
158
     */
159
    public Color getForeColor() {
160
        return foreColor;
161
    }
162
163
    /**
164
     * @param foreColor the foreColor to set
165
     */
166
    public void setForeColor(Color foreColor) {
167
        this.foreColor = foreColor;
168
    }
169
170
    /**
171
     * @return the titleFont
172
     */
173
    public Font getTitleFont() {
174
        return titleFont;
175
    }
176
177
    /**
178
     * @param titleFont the titleFont to set
179
     */
180
    public void setTitleFont(Font titleFont) {
181
        this.titleFont = titleFont;
182
    }
183
184
    /**
185
     * @return the legendFont
186
     */
187
    public Font getLegendFont() {
188
        return legendFont;
189
    }
190
191
    /**
192
     * @param legendFont the legendFont to set
193
     */
194
    public void setLegendFont(Font legendFont) {
195
        this.legendFont = legendFont;
196
    }
197
198
    /**
199
     * @return the legendPlacement
200
     */
201
    public int getLegendPlacement() {
202
        return legendPlacement;
203
    }
204
205
    /**
206
     * @param legendPlacement the legendPlacement to set
207
     */
208
    public void setLegendPlacement(int legendPlacement) {
209
        this.legendPlacement = legendPlacement;
210
    }
211
212
    /**
213
     * @return the outlinesBarFlag
214
     */
215
    public boolean isOutlinesBarFlag() {
216
        return outlinesBarFlag;
217
    }
218
219
    /**
220
     * @param outlinesBarFlag the outlinesBarFlag to set
221
     */
222
    public void setOutlinesBarFlag(boolean outlinesBarFlag) {
223
        this.outlinesBarFlag = outlinesBarFlag;
224
    }
225
226
    /**
227
     * @return the showGrouping
228
     */
229
    public boolean isShowGrouping() {
230
        return showGrouping;
231
    }
232
233
    /**
234
     * @param showGrouping the showGrouping to set
235
     */
236
    public void setShowGrouping(boolean showGrouping) {
237
        this.showGrouping = showGrouping;
238
    }
239
125
    @Override
240
    @Override
126
    public void paintComponent(Graphics g) {
241
    public void paintComponent(Graphics graphics) {
127
        if (data != null && this.title != null && this.xAxisLabels != null &&
242
        if (data != null && this.title != null && this.xAxisLabels != null &&
128
                this.xAxisTitle != null && this.yAxisLabel != null &&
243
                this.xAxisTitle != null && this.yAxisLabel != null &&
129
                this.yAxisTitle != null) {
244
                this.yAxisTitle != null) {
130
            drawSample(this.title,this.maxLength,this.xAxisLabels,this.xAxisTitle,
245
            drawSample(this.title,this.maxLength,this.xAxisLabels,this.xAxisTitle,
131
                this.yAxisTitle,this.data,this.width,this.height,g);
246
                this.yAxisTitle,this.data,this.width,this.height,this.color,this.legendFont,graphics);
132
        }
247
        }
133
    }
248
    }
134
249
Lines 154-160 Link Here
154
    }
269
    }
155
270
156
    private void drawSample(String _title, int _maxLength, String[] _xAxisLabels, String _xAxisTitle,
271
    private void drawSample(String _title, int _maxLength, String[] _xAxisLabels, String _xAxisTitle,
157
            String _yAxisTitle, double[][] _data, int _width, int _height, Graphics g) {
272
            String _yAxisTitle, double[][] _data, int _width, int _height, Color color, Font font, Graphics g) {
158
        double max = findMax(_data);
273
        double max = findMax(_data);
159
        try {
274
        try {
160
            /** These controls are already done in StatGraphVisualizer
275
            /** These controls are already done in StatGraphVisualizer
Lines 170-176 Link Here
170
            }
285
            }
171
            // if the "Title of Graph" is empty, we can assume some default
286
            // if the "Title of Graph" is empty, we can assume some default
172
            if (_title.length() == 0 ) {
287
            if (_title.length() == 0 ) {
173
                _title = "Graph";
288
                _title = JMeterUtils.getResString("aggregate_graph_title"); //$NON-NLS-1$
174
            }
289
            }
175
            // if the labels are too long, they'll be "squeezed" to make the chart viewable.
290
            // if the labels are too long, they'll be "squeezed" to make the chart viewable.
176
            for (int i = 0; i < _xAxisLabels.length; i++) {
291
            for (int i = 0; i < _xAxisLabels.length; i++) {
Lines 181-192 Link Here
181
            DataSeries dataSeries = new DataSeries( _xAxisLabels, _xAxisTitle, _yAxisTitle, _title );
296
            DataSeries dataSeries = new DataSeries( _xAxisLabels, _xAxisTitle, _yAxisTitle, _title );
182
297
183
            String[] legendLabels= { yAxisLabel };
298
            String[] legendLabels= { yAxisLabel };
184
            Paint[] paints= new Paint[] { Color.yellow };
299
185
            BarChartProperties barChartProperties= new BarChartProperties();
300
            BarChartProperties barChartProperties= new BarChartProperties();
186
            ValueLabelRenderer valueLabelRenderer = new ValueLabelRenderer(false, false, true, 0);
301
            barChartProperties.setShowOutlinesFlag(outlinesBarFlag);
302
            ValueLabelRenderer valueLabelRenderer = new ValueLabelRenderer(false, false, showGrouping, 0);
187
            valueLabelRenderer.setValueLabelPosition(ValueLabelPosition.AT_TOP);
303
            valueLabelRenderer.setValueLabelPosition(ValueLabelPosition.AT_TOP);
188
            valueLabelRenderer.useVerticalLabels(true);
304
            valueLabelRenderer.useVerticalLabels(true);
305
            if (legendFont != null) {
306
                valueLabelRenderer.setValueChartFont(new ChartFont(legendFont, new Color(foreColor.getRGB())));
307
            }
308
            
189
            barChartProperties.addPostRenderEventListener(valueLabelRenderer);
309
            barChartProperties.addPostRenderEventListener(valueLabelRenderer);
310
311
            Paint[] paints = new Paint[] { color };
190
            AxisChartDataSet axisChartDataSet =
312
            AxisChartDataSet axisChartDataSet =
191
                new AxisChartDataSet(
313
                new AxisChartDataSet(
192
                        _data, legendLabels, paints, ChartType.BAR, barChartProperties );
314
                        _data, legendLabels, paints, ChartType.BAR, barChartProperties );
Lines 195-200 Link Here
195
            ChartProperties chartProperties= new ChartProperties();
317
            ChartProperties chartProperties= new ChartProperties();
196
            LabelAxisProperties xaxis = new LabelAxisProperties();
318
            LabelAxisProperties xaxis = new LabelAxisProperties();
197
            DataAxisProperties yaxis = new DataAxisProperties();
319
            DataAxisProperties yaxis = new DataAxisProperties();
320
            yaxis.setUseCommas(showGrouping);
321
322
            if (legendFont != null) {
323
                yaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20)));
324
                xaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20)));
325
            }
326
            if (titleFont != null) {
327
                chartProperties.setTitleFont(new ChartFont(titleFont, new Color(0)));
328
            }
198
329
199
            try {
330
            try {
200
                BigDecimal round = new BigDecimal(max / 1000d);
331
                BigDecimal round = new BigDecimal(max / 1000d);
Lines 210-215 Link Here
210
            AxisProperties axisProperties= new AxisProperties(xaxis, yaxis);
341
            AxisProperties axisProperties= new AxisProperties(xaxis, yaxis);
211
            axisProperties.setXAxisLabelsAreVertical(true);
342
            axisProperties.setXAxisLabelsAreVertical(true);
212
            LegendProperties legendProperties= new LegendProperties();
343
            LegendProperties legendProperties= new LegendProperties();
344
            legendProperties.setBorderStroke(null);
345
            legendProperties.setPlacement(legendPlacement);
346
            if (legendFont != null) {
347
                legendProperties.setFont(legendFont); //new Font("SansSerif", Font.PLAIN, 10)
348
            }
213
            AxisChart axisChart = new AxisChart(
349
            AxisChart axisChart = new AxisChart(
214
                    dataSeries, chartProperties, axisProperties,
350
                    dataSeries, chartProperties, axisProperties,
215
                    legendProperties, _width, _height );
351
                    legendProperties, _width, _height );
(-)src/components/org/apache/jmeter/visualizers/StatGraphProperties.java (+56 lines)
Line 0 Link Here
1
/* 
2
 * Licensed to the Apache Software Foundation (ASF) under one or more
3
 * contributor license agreements.  See the NOTICE file distributed with
4
 * this work for additional information regarding copyright ownership.
5
 * The ASF licenses this file to You under the Apache License, Version 2.0
6
 * (the "License"); you may not use this file except in compliance with
7
 * the License.  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
14
 * implied.
15
 * 
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 */
19
20
package org.apache.jmeter.visualizers;
21
22
import java.awt.Font;
23
import java.util.HashMap;
24
import java.util.Map;
25
26
import org.apache.jmeter.util.JMeterUtils;
27
import org.jCharts.properties.LegendProperties;
28
29
public class StatGraphProperties {
30
31
    public static final String[] fontSize = { "8", "9", "10", "11", "12", "14", "16", "18", "20", "24", "28", "32"};
32
33
    public static Map<String, String> getFontNameMap() {
34
        Map<String, String> fontNameMap = new HashMap<String, String>();
35
        fontNameMap.put(JMeterUtils.getResString("font.sansserif"), "SansSerif");
36
        fontNameMap.put(JMeterUtils.getResString("font.serif"), "Serif");
37
        return fontNameMap;
38
    }
39
40
    public static Map<String, Integer> getFontStyleMap() {
41
        Map<String, Integer> fontStyleMap = new HashMap<String, Integer>();
42
        fontStyleMap.put(JMeterUtils.getResString("fontstyle.normal"), Font.PLAIN);
43
        fontStyleMap.put(JMeterUtils.getResString("fontstyle.bold"), Font.BOLD);
44
        fontStyleMap.put(JMeterUtils.getResString("fontstyle.italic"), Font.ITALIC);
45
        return fontStyleMap;
46
    }
47
48
    public static Map<String, Integer> getPlacementNameMap() {
49
        Map<String, Integer> placementNameMap = new HashMap<String, Integer>();
50
        placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.bottom"), LegendProperties.BOTTOM);
51
        placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.right"), LegendProperties.RIGHT);
52
        placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.left"), LegendProperties.LEFT);
53
        placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.top"), LegendProperties.TOP);
54
        return placementNameMap;
55
    }
56
}
(-)src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java (-59 / +362 lines)
Lines 19-25 Link Here
19
package org.apache.jmeter.visualizers;
19
package org.apache.jmeter.visualizers;
20
20
21
import java.awt.BorderLayout;
21
import java.awt.BorderLayout;
22
import java.awt.Color;
22
import java.awt.Dimension;
23
import java.awt.Dimension;
24
import java.awt.FlowLayout;
25
import java.awt.Font;
23
import java.awt.event.ActionEvent;
26
import java.awt.event.ActionEvent;
24
import java.awt.event.ActionListener;
27
import java.awt.event.ActionListener;
25
import java.io.FileNotFoundException;
28
import java.io.FileNotFoundException;
Lines 29-45 Link Here
29
import java.util.List;
32
import java.util.List;
30
import java.util.Map;
33
import java.util.Map;
31
import java.util.concurrent.ConcurrentHashMap;
34
import java.util.concurrent.ConcurrentHashMap;
35
import java.util.regex.Matcher;
36
import java.util.regex.Pattern;
37
import java.util.regex.PatternSyntaxException;
32
38
39
import javax.swing.BorderFactory;
40
import javax.swing.Box;
33
import javax.swing.BoxLayout;
41
import javax.swing.BoxLayout;
34
import javax.swing.JButton;
42
import javax.swing.JButton;
35
import javax.swing.JCheckBox;
43
import javax.swing.JCheckBox;
44
import javax.swing.JColorChooser;
45
import javax.swing.JComboBox;
36
import javax.swing.JComponent;
46
import javax.swing.JComponent;
37
import javax.swing.JFileChooser;
47
import javax.swing.JFileChooser;
38
import javax.swing.JLabel;
48
import javax.swing.JLabel;
39
import javax.swing.JPanel;
49
import javax.swing.JPanel;
40
import javax.swing.JScrollPane;
50
import javax.swing.JScrollPane;
41
import javax.swing.JSplitPane;
51
import javax.swing.JSplitPane;
52
import javax.swing.JTabbedPane;
42
import javax.swing.JTable;
53
import javax.swing.JTable;
54
import javax.swing.JTextField;
43
import javax.swing.border.Border;
55
import javax.swing.border.Border;
44
import javax.swing.border.EmptyBorder;
56
import javax.swing.border.EmptyBorder;
45
import javax.swing.table.TableCellRenderer;
57
import javax.swing.table.TableCellRenderer;
Lines 48-61 Link Here
48
import org.apache.jmeter.gui.action.ActionRouter;
60
import org.apache.jmeter.gui.action.ActionRouter;
49
import org.apache.jmeter.gui.action.SaveGraphics;
61
import org.apache.jmeter.gui.action.SaveGraphics;
50
import org.apache.jmeter.gui.util.FileDialoger;
62
import org.apache.jmeter.gui.util.FileDialoger;
51
import org.apache.jmeter.gui.util.HorizontalPanel;
63
import org.apache.jmeter.gui.util.FilePanel;
52
import org.apache.jmeter.gui.util.VerticalPanel;
64
import org.apache.jmeter.gui.util.VerticalPanel;
53
import org.apache.jmeter.samplers.Clearable;
65
import org.apache.jmeter.samplers.Clearable;
54
import org.apache.jmeter.samplers.SampleResult;
66
import org.apache.jmeter.samplers.SampleResult;
55
import org.apache.jmeter.save.CSVSaveService;
67
import org.apache.jmeter.save.CSVSaveService;
56
import org.apache.jmeter.util.JMeterUtils;
68
import org.apache.jmeter.util.JMeterUtils;
57
import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
69
import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
58
import org.apache.jorphan.gui.JLabeledChoice;
59
import org.apache.jorphan.gui.JLabeledTextField;
70
import org.apache.jorphan.gui.JLabeledTextField;
60
import org.apache.jorphan.gui.NumberRenderer;
71
import org.apache.jorphan.gui.NumberRenderer;
61
import org.apache.jorphan.gui.ObjectTableModel;
72
import org.apache.jorphan.gui.ObjectTableModel;
Lines 97-102 Link Here
97
108
98
    private final String TOTAL_ROW_LABEL =
109
    private final String TOTAL_ROW_LABEL =
99
        JMeterUtils.getResString("aggregate_report_total_label");       //$NON-NLS-1$
110
        JMeterUtils.getResString("aggregate_report_total_label");       //$NON-NLS-1$
111
    
112
    private final Border MARGIN = new EmptyBorder(0, 5, 0, 5);
100
113
101
    private JTable myJTable;
114
    private JTable myJTable;
102
115
Lines 114-130 Link Here
114
127
115
    private AxisGraph graphPanel = null;
128
    private AxisGraph graphPanel = null;
116
129
117
    private VerticalPanel graph = null;
130
    private JPanel settingsPane = null;
118
119
    private JScrollPane graphScroll = null;
120
131
121
    private JSplitPane spane = null;
132
    private JSplitPane spane = null;
122
133
123
    private JLabeledChoice columns =
124
        new JLabeledChoice(JMeterUtils.getResString("aggregate_graph_column"),GRAPH_COLUMNS);//$NON-NLS-1$
125
126
    //NOT USED protected double[][] data = null;
134
    //NOT USED protected double[][] data = null;
127
135
136
    private JTabbedPane tabbedGraph = new JTabbedPane(JTabbedPane.TOP);
137
128
    private JButton displayButton =
138
    private JButton displayButton =
129
        new JButton(JMeterUtils.getResString("aggregate_graph_display"));                //$NON-NLS-1$
139
        new JButton(JMeterUtils.getResString("aggregate_graph_display"));                //$NON-NLS-1$
130
140
Lines 134-139 Link Here
134
    private JButton saveTable =
144
    private JButton saveTable =
135
        new JButton(JMeterUtils.getResString("aggregate_graph_save_table"));            //$NON-NLS-1$
145
        new JButton(JMeterUtils.getResString("aggregate_graph_save_table"));            //$NON-NLS-1$
136
146
147
    private JButton chooseBarColor =
148
        new JButton(JMeterUtils.getResString("aggregate_graph_choose_bar_color"));            //$NON-NLS-1$
149
150
    private JButton chooseForeColor =
151
        new JButton(JMeterUtils.getResString("aggregate_graph_choose_foreground_color"));            //$NON-NLS-1$
152
153
    private JButton syncWithName =
154
        new JButton(JMeterUtils.getResString("aggregate_graph_sync_with_name"));            //$NON-NLS-1$
155
137
    private JCheckBox saveHeaders = // should header be saved with the data?
156
    private JCheckBox saveHeaders = // should header be saved with the data?
138
        new JCheckBox(JMeterUtils.getResString("aggregate_graph_save_table_header"));    //$NON-NLS-1$
157
        new JCheckBox(JMeterUtils.getResString("aggregate_graph_save_table_header"));    //$NON-NLS-1$
139
158
Lines 143-148 Link Here
143
    private JLabeledTextField maxLengthXAxisLabel =
162
    private JLabeledTextField maxLengthXAxisLabel =
144
        new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_max_length_xaxis_label"));//$NON-NLS-1$
163
        new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_max_length_xaxis_label"));//$NON-NLS-1$
145
164
165
    /**
166
     * checkbox for use dynamic graph size
167
     */
168
    private JCheckBox dynamicGraphSize = new JCheckBox(JMeterUtils.getResString("aggregate_graph_dynamic_size")); // $NON-NLS-1$
169
    
146
    private JLabeledTextField graphWidth =
170
    private JLabeledTextField graphWidth =
147
        new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_width"));        //$NON-NLS-1$
171
        new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_width"));        //$NON-NLS-1$
148
    private JLabeledTextField graphHeight =
172
    private JLabeledTextField graphHeight =
Lines 158-163 Link Here
158
182
159
    private int defaultHeight = 300;
183
    private int defaultHeight = 300;
160
184
185
    private JLabel currentColor = new JLabel(JMeterUtils.getResString("aggregate_graph_current_colors"));   //$NON-NLS-1$
186
187
    private JComboBox columnsList = new JComboBox(GRAPH_COLUMNS);
188
189
    private JCheckBox columnSelection = new JCheckBox(JMeterUtils.getResString("aggregate_graph_column_selection"), false); //$NON-NLS-1$
190
191
    private JTextField columnMatchLabel = new JTextField();
192
193
    private JButton reloadButton = new JButton(JMeterUtils.getResString("aggregate_graph_reload_data")); // $NON-NLS-1$
194
195
    private JCheckBox caseChkBox = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_case"), false); // $NON-NLS-1$
196
197
    private JCheckBox regexpChkBox = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_regexp"), true); // $NON-NLS-1$
198
199
    private JComboBox titleFontNameList = new JComboBox(StatGraphProperties.getFontNameMap().keySet().toArray());
200
201
    private JComboBox titleFontSizeList = new JComboBox(StatGraphProperties.fontSize);
202
203
    private JComboBox titleFontStyleList = new JComboBox(StatGraphProperties.getFontStyleMap().keySet().toArray());
204
205
    private JComboBox fontNameList = new JComboBox(StatGraphProperties.getFontNameMap().keySet().toArray());
206
207
    private JComboBox fontSizeList = new JComboBox(StatGraphProperties.fontSize);
208
209
    private JComboBox fontStyleList = new JComboBox(StatGraphProperties.getFontStyleMap().keySet().toArray());
210
211
    private JComboBox legendPlacementList = new JComboBox(StatGraphProperties.getPlacementNameMap().keySet().toArray());
212
213
    private JCheckBox drawOutlinesBar = new JCheckBox(JMeterUtils.getResString("aggregate_graph_draw_outlines"), true); // Default checked // $NON-NLS-1$
214
215
    private JCheckBox numberShowGrouping = new JCheckBox(JMeterUtils.getResString("aggregate_graph_number_grouping"), true); // Default checked // $NON-NLS-1$
216
217
    private Color colorBarGraph = Color.YELLOW;
218
219
    private Color colorForeGraph = Color.BLACK;
220
161
    public StatGraphVisualizer() {
221
    public StatGraphVisualizer() {
162
        super();
222
        super();
163
        model = new ObjectTableModel(COLUMNS,
223
        model = new ObjectTableModel(COLUMNS,
Lines 208-224 Link Here
208
    public void add(SampleResult res) {
268
    public void add(SampleResult res) {
209
        SamplingStatCalculator row = null;
269
        SamplingStatCalculator row = null;
210
        final String sampleLabel = res.getSampleLabel();
270
        final String sampleLabel = res.getSampleLabel();
211
        synchronized (lock) {
271
        Matcher matcher = null;
212
            row = tableRows.get(sampleLabel);
272
        if (columnSelection.isSelected() && columnMatchLabel.getText() != null && columnMatchLabel.getText().length() > 0) {
213
            if (row == null) {
273
                Pattern pattern = createPattern(columnMatchLabel.getText());
214
                row = new SamplingStatCalculator(sampleLabel);
274
                matcher = pattern.matcher(sampleLabel);
215
                tableRows.put(row.getLabel(), row);
275
        }
216
                model.insertRow(row, model.getRowCount() - 1);
276
        if ((matcher == null) || (matcher.find())) {
277
            synchronized (lock) {
278
                row = tableRows.get(sampleLabel);
279
                if (row == null) {
280
                    row = new SamplingStatCalculator(sampleLabel);
281
                    tableRows.put(row.getLabel(), row);
282
                    model.insertRow(row, model.getRowCount() - 1);
283
                }
217
            }
284
            }
285
            row.addSample(res);
286
            tableRows.get(TOTAL_ROW_LABEL).addSample(res);
287
            model.fireTableDataChanged();
218
        }
288
        }
219
        row.addSample(res);
220
        tableRows.get(TOTAL_ROW_LABEL).addSample(res);
221
        model.fireTableDataChanged();
222
    }
289
    }
223
290
224
    /**
291
    /**
Lines 253-334 Link Here
253
        RendererUtils.applyRenderers(myJTable, RENDERERS);
320
        RendererUtils.applyRenderers(myJTable, RENDERERS);
254
        myScrollPane = new JScrollPane(myJTable);
321
        myScrollPane = new JScrollPane(myJTable);
255
322
256
        graph = new VerticalPanel();
323
        settingsPane = new VerticalPanel();
257
        graph.setBorder(margin2);
324
        settingsPane.setBorder(margin2);
258
325
259
260
        JLabel graphLabel = new JLabel(JMeterUtils.getResString("aggregate_graph")); //$NON-NLS-1$
261
        graphPanel = new AxisGraph();
326
        graphPanel = new AxisGraph();
262
        graphPanel.setPreferredSize(new Dimension(defaultWidth,defaultHeight));
327
        graphPanel.setPreferredSize(new Dimension(defaultWidth, defaultHeight));
263
328
264
        // horizontal panel for the buttons
329
        settingsPane.add(createGraphActionsPane());
265
        HorizontalPanel buttonpanel = new HorizontalPanel();
330
        settingsPane.add(createGraphColumnPane());
266
        buttonpanel.add(columns);
331
        settingsPane.add(createGraphTitlePane());
267
        buttonpanel.add(displayButton);
332
        settingsPane.add(createGraphDimensionPane());
268
        buttonpanel.add(saveGraph);
333
        settingsPane.add(createGraphXAxisPane());
269
        buttonpanel.add(saveTable);
334
        settingsPane.add(createLegendPane());
270
        buttonpanel.add(saveHeaders);
271
335
272
        graph.add(graphLabel);
336
        tabbedGraph.addTab(JMeterUtils.getResString("aggregate_graph_tab_settings"), settingsPane); //$NON-NLS-1$
273
        graph.add(graphTitle);
337
        tabbedGraph.addTab(JMeterUtils.getResString("aggregate_graph_tab_graph"), graphPanel); //$NON-NLS-1$
274
        graph.add(maxLengthXAxisLabel);
275
        graph.add(graphWidth);
276
        graph.add(graphHeight);
277
        graph.add(buttonpanel);
278
        graph.add(graphPanel);
279
280
        displayButton.addActionListener(this);
281
        saveGraph.addActionListener(this);
282
        saveTable.addActionListener(this);
283
        graphScroll = new JScrollPane(graph);
284
        graphScroll.setAutoscrolls(true);
285
338
286
        spane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
339
        spane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
287
        spane.setLeftComponent(myScrollPane);
340
        spane.setLeftComponent(myScrollPane);
288
        spane.setRightComponent(graphScroll);
341
        spane.setRightComponent(tabbedGraph);
289
        spane.setResizeWeight(.2);
342
        spane.setResizeWeight(.2);
290
        spane.setContinuousLayout(true);
343
        spane.setContinuousLayout(true);
291
344
292
        this.add(mainPanel, BorderLayout.NORTH);
345
        this.add(mainPanel, BorderLayout.NORTH);
293
        this.add(spane,BorderLayout.CENTER);
346
        this.add(spane, BorderLayout.CENTER);
294
    }
347
    }
295
348
296
    public void makeGraph() {
349
    public void makeGraph() {
350
        Dimension size = graphPanel.getSize();
297
        String wstr = graphWidth.getText();
351
        String wstr = graphWidth.getText();
298
        String hstr = graphHeight.getText();
352
        String hstr = graphHeight.getText();
299
        String lstr = maxLengthXAxisLabel.getText();
353
        String lstr = maxLengthXAxisLabel.getText();
300
        if (wstr.length() == 0) {
354
        int width = (int) size.getWidth();
301
            wstr = "450";//$NON-NLS-1$
355
        if (wstr.length() != 0) {
356
            width = Integer.parseInt(wstr);
302
        }
357
        }
303
        if (hstr.length() == 0) {
358
        int height = (int) size.getHeight();
304
            hstr = "250";//$NON-NLS-1$
359
        if (hstr.length() != 0) {
360
            height = Integer.parseInt(hstr);
305
        }
361
        }
306
        if (lstr.length() == 0) {
362
        if (lstr.length() == 0) {
307
            lstr = "20";//$NON-NLS-1$
363
            lstr = "20";//$NON-NLS-1$
308
        }
364
        }
309
        int width = Integer.parseInt(wstr);
310
        int height = Integer.parseInt(hstr);
311
        int maxLength = Integer.parseInt(lstr);
365
        int maxLength = Integer.parseInt(lstr);
312
366
313
        graphPanel.setData(this.getData());
367
        graphPanel.setData(this.getData());
314
        graphPanel.setHeight(height);
315
        graphPanel.setWidth(width);
316
        graphPanel.setTitle(graphTitle.getText());
368
        graphPanel.setTitle(graphTitle.getText());
317
        graphPanel.setMaxLength(maxLength);
369
        graphPanel.setMaxLength(maxLength);
318
        graphPanel.setXAxisLabels(getAxisLabels());
370
        graphPanel.setXAxisLabels(getAxisLabels());
319
        graphPanel.setXAxisTitle(columns.getText());
371
        graphPanel.setXAxisTitle((String) columnsList.getSelectedItem());
320
        graphPanel.setYAxisLabels(this.yAxisLabel);
372
        graphPanel.setYAxisLabels(this.yAxisLabel);
321
        graphPanel.setYAxisTitle(this.yAxisTitle);
373
        graphPanel.setYAxisTitle(this.yAxisTitle);
374
        graphPanel.setColor(colorBarGraph);
375
        graphPanel.setForeColor(colorForeGraph);
376
        graphPanel.setOutlinesBarFlag(drawOutlinesBar.isSelected());
377
        graphPanel.setShowGrouping(numberShowGrouping.isSelected());
378
        graphPanel.setLegendPlacement(StatGraphProperties.getPlacementNameMap()
379
                .get(legendPlacementList.getSelectedItem()));
380
381
        graphPanel.setTitleFont(new Font(StatGraphProperties.getFontNameMap().get(titleFontNameList.getSelectedItem()),
382
                StatGraphProperties.getFontStyleMap().get(titleFontStyleList.getSelectedItem()),
383
                Integer.parseInt((String) titleFontSizeList.getSelectedItem())));
384
        graphPanel.setLegendFont(new Font(StatGraphProperties.getFontNameMap().get(fontNameList.getSelectedItem()),
385
                StatGraphProperties.getFontStyleMap().get(fontStyleList.getSelectedItem()),
386
                Integer.parseInt((String) fontSizeList.getSelectedItem())));
322
387
323
        graphPanel.setPreferredSize(new Dimension(width,height));
388
        graphPanel.setHeight(height);
324
        graph.setSize(new Dimension(graph.getWidth(), height + 120));
389
        graphPanel.setWidth(width);
325
        spane.repaint();
390
        spane.repaint();
326
    }
391
    }
327
392
328
    public double[][] getData() {
393
    public double[][] getData() {
329
        if (model.getRowCount() > 1) {
394
        if (model.getRowCount() > 1) {
330
            int count = model.getRowCount() -1;
395
            int count = model.getRowCount() -1;
331
            int col = model.findColumn(columns.getText());
396
            int col = model.findColumn((String) columnsList.getSelectedItem());
332
            double[][] data = new double[1][count];
397
            double[][] data = new double[1][count];
333
            for (int idx=0; idx < count; idx++) {
398
            for (int idx=0; idx < count; idx++) {
334
                data[0][idx] = ((Number)model.getValueAt(idx,col)).doubleValue();
399
                data[0][idx] = ((Number)model.getValueAt(idx,col)).doubleValue();
Lines 373-381 Link Here
373
    }
438
    }
374
439
375
    public void actionPerformed(ActionEvent event) {
440
    public void actionPerformed(ActionEvent event) {
376
        if (event.getSource() == displayButton) {
441
        final Object eventSource = event.getSource();
442
        if (eventSource == displayButton) {
377
            makeGraph();
443
            makeGraph();
378
        } else if (event.getSource() == saveGraph) {
444
            tabbedGraph.setSelectedIndex(1);
445
        } else if (eventSource == saveGraph) {
379
            saveGraphToFile = true;
446
            saveGraphToFile = true;
380
            try {
447
            try {
381
                ActionRouter.getInstance().getAction(
448
                ActionRouter.getInstance().getAction(
Lines 384-390 Link Here
384
            } catch (Exception e) {
451
            } catch (Exception e) {
385
                log.error(e.getMessage());
452
                log.error(e.getMessage());
386
            }
453
            }
387
        } else if (event.getSource() == saveTable) {
454
        } else if (eventSource == saveTable) {
388
            JFileChooser chooser = FileDialoger.promptToSaveFile("statistics.csv");    //$NON-NLS-1$
455
            JFileChooser chooser = FileDialoger.promptToSaveFile("statistics.csv");    //$NON-NLS-1$
389
            if (chooser == null) {
456
            if (chooser == null) {
390
                return;
457
                return;
Lines 400-405 Link Here
400
            } finally {
467
            } finally {
401
                JOrphanUtils.closeQuietly(writer);
468
                JOrphanUtils.closeQuietly(writer);
402
            }
469
            }
470
        } else if (eventSource == chooseBarColor) {
471
            colorBarGraph = JColorChooser.showDialog(
472
                    null,
473
                    JMeterUtils.getResString("aggregate_graph_choose_color"), //$NON-NLS-1$
474
                    colorBarGraph);
475
            currentColor.setBackground(colorBarGraph);
476
        } else if (eventSource == chooseForeColor) {
477
            colorForeGraph = JColorChooser.showDialog(
478
                    null,
479
                    JMeterUtils.getResString("aggregate_graph_choose_color"), //$NON-NLS-1$
480
                    colorBarGraph);
481
            currentColor.setForeground(colorForeGraph);
482
        } else if (eventSource == syncWithName) {
483
            graphTitle.setText(namePanel.getName());
484
        } else if (eventSource == dynamicGraphSize) {
485
            // if use dynamic graph size is checked, we disable the dimension fields
486
            if (dynamicGraphSize.isSelected()) {
487
                graphWidth.setEnabled(false);
488
                graphHeight.setEnabled(false);
489
            } else {
490
                graphWidth.setEnabled(true);
491
                graphHeight.setEnabled(true);
492
            }
493
        } else if (eventSource == columnSelection) {
494
            if (columnSelection.isSelected()) {
495
                columnMatchLabel.setEnabled(true);
496
                reloadButton.setEnabled(true);
497
                caseChkBox.setEnabled(true);
498
                regexpChkBox.setEnabled(true);
499
            } else {
500
                columnMatchLabel.setEnabled(false);
501
                reloadButton.setEnabled(false);
502
                caseChkBox.setEnabled(false);
503
                regexpChkBox.setEnabled(false);
504
            }
505
        } else if (eventSource == reloadButton) {
506
            if (getFile() != null && getFile().length() > 0) {
507
                clearData();
508
                FilePanel filePanel = (FilePanel) getFilePanel();
509
                filePanel.actionPerformed(event);
510
            }
403
        }
511
        }
404
    }
512
    }
405
513
Lines 413-416 Link Here
413
        }
521
        }
414
        return this;
522
        return this;
415
    }
523
    }
524
525
    private JPanel createGraphActionsPane() {
526
        JPanel buttonPanel = new JPanel(new BorderLayout());
527
        JPanel displayPane = new JPanel();
528
        displayPane.add(displayButton);
529
        displayButton.addActionListener(this);
530
        buttonPanel.add(displayPane, BorderLayout.WEST);
531
532
        JPanel savePane = new JPanel();
533
        savePane.add(saveGraph);
534
        savePane.add(saveTable);
535
        savePane.add(saveHeaders);
536
        saveGraph.addActionListener(this);
537
        saveTable.addActionListener(this);
538
        syncWithName.addActionListener(this);
539
        buttonPanel.add(savePane, BorderLayout.EAST);
540
541
        return buttonPanel;
542
    }
543
544
    private JPanel createGraphColumnPane() {
545
        JPanel barPanel = new JPanel();
546
        barPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
547
548
        barPanel.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_column"), //$NON-NLS-1$
549
                columnsList));
550
551
        currentColor.setBorder(new EmptyBorder(2, 5, 2, 5));
552
        currentColor.setOpaque(true);
553
        currentColor.setBackground(colorBarGraph);
554
555
        barPanel.add(Box.createRigidArea(new Dimension(5,0)));
556
        barPanel.add(currentColor);
557
        barPanel.add(Box.createRigidArea(new Dimension(5,0)));
558
        barPanel.add(chooseBarColor);
559
        chooseBarColor.addActionListener(this);
560
        barPanel.add(Box.createRigidArea(new Dimension(5,0)));
561
        barPanel.add(chooseForeColor);
562
        chooseForeColor.addActionListener(this);
563
564
        barPanel.add(drawOutlinesBar);
565
        barPanel.add(numberShowGrouping);
566
567
        JPanel columnPane = new JPanel(new BorderLayout());
568
        columnPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
569
                JMeterUtils.getResString("aggregate_graph_column_settings"))); // $NON-NLS-1$
570
        columnPane.add(barPanel, BorderLayout.NORTH);
571
        columnPane.add(Box.createRigidArea(new Dimension(5,0)), BorderLayout.CENTER);
572
        columnPane.add(createGraphSelectionSubPane(), BorderLayout.SOUTH);
573
        
574
        return columnPane;
575
    }
576
    
577
    private JPanel createGraphSelectionSubPane() {
578
        Font font = new Font("SansSerif", Font.PLAIN, 10);
579
        // Search field
580
        JPanel searchPanel = new JPanel();
581
        searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.X_AXIS));
582
        searchPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
583
584
        searchPanel.add(columnSelection);
585
        columnMatchLabel.setEnabled(false);
586
        reloadButton.setEnabled(false);
587
        caseChkBox.setEnabled(false);
588
        regexpChkBox.setEnabled(false);
589
        columnSelection.addActionListener(this);
590
591
        searchPanel.add(columnMatchLabel);
592
        searchPanel.add(Box.createRigidArea(new Dimension(5,0)));
593
594
        // Button
595
        reloadButton.setFont(font);
596
        reloadButton.addActionListener(this);
597
        searchPanel.add(reloadButton);
598
599
        // checkboxes
600
        caseChkBox.setFont(font);
601
        searchPanel.add(caseChkBox);
602
        regexpChkBox.setFont(font);
603
        searchPanel.add(regexpChkBox);
604
605
        return searchPanel;
606
    }
607
608
    private JPanel createGraphTitlePane() {
609
        JPanel titleNamePane = new JPanel(new BorderLayout());
610
        syncWithName.setFont(new Font("SansSerif", Font.PLAIN, 10));
611
        titleNamePane.add(graphTitle, BorderLayout.CENTER);
612
        titleNamePane.add(syncWithName, BorderLayout.EAST);
613
        
614
        JPanel titleStylePane = new JPanel();
615
        titleStylePane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 5));
616
        titleStylePane.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_font"), //$NON-NLS-1$
617
                titleFontNameList));
618
        titleFontNameList.setSelectedIndex(0); // default: sans serif
619
        titleStylePane.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_size"), //$NON-NLS-1$
620
                titleFontSizeList));
621
        titleFontSizeList.setSelectedItem(StatGraphProperties.fontSize[6]); // default: 16
622
        titleStylePane.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_style"), //$NON-NLS-1$
623
                titleFontStyleList));
624
        titleFontStyleList.setSelectedItem(JMeterUtils.getResString("fontstyle.bold")); // default: bold
625
626
        JPanel titlePane = new JPanel(new BorderLayout());
627
        titlePane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
628
                JMeterUtils.getResString("aggregate_graph_title_group"))); // $NON-NLS-1$
629
        titlePane.add(titleNamePane, BorderLayout.NORTH);
630
        titlePane.add(titleStylePane, BorderLayout.SOUTH);
631
        return titlePane;
632
    }
633
634
    private JPanel createGraphDimensionPane() {
635
        JPanel dimensionPane = new JPanel();
636
        dimensionPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
637
        dimensionPane.setBorder(BorderFactory.createTitledBorder(
638
                BorderFactory.createEtchedBorder(),
639
                JMeterUtils.getResString("aggregate_graph_dimension"))); // $NON-NLS-1$
640
641
        dimensionPane.add(dynamicGraphSize);
642
        dynamicGraphSize.setSelected(true); // default option
643
        graphWidth.setEnabled(false);
644
        graphHeight.setEnabled(false);
645
        dynamicGraphSize.addActionListener(this);
646
        dimensionPane.add(Box.createRigidArea(new Dimension(10,0)));
647
        dimensionPane.add(graphWidth);
648
        dimensionPane.add(Box.createRigidArea(new Dimension(5,0)));
649
        dimensionPane.add(graphHeight);
650
        return dimensionPane;
651
    }
652
653
    private JPanel createGraphXAxisPane() {
654
        JPanel xAxisPane = new JPanel();
655
        xAxisPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
656
        xAxisPane.setBorder(BorderFactory.createTitledBorder(
657
                BorderFactory.createEtchedBorder(),
658
                JMeterUtils.getResString("aggregate_graph_xaxis_group"))); // $NON-NLS-1$
659
        xAxisPane.add(maxLengthXAxisLabel);
660
        return xAxisPane;
661
    }
662
663
    /**
664
     * Create pane for legend settings
665
     * @return Legend pane
666
     */
667
    private JPanel createLegendPane() {
668
        JPanel legendPanel = new JPanel();
669
        legendPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
670
        legendPanel.setBorder(BorderFactory.createTitledBorder(
671
                BorderFactory.createEtchedBorder(),
672
                JMeterUtils.getResString("aggregate_graph_legend"))); // $NON-NLS-1$
673
674
        legendPanel.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_legend_placement"), //$NON-NLS-1$
675
                legendPlacementList));
676
        legendPlacementList.setSelectedItem(JMeterUtils.getResString("aggregate_graph_legend.placement.right")); // default: right
677
        legendPanel.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_font"), //$NON-NLS-1$
678
                fontNameList));
679
        fontNameList.setSelectedIndex(0); // default: sans serif
680
        legendPanel.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_size"), //$NON-NLS-1$
681
                fontSizeList));
682
        fontSizeList.setSelectedItem(StatGraphProperties.fontSize[2]); // default: 10
683
        legendPanel.add(createLabelCombo(JMeterUtils.getResString("aggregate_graph_style"), //$NON-NLS-1$
684
                fontStyleList));
685
        fontStyleList.setSelectedItem(JMeterUtils.getResString("fontstyle.normal")); // default: normal
686
687
        return legendPanel;
688
    }
689
690
    private JComponent createLabelCombo(String label, JComboBox comboBox) {
691
        JPanel labelCombo = new JPanel();
692
        labelCombo.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
693
        JLabel caption = new JLabel(label);//$NON-NLS-1$
694
        caption.setBorder(MARGIN);
695
        labelCombo.add(caption);
696
        labelCombo.add(comboBox);
697
        return labelCombo;
698
    }
699
700
    private Pattern createPattern(String textToFind) {
701
        // desactivate or not specials regexp char
702
        String textToFindQ = Pattern.quote(textToFind);
703
        if (regexpChkBox.isSelected()) {
704
            textToFindQ = textToFind;
705
        }
706
        Pattern pattern = null;
707
        try {
708
            if (caseChkBox.isSelected()) {
709
                pattern = Pattern.compile(textToFindQ);
710
            } else {
711
                pattern = Pattern
712
                        .compile(textToFindQ, Pattern.CASE_INSENSITIVE);
713
            }
714
        } catch (PatternSyntaxException pse) {
715
            return null;
716
        }
717
        return pattern;
718
    }
416
}
719
}
(-)src/core/org/apache/jmeter/resources/messages.properties (-5 / +36 lines)
Lines 31-49 Link Here
31
add_value=Add Value
31
add_value=Add Value
32
addtest=Add test
32
addtest=Add test
33
aggregate_graph=Statistical Graphs
33
aggregate_graph=Statistical Graphs
34
aggregate_graph_column=Column
34
aggregate_graph_choose_bar_color=Bar color
35
aggregate_graph_choose_color=Choose color
36
aggregate_graph_choose_foreground_color=Foreground color
37
aggregate_graph_color_bar=Color\:
38
aggregate_graph_column=Column\:
39
aggregate_graph_column_selection=Column label selection\:
40
aggregate_graph_column_settings=Column settings
41
aggregate_graph_current_colors=Current colors
42
aggregate_graph_dimension=Graph size
43
aggregate_graph_draw_outlines=Draw outlines bar?
44
aggregate_graph_dynamic_size=Dynamic graph size
35
aggregate_graph_display=Display Graph
45
aggregate_graph_display=Display Graph
36
aggregate_graph_height=Height
46
aggregate_graph_font=Font\:
37
aggregate_graph_max_length_xaxis_label=Max length of x-axis label
47
aggregate_graph_height=Height\:
48
aggregate_graph_legend=Legend
49
aggregate_graph_legend_placement=Placement\:
50
aggregate_graph_legend.placement.bottom=Bottom
51
aggregate_graph_legend.placement.right=Right
52
aggregate_graph_legend.placement.left=Left
53
aggregate_graph_legend.placement.top=Top
54
aggregate_graph_max_length_xaxis_label=Max length of x-axis label\:
38
aggregate_graph_ms=Milliseconds
55
aggregate_graph_ms=Milliseconds
56
aggregate_graph_number_grouping=Show number grouping?
39
aggregate_graph_response_time=Response Time
57
aggregate_graph_response_time=Response Time
58
aggregate_graph_reload_data=Reload data
40
aggregate_graph_save=Save Graph
59
aggregate_graph_save=Save Graph
41
aggregate_graph_save_table=Save Table Data
60
aggregate_graph_save_table=Save Table Data
42
aggregate_graph_save_table_header=Save Table Header
61
aggregate_graph_save_table_header=Save Table Header
62
aggregate_graph_size=Size\:
63
aggregate_graph_style=Style\:
64
aggregate_graph_sync_with_name=Synchronize with name
65
aggregate_graph_tab_graph=Graph
66
aggregate_graph_tab_settings=Settings
43
aggregate_graph_title=Aggregate Graph
67
aggregate_graph_title=Aggregate Graph
68
aggregate_graph_title_group=Title
44
aggregate_graph_use_group_name=Include group name in label?
69
aggregate_graph_use_group_name=Include group name in label?
45
aggregate_graph_user_title=Title for Graph
70
aggregate_graph_user_title=Graph title\:
46
aggregate_graph_width=Width
71
aggregate_graph_width=Width\:
72
aggregate_graph_xaxis_group=X Axis
47
aggregate_report=Aggregate Report
73
aggregate_report=Aggregate Report
48
aggregate_report_90=90%
74
aggregate_report_90=90%
49
aggregate_report_90%_line=90% Line
75
aggregate_report_90%_line=90% Line
Lines 237-242 Link Here
237
filename=File Name
263
filename=File Name
238
follow_redirects=Follow Redirects
264
follow_redirects=Follow Redirects
239
follow_redirects_auto=Redirect Automatically
265
follow_redirects_auto=Redirect Automatically
266
font.sansserif=Sans Serif
267
font.serif=Serif
268
fontstyle.bold=Bold
269
fontstyle.italic=Italic
270
fontstyle.normal=Normal
240
foreach_controller_title=ForEach Controller
271
foreach_controller_title=ForEach Controller
241
foreach_input=Input variable prefix
272
foreach_input=Input variable prefix
242
foreach_output=Output variable name
273
foreach_output=Output variable name
(-)src/core/org/apache/jmeter/resources/messages_fr.properties (-35 / +66 lines)
Lines 25-43 Link Here
25
add_value=Ajouter valeur
25
add_value=Ajouter valeur
26
addtest=Ajout
26
addtest=Ajout
27
aggregate_graph=Graphique des statistiques
27
aggregate_graph=Graphique des statistiques
28
aggregate_graph_choose_bar_color=Couleur barre
29
aggregate_graph_choose_color=Choisir couleur
30
aggregate_graph_choose_foreground_color=Couleur valeur
31
aggregate_graph_color_bar=Couleur \:
28
aggregate_graph_column=Colonne
32
aggregate_graph_column=Colonne
33
aggregate_graph_column_selection=S\u00E9lection de colonnes par libell\u00E9 \:
34
aggregate_graph_column_settings=Param\u00E8tres colonne
35
aggregate_graph_current_colors=Couleurs courantes
36
aggregate_graph_dimension=Taille graphique
29
aggregate_graph_display=G\u00E9n\u00E9rer le graphique
37
aggregate_graph_display=G\u00E9n\u00E9rer le graphique
38
aggregate_graph_draw_outlines=Bordures barre ?
39
aggregate_graph_dynamic_size=Taille de graphique dynamique
40
aggregate_graph_font=Police \:
30
aggregate_graph_height=Hauteur \:
41
aggregate_graph_height=Hauteur \:
42
aggregate_graph_legend=L\u00E9gende
43
aggregate_graph_legend.placement.bottom=Bas
44
aggregate_graph_legend.placement.left=Gauche
45
aggregate_graph_legend.placement.right=Droite
46
aggregate_graph_legend.placement.top=Haut
47
aggregate_graph_legend_placement=Position \:
31
aggregate_graph_max_length_xaxis_label=Longueur maximum du libell\u00E9 de l'axe des abscisses \:
48
aggregate_graph_max_length_xaxis_label=Longueur maximum du libell\u00E9 de l'axe des abscisses \:
32
aggregate_graph_ms=Millisecondes
49
aggregate_graph_ms=Millisecondes
50
aggregate_graph_number_grouping=S\u00E9parateur de milliers ?
51
aggregate_graph_reload_data=Recharger les donn\u00E9es
33
aggregate_graph_response_time=Temps de r\u00E9ponse
52
aggregate_graph_response_time=Temps de r\u00E9ponse
34
aggregate_graph_save=Enregistrer le graphique
53
aggregate_graph_save=Enregistrer le graphique
35
aggregate_graph_save_table=Enregistrer le tableau de donn\u00E9es
54
aggregate_graph_save_table=Enregistrer le tableau de donn\u00E9es
36
aggregate_graph_save_table_header=Inclure l'ent\u00EAte du tableau
55
aggregate_graph_save_table_header=Inclure l'ent\u00EAte du tableau
56
aggregate_graph_size=Taille \:
57
aggregate_graph_style=Style \:
58
aggregate_graph_sync_with_name=Synchroniser avec nom
59
aggregate_graph_tab_graph=Graphique
60
aggregate_graph_tab_settings=Param\u00E8tres
37
aggregate_graph_title=Graphique agr\u00E9g\u00E9
61
aggregate_graph_title=Graphique agr\u00E9g\u00E9
62
aggregate_graph_title_group=Titre
38
aggregate_graph_use_group_name=Ajouter le nom du groupe aux libell\u00E9s
63
aggregate_graph_use_group_name=Ajouter le nom du groupe aux libell\u00E9s
39
aggregate_graph_user_title=Titre du graphique \:
64
aggregate_graph_user_title=Titre du graphique \:
40
aggregate_graph_width=Largeur \:
65
aggregate_graph_width=Largeur \:
66
aggregate_graph_xaxis_group=Abscisses
41
aggregate_report=Rapport agr\u00E9g\u00E9
67
aggregate_report=Rapport agr\u00E9g\u00E9
42
aggregate_report_90=90%
68
aggregate_report_90=90%
43
aggregate_report_90%_line=90e centile
69
aggregate_report_90%_line=90e centile
Lines 46-53 Link Here
46
aggregate_report_error=Erreur
72
aggregate_report_error=Erreur
47
aggregate_report_error%=% Erreur
73
aggregate_report_error%=% Erreur
48
aggregate_report_max=Max
74
aggregate_report_max=Max
49
aggregate_report_min=Min
50
aggregate_report_median=M\u00E9diane
75
aggregate_report_median=M\u00E9diane
76
aggregate_report_min=Min
51
aggregate_report_rate=D\u00E9bit
77
aggregate_report_rate=D\u00E9bit
52
aggregate_report_stddev=Ecart type
78
aggregate_report_stddev=Ecart type
53
aggregate_report_total_label=TOTAL
79
aggregate_report_total_label=TOTAL
Lines 113-119 Link Here
113
cancel_new_to_save=Il y a des \u00E9l\u00E9ments qui n'ont pas \u00E9t\u00E9 sauv\u00E9s. Voulez-vous enregistrer avant de nettoyer le plan de test ?
139
cancel_new_to_save=Il y a des \u00E9l\u00E9ments qui n'ont pas \u00E9t\u00E9 sauv\u00E9s. Voulez-vous enregistrer avant de nettoyer le plan de test ?
114
cancel_revert_project=Il y a des \u00E9l\u00E9ments qui n'ont pas \u00E9t\u00E9 sauv\u00E9s. Annuler les changements et revenir \u00E0 la derni\u00E8re sauvegarde du plan de test ?
140
cancel_revert_project=Il y a des \u00E9l\u00E9ments qui n'ont pas \u00E9t\u00E9 sauv\u00E9s. Annuler les changements et revenir \u00E0 la derni\u00E8re sauvegarde du plan de test ?
115
change_parent=Changer le contr\u00F4leur
141
change_parent=Changer le contr\u00F4leur
116
char_value=Caract\u221a\u00aere num\u221a\u00a9rique Unicode (d\u221a\u00a9cimal or 0xhex)
142
char_value=Caract\u221A\u00AEre num\u221A\u00A9rique Unicode (d\u221A\u00A9cimal or 0xhex)
117
choose_function=Choisir une fonction
143
choose_function=Choisir une fonction
118
choose_language=Choisir une langue
144
choose_language=Choisir une langue
119
clear=Nettoyer
145
clear=Nettoyer
Lines 130-136 Link Here
130
comparison_regex_string=Expression r\u00E9guli\u00E8re
156
comparison_regex_string=Expression r\u00E9guli\u00E8re
131
comparison_regex_substitution=Substitution
157
comparison_regex_substitution=Substitution
132
comparison_response_time=Temps de r\u00E9ponse \: 
158
comparison_response_time=Temps de r\u00E9ponse \: 
133
comparison_unit= ms
159
comparison_unit=ms
134
comparison_visualizer_title=R\u00E9cepteur d'assertions de comparaison
160
comparison_visualizer_title=R\u00E9cepteur d'assertions de comparaison
135
config_element=El\u00E9ment de configuration
161
config_element=El\u00E9ment de configuration
136
config_save_settings=Configurer
162
config_save_settings=Configurer
Lines 153-169 Link Here
153
csvread_file_file_name=Fichier CSV pour obtenir les valeurs de | *alias
179
csvread_file_file_name=Fichier CSV pour obtenir les valeurs de | *alias
154
cut=Couper
180
cut=Couper
155
cut_paste_function=Fonction de copier/coller de cha\u00EEne de caract\u00E8re
181
cut_paste_function=Fonction de copier/coller de cha\u00EEne de caract\u00E8re
156
database_conn_pool_max_usage=Utilisation max pour chaque connexion:
182
database_conn_pool_max_usage=Utilisation max pour chaque connexion\:
157
database_conn_pool_props=Pool de connexions \u221a\u2020 la base de donn\u221a\u00a9es
183
database_conn_pool_props=Pool de connexions \u221A\u2020 la base de donn\u221A\u00A9es
158
database_conn_pool_size=Nombre de Connexions dans le Pool:
184
database_conn_pool_size=Nombre de Connexions dans le Pool\:
159
database_conn_pool_title=Valeurs par d\u221a\u00a9faut du Pool de connexions JDBC
185
database_conn_pool_title=Valeurs par d\u221A\u00A9faut du Pool de connexions JDBC
160
database_driver_class=Classe du Driver:
186
database_driver_class=Classe du Driver\:
161
database_login_title=Valeurs par d\u221a\u00a9faut de la base de donn\u221a\u00a9es JDBC
187
database_login_title=Valeurs par d\u221A\u00A9faut de la base de donn\u221A\u00A9es JDBC
162
database_sql_query_string=Requ\u00EAte SQL \:
188
database_sql_query_string=Requ\u00EAte SQL \:
163
database_sql_query_title=Requ\u00EAte SQL JDBC par d\u00E9faut
189
database_sql_query_title=Requ\u00EAte SQL JDBC par d\u00E9faut
164
database_testing_title=Requ\u221a\u2122te JDBC
190
database_testing_title=Requ\u221A\u2122te JDBC
165
database_url=URL JDBC:
191
database_url=URL JDBC\:
166
database_url_jdbc_props=URL et driver JDBC de la base de donn\u221a\u00a9es
192
database_url_jdbc_props=URL et driver JDBC de la base de donn\u221A\u00A9es
167
ddn=DN \:
193
ddn=DN \:
168
de=Allemand
194
de=Allemand
169
debug_off=D\u00E9sactiver le d\u00E9bogage
195
debug_off=D\u00E9sactiver le d\u00E9bogage
Lines 231-236 Link Here
231
filename=Nom de fichier \: 
257
filename=Nom de fichier \: 
232
follow_redirects=Suivre les redirect.
258
follow_redirects=Suivre les redirect.
233
follow_redirects_auto=Rediriger automat.
259
follow_redirects_auto=Rediriger automat.
260
font.sansserif=Sans Serif
261
font.serif=Serif
262
fontstyle.bold=Gras
263
fontstyle.italic=Italique
264
fontstyle.normal=Normal
234
foreach_controller_title=Contr\u00F4leur Pour chaque (ForEach)
265
foreach_controller_title=Contr\u00F4leur Pour chaque (ForEach)
235
foreach_input=Pr\u00E9fixe de la variable d'entr\u00E9e \:
266
foreach_input=Pr\u00E9fixe de la variable d'entr\u00E9e \:
236
foreach_output=Nom de la variable de sortie \:
267
foreach_output=Nom de la variable de sortie \:
Lines 455-462 Link Here
455
logic_controller_title=Contr\u00F4leur Simple
486
logic_controller_title=Contr\u00F4leur Simple
456
login_config=Configuration Identification
487
login_config=Configuration Identification
457
login_config_element=Configuration Identification 
488
login_config_element=Configuration Identification 
458
longsum_param_1=Premier long \u221a\u2020 ajouter
489
longsum_param_1=Premier long \u221A\u2020 ajouter
459
longsum_param_2=Second long \u221a\u2020 ajouter - les autres longs pourront \u221a\u2122tre cumul\u221a\u00a9s en ajoutant d'autres arguments.
490
longsum_param_2=Second long \u221A\u2020 ajouter - les autres longs pourront \u221A\u2122tre cumul\u221A\u00A9s en ajoutant d'autres arguments.
460
loop_controller_title=Contr\u00F4leur Boucle
491
loop_controller_title=Contr\u00F4leur Boucle
461
looping_control=Contr\u00F4le de boucle
492
looping_control=Contr\u00F4le de boucle
462
lower_bound=Borne Inf\u00E9rieure
493
lower_bound=Borne Inf\u00E9rieure
Lines 535-546 Link Here
535
monitor_label_right_dead=Mort
566
monitor_label_right_dead=Mort
536
monitor_label_right_healthy=Sant\u00E9
567
monitor_label_right_healthy=Sant\u00E9
537
monitor_label_right_warning=Attention
568
monitor_label_right_warning=Attention
538
monitor_load_factor_mem=50
539
monitor_load_factor_thread=50
540
monitor_legend_health=Sant\u00E9
569
monitor_legend_health=Sant\u00E9
541
monitor_legend_load=Charge
570
monitor_legend_load=Charge
542
monitor_legend_memory_per=M\u00E9moire % (utilis\u00E9e/total)
571
monitor_legend_memory_per=M\u00E9moire % (utilis\u00E9e/total)
543
monitor_legend_thread_per=Unit\u00E9 % (occup\u00E9/max)
572
monitor_legend_thread_per=Unit\u00E9 % (occup\u00E9/max)
573
monitor_load_factor_mem=50
574
monitor_load_factor_thread=50
544
monitor_performance_servers=Serveurs
575
monitor_performance_servers=Serveurs
545
monitor_performance_tab_title=Performance
576
monitor_performance_tab_title=Performance
546
monitor_performance_title=Graphique de performance
577
monitor_performance_title=Graphique de performance
Lines 577-592 Link Here
577
post_body=Donn\u00E9es POST
608
post_body=Donn\u00E9es POST
578
post_body_raw=Donn\u00E9es POST brutes
609
post_body_raw=Donn\u00E9es POST brutes
579
post_thread_group_title=Groupe d'unit\u00E9s de fin
610
post_thread_group_title=Groupe d'unit\u00E9s de fin
580
property_as_field_label={0}:
611
property_as_field_label={0}\:
581
property_default_param=Valeur par d\u00E9faut
612
property_default_param=Valeur par d\u00E9faut
582
property_edit=Editer
613
property_edit=Editer
583
property_editor.value_is_invalid_message=Le texte que vous venez d'entrer n'a pas une valeur valide pour cette propri\u00E9t\u00E9.\nLa propri\u00E9t\u00E9 va revenir \u00E0 sa valeur pr\u00E9c\u00E9dente.
614
property_editor.value_is_invalid_message=Le texte que vous venez d'entrer n'a pas une valeur valide pour cette propri\u00E9t\u00E9.\nLa propri\u00E9t\u00E9 va revenir \u00E0 sa valeur pr\u00E9c\u00E9dente.
584
property_editor.value_is_invalid_title=Texte saisi invalide
615
property_editor.value_is_invalid_title=Texte saisi invalide
585
property_name_param=Nom de la propri\u00E9t\u00E9
616
property_name_param=Nom de la propri\u00E9t\u00E9
586
property_returnvalue_param=Revenir \u00E0 la valeur originale de la propri\u00E9t\u00E9 (d\u00E9faut non) ?
617
property_returnvalue_param=Revenir \u00E0 la valeur originale de la propri\u00E9t\u00E9 (d\u00E9faut non) ?
587
property_tool_tip={0}: {1}
618
property_tool_tip={0}\: {1}
588
property_undefined=Non d\u00E9fini
619
property_undefined=Non d\u00E9fini
589
provider_url=Provider URL
590
property_value_param=Valeur de propri\u00E9t\u00E9
620
property_value_param=Valeur de propri\u00E9t\u00E9
591
property_visualiser_title=Afficheur de propri\u00E9t\u00E9s
621
property_visualiser_title=Afficheur de propri\u00E9t\u00E9s
592
protocol=Protocole [http] \:
622
protocol=Protocole [http] \:
Lines 594-599 Link Here
594
protocol_java_classname=Nom de classe \:
624
protocol_java_classname=Nom de classe \:
595
protocol_java_config_tile=Configurer \u00E9chantillon Java
625
protocol_java_config_tile=Configurer \u00E9chantillon Java
596
protocol_java_test_title=Test Java
626
protocol_java_test_title=Test Java
627
provider_url=Provider URL
597
proxy_assertions=Ajouter une Assertion R\u00E9ponse
628
proxy_assertions=Ajouter une Assertion R\u00E9ponse
598
proxy_cl_error=Si un serveur proxy est sp\u00E9cifi\u00E9, h\u00F4te et port doivent \u00EAtre donn\u00E9
629
proxy_cl_error=Si un serveur proxy est sp\u00E9cifi\u00E9, h\u00F4te et port doivent \u00EAtre donn\u00E9
599
proxy_content_type_exclude=Exclure \:
630
proxy_content_type_exclude=Exclure \:
Lines 637-649 Link Here
637
regexfunc_param_3=Quelle correspondance utiliser. Un entier 1 ou plus grand, RAND pour indiquer que JMeter doit choisir al\u00E9atoirement , A d\u00E9cimal, ou ALL indique que toutes les correspondances doivent \u00EAtre utilis\u00E9es
668
regexfunc_param_3=Quelle correspondance utiliser. Un entier 1 ou plus grand, RAND pour indiquer que JMeter doit choisir al\u00E9atoirement , A d\u00E9cimal, ou ALL indique que toutes les correspondances doivent \u00EAtre utilis\u00E9es
638
regexfunc_param_4=Entre le texte. Si ALL est s\u00E9lectionn\u00E9, l'entre-texte sera utilis\u00E9 pour g\u00E9n\u00E9rer les r\u00E9sultats ([""])
669
regexfunc_param_4=Entre le texte. Si ALL est s\u00E9lectionn\u00E9, l'entre-texte sera utilis\u00E9 pour g\u00E9n\u00E9rer les r\u00E9sultats ([""])
639
regexfunc_param_5=Text par d\u00E9faut. Utilis\u00E9 \u00E0 la place du canevas si l'expression r\u00E9guli\u00E8re ne trouve pas de correspondance
670
regexfunc_param_5=Text par d\u00E9faut. Utilis\u00E9 \u00E0 la place du canevas si l'expression r\u00E9guli\u00E8re ne trouve pas de correspondance
640
regexfunc_param_7=Variable en entr\u221a\u00a9e contenant le texte \u221a\u2020 parser ([\u221a\u00a9chantillon pr\u221a\u00a9c\u221a\u00a9dent])
671
regexfunc_param_7=Variable en entr\u221A\u00A9e contenant le texte \u221A\u2020 parser ([\u221A\u00A9chantillon pr\u221A\u00A9c\u221A\u00A9dent])
641
regexp_render_no_text=Les donn\u00E9es de r\u00E9ponse ne sont pas du texte.
672
regexp_render_no_text=Les donn\u00E9es de r\u00E9ponse ne sont pas du texte.
642
regexp_tester_button_test=Tester
673
regexp_tester_button_test=Tester
643
regexp_tester_field=Expression r\u00E9guli\u00E8re \:
674
regexp_tester_field=Expression r\u00E9guli\u00E8re \:
644
regexp_tester_title=Testeur de RegExp
675
regexp_tester_title=Testeur de RegExp
645
remote_error_init=Erreur lors de l'initialisation du serveur distant
676
remote_error_init=Erreur lors de l'initialisation du serveur distant
646
remote_error_starting=Erreur lors du d\u221a\u00a9marrage du serveur distant
677
remote_error_starting=Erreur lors du d\u221A\u00A9marrage du serveur distant
647
remote_exit=Sortie distante
678
remote_exit=Sortie distante
648
remote_exit_all=Sortie distante de tous
679
remote_exit_all=Sortie distante de tous
649
remote_shut=Extinction \u00E0 distance
680
remote_shut=Extinction \u00E0 distance
Lines 655-686 Link Here
655
remove=Supprimer
686
remove=Supprimer
656
rename=Renommer une entr\u00E9e
687
rename=Renommer une entr\u00E9e
657
report=Rapport
688
report=Rapport
658
report_bar_chart=Graphique \u221a\u2020 barres
689
report_bar_chart=Graphique \u221A\u2020 barres
659
report_bar_graph_url=URL
690
report_bar_graph_url=URL
660
report_base_directory=R\u221a\u00a9pertoire de Base
691
report_base_directory=R\u221A\u00A9pertoire de Base
661
report_chart_caption=L\u221a\u00a9gende du graph
692
report_chart_caption=L\u221A\u00A9gende du graph
662
report_chart_x_axis=Axe X
693
report_chart_x_axis=Axe X
663
report_chart_x_axis_label=Libell\u221a\u00a9 de l'Axe X
694
report_chart_x_axis_label=Libell\u221A\u00A9 de l'Axe X
664
report_chart_y_axis=Axe Y
695
report_chart_y_axis=Axe Y
665
report_chart_y_axis_label=Libell\u221a\u00a9 de l'Axe Y
696
report_chart_y_axis_label=Libell\u221A\u00A9 de l'Axe Y
666
report_line_graph=Graphique Lin\u221a\u00a9aire
697
report_line_graph=Graphique Lin\u221A\u00A9aire
667
report_line_graph_urls=Inclure les URLs
698
report_line_graph_urls=Inclure les URLs
668
report_output_directory=R\u221a\u00a9pertoire de sortie du rapport
699
report_output_directory=R\u221A\u00A9pertoire de sortie du rapport
669
report_page=Page de Rapport
700
report_page=Page de Rapport
670
report_page_element=Page Element
701
report_page_element=Page Element
671
report_page_footer=Pied de page
702
report_page_footer=Pied de page
672
report_page_header=Ent\u221a\u2122te de Page
703
report_page_header=Ent\u221A\u2122te de Page
673
report_page_index=Cr\u221a\u00a9er la Page d'Index
704
report_page_index=Cr\u221A\u00A9er la Page d'Index
674
report_page_intro=Page d'Introduction
705
report_page_intro=Page d'Introduction
675
report_page_style_url=Url de la feuille de style
706
report_page_style_url=Url de la feuille de style
676
report_page_title=Titre de la Page
707
report_page_title=Titre de la Page
677
report_pie_chart=Camembert
708
report_pie_chart=Camembert
678
report_plan=Plan du rapport
709
report_plan=Plan du rapport
679
report_select=Selectionner
710
report_select=Selectionner
680
report_summary=Rapport r\u221a\u00a9sum\u221a\u00a9
711
report_summary=Rapport r\u221A\u00A9sum\u221A\u00A9
681
report_table=Table du Rapport
712
report_table=Table du Rapport
682
report_writer=R\u221a\u00a9dacteur du Rapport
713
report_writer=R\u221A\u00A9dacteur du Rapport
683
report_writer_html=R\u221a\u00a9dacteur de rapport HTML
714
report_writer_html=R\u221A\u00A9dacteur de rapport HTML
684
request_data=Donn\u00E9e requ\u00EAte
715
request_data=Donn\u00E9e requ\u00EAte
685
reset_gui=R\u00E9initialiser l'\u00E9l\u00E9ment
716
reset_gui=R\u00E9initialiser l'\u00E9l\u00E9ment
686
response_save_as_md5=R\u00E9ponse en empreinte MD5
717
response_save_as_md5=R\u00E9ponse en empreinte MD5
Lines 688-694 Link Here
688
resultaction_title=Op\u00E9rateur R\u00E9sultats Action
719
resultaction_title=Op\u00E9rateur R\u00E9sultats Action
689
resultsaver_addtimestamp=Ajouter un timestamp
720
resultsaver_addtimestamp=Ajouter un timestamp
690
resultsaver_errors=Enregistrer seulement les r\u00E9ponses en \u00E9checs
721
resultsaver_errors=Enregistrer seulement les r\u00E9ponses en \u00E9checs
691
resultsaver_numberpadlen=Taille minimale du num\u221a\u00a9ro de s\u221a\u00a9quence
722
resultsaver_numberpadlen=Taille minimale du num\u221A\u00A9ro de s\u221A\u00A9quence
692
resultsaver_prefix=Pr\u00E9fixe du nom de fichier \: 
723
resultsaver_prefix=Pr\u00E9fixe du nom de fichier \: 
693
resultsaver_skipautonumber=Ne pas ajouter de nombre au pr\u00E9fixe
724
resultsaver_skipautonumber=Ne pas ajouter de nombre au pr\u00E9fixe
694
resultsaver_skipsuffix=Ne pas ajouter de suffixe
725
resultsaver_skipsuffix=Ne pas ajouter de suffixe
Lines 867-874 Link Here
867
spline_visualizer_minimum=Minimum \:
898
spline_visualizer_minimum=Minimum \:
868
spline_visualizer_title=Moniteur de courbe (spline)
899
spline_visualizer_title=Moniteur de courbe (spline)
869
spline_visualizer_waitingmessage=En attente de r\u00E9sultats d'\u00E9chantillons
900
spline_visualizer_waitingmessage=En attente de r\u00E9sultats d'\u00E9chantillons
870
split_function_string=Texte \u00E0 scinder
871
split_function_separator=S\u00E9parateur utilis\u00E9 pour scinder le texte. Par d\u00E9faut , (virgule) est utilis\u00E9.
901
split_function_separator=S\u00E9parateur utilis\u00E9 pour scinder le texte. Par d\u00E9faut , (virgule) est utilis\u00E9.
902
split_function_string=Texte \u00E0 scinder
872
ssl_alias_prompt=Veuillez entrer votre alias pr\u00E9f\u00E9r\u00E9
903
ssl_alias_prompt=Veuillez entrer votre alias pr\u00E9f\u00E9r\u00E9
873
ssl_alias_select=S\u00E9lectionner votre alias pour le test
904
ssl_alias_select=S\u00E9lectionner votre alias pour le test
874
ssl_alias_title=Alias du client
905
ssl_alias_title=Alias du client

Return to bug 52452