Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
TableUtils |
|
| 3.5;3.5 |
1 | /* | |
2 | * Copyright (c) 2000 | |
3 | * Jon Schewe. All rights reserved | |
4 | * | |
5 | * Redistribution and use in source and binary forms, with or without | |
6 | * modification, are permitted provided that the following conditions | |
7 | * are met: | |
8 | * 1. Redistributions of source code must retain the above copyright | |
9 | * notice, this list of conditions and the following disclaimer. | |
10 | * 2. Redistributions in binary form must reproduce the above copyright | |
11 | * notice, this list of conditions and the following disclaimer in the | |
12 | * documentation and/or other materials provided with the distribution. | |
13 | * | |
14 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
24 | * SUCH DAMAGE. | |
25 | * | |
26 | * I'd appreciate comments/suggestions on the code jpschewe@mtu.net | |
27 | */ | |
28 | package net.mtu.eggplant.util.gui; | |
29 | ||
30 | import javax.swing.JTable; | |
31 | import javax.swing.table.TableCellRenderer; | |
32 | import javax.swing.table.TableColumn; | |
33 | import javax.swing.table.TableColumnModel; | |
34 | ||
35 | /** | |
36 | * utilities for working with tables | |
37 | * | |
38 | * @version $Revision$ | |
39 | */ | |
40 | public final class TableUtils { | |
41 | ||
42 | 0 | private TableUtils() { |
43 | // don't create instances | |
44 | 0 | } |
45 | ||
46 | /** | |
47 | * set the widths of all of the columns to the max width of the object in the | |
48 | * column. | |
49 | * | |
50 | * @pre (table != null) | |
51 | **/ | |
52 | public static void setColumnMinWidths(final JTable table) { | |
53 | 0 | final TableColumnModel colModel = table.getColumnModel(); |
54 | /** | |
55 | * @assert (colModel.getColumnCount() == table.getColumnCount()), | |
56 | * "table and column model don't agree"; | |
57 | **/ | |
58 | 0 | final int columns = colModel.getColumnCount(); |
59 | ||
60 | 0 | for (int columnIndex = 0; columnIndex < columns; columnIndex++) { |
61 | 0 | int maxWidth = 0; |
62 | 0 | final TableColumn column = colModel.getColumn(columnIndex); |
63 | /** | |
64 | * @assert (column != null) | |
65 | **/ | |
66 | 0 | TableCellRenderer renderer = column.getCellRenderer(); |
67 | ||
68 | 0 | if (renderer == null) { |
69 | 0 | renderer = table.getDefaultRenderer(table.getColumnClass(columnIndex)); |
70 | } | |
71 | 0 | if (renderer != null) { |
72 | 0 | final int rows = table.getRowCount(); |
73 | 0 | for (int rowIndex = 0; rowIndex < rows; rowIndex++) { |
74 | 0 | final Object object = table.getValueAt(rowIndex, columnIndex); |
75 | 0 | maxWidth = Math.max(maxWidth, renderer.getTableCellRendererComponent( |
76 | table, object, false, false, rowIndex, columnIndex) | |
77 | 0 | .getPreferredSize().width); |
78 | } | |
79 | // ????? | |
80 | // maxWidth = Math.max(maxWidth, column.getWidth()); | |
81 | ||
82 | 0 | renderer = column.getHeaderRenderer(); |
83 | 0 | if (renderer == null) { |
84 | 0 | renderer = table.getTableHeader().getDefaultRenderer(); |
85 | } | |
86 | 0 | maxWidth = Math.max(maxWidth, renderer.getTableCellRendererComponent( |
87 | 0 | table, column.getHeaderValue(), false, false, -1, columnIndex) |
88 | 0 | .getPreferredSize().width); |
89 | 0 | column.setMinWidth(maxWidth + 5); |
90 | } | |
91 | } | |
92 | 0 | } |
93 | } |