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

(-)UserParametersGui.java (-10 / +54 lines)
Lines 35-40 Link Here
35
import javax.swing.JTable;
35
import javax.swing.JTable;
36
import javax.swing.ListSelectionModel;
36
import javax.swing.ListSelectionModel;
37
import javax.swing.table.TableCellEditor;
37
import javax.swing.table.TableCellEditor;
38
import javax.swing.table.JTableHeader;
39
import javax.swing.table.TableCellRenderer;
40
import javax.swing.table.TableColumn;
41
import java.awt.FontMetrics;
42
import java.awt.Component;
43
import javax.swing.table.DefaultTableCellRenderer;
38
44
39
import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer;
45
import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer;
40
import org.apache.jmeter.gui.util.PowerTableModel;
46
import org.apache.jmeter.gui.util.PowerTableModel;
Lines 67-72 Link Here
67
    private JButton addParameterButton, addUserButton, deleteRowButton, deleteColumnButton;
73
    private JButton addParameterButton, addUserButton, deleteRowButton, deleteColumnButton;
68
74
69
    private JCheckBox perIterationCheck;
75
    private JCheckBox perIterationCheck;
76
    
77
    private JPanel paramPanel;
70
78
71
    public UserParametersGui() {
79
    public UserParametersGui() {
72
        super();
80
        super();
Lines 197-203 Link Here
197
        // paramTable.setPreferredScrollableViewportSize(new Dimension(100,
205
        // paramTable.setPreferredScrollableViewportSize(new Dimension(100,
198
        // 70));
206
        // 70));
199
207
200
        JPanel paramPanel = new JPanel(new BorderLayout());
208
        paramPanel = new JPanel(new BorderLayout());
201
        paramPanel.add(tableLabel, BorderLayout.NORTH);
209
        paramPanel.add(tableLabel, BorderLayout.NORTH);
202
        JScrollPane scroll = new JScrollPane(paramTable);
210
        JScrollPane scroll = new JScrollPane(paramTable);
203
        scroll.setPreferredSize(scroll.getMinimumSize());
211
        scroll.setPreferredSize(scroll.getMinimumSize());
Lines 229-234 Link Here
229
        return buttonPanel;
237
        return buttonPanel;
230
    }
238
    }
231
239
240
    /**
241
     * Set Column size
242
     */
243
    private void setColumnWidths() {
244
		int margin = 10;
245
		int minwidth = 150;
246
		
247
		JTableHeader tableHeader = paramTable.getTableHeader();
248
		FontMetrics headerFontMetrics = tableHeader.getFontMetrics(tableHeader.getFont());
249
	    
250
	    for (int i = 0; i < tableModel.getColumnCount(); i++) {
251
			int headerWidth = headerFontMetrics.stringWidth(paramTable.getColumnName(i));
252
			int maxWidth = getMaximalRequiredColumnWidth(i, headerWidth);
253
			
254
			paramTable.getColumnModel().getColumn(i).setPreferredWidth(Math.max(maxWidth + margin, minwidth));
255
        }
256
    }
257
    
258
    private int getMaximalRequiredColumnWidth(int columnIndex, int headerWidth) {
259
        int maxWidth = headerWidth;
260
261
        TableColumn column = paramTable.getColumnModel().getColumn(columnIndex);
262
263
        TableCellRenderer cellRenderer = column.getCellRenderer();
264
265
        if(cellRenderer == null) {
266
            cellRenderer = new DefaultTableCellRenderer();
267
        }
268
269
        for(int row = 0; row < paramTable.getModel().getRowCount(); row++) {
270
            Component rendererComponent = cellRenderer.getTableCellRendererComponent(paramTable,
271
                paramTable.getModel().getValueAt(row, columnIndex),
272
                false,
273
                false,
274
                row,
275
                columnIndex);
276
277
            double valueWidth = rendererComponent.getPreferredSize().getWidth();
278
279
            maxWidth = (int) Math.max(maxWidth, valueWidth);
280
        }
281
282
        return maxWidth;
283
    }
284
    
232
    private class AddParamAction implements ActionListener {
285
    private class AddParamAction implements ActionListener {
233
        public void actionPerformed(ActionEvent e) {
286
        public void actionPerformed(ActionEvent e) {
234
            if (paramTable.isEditing()) {
287
            if (paramTable.isEditing()) {
Lines 271-285 Link Here
271
        }
324
        }
272
    }
325
    }
273
326
274
    /**
275
     * Set Column size
276
     */
277
    private void setColumnWidths() {
278
        for (int i = 0; i < tableModel.getColumnCount(); i++) {
279
            paramTable.getColumnModel().getColumn(i).setPreferredWidth(200);
280
        }
281
    }
282
    
283
    private class DeleteRowAction implements ActionListener {
327
    private class DeleteRowAction implements ActionListener {
284
        public void actionPerformed(ActionEvent e) {
328
        public void actionPerformed(ActionEvent e) {
285
            if (paramTable.isEditing()) {
329
            if (paramTable.isEditing()) {

Return to bug 52679