1   package org.wcb.gui.renderer;
2   
3   import javax.swing.*;
4   import javax.swing.table.TableCellRenderer;
5   import java.awt.*;
6   import java.io.IOException;
7   import java.io.BufferedReader;
8   import java.io.StringReader;
9   import java.util.Vector;
10  
11  /**
12   * <small>
13   * Copyright (c)  2006  wbogaardt.
14   * This library is free software; you can redistribute it and/or
15   * modify it under the terms of the GNU Lesser General Public
16   * License as published by the Free Software Foundation; either
17   * version 2.1 of the License, or (at your option) any later version.
18   *
19   * This library is distributed in the hope that it will be useful,
20   * but WITHOUT ANY WARRANTY; without even the implied warranty of
21   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22   * Lesser General Public License for more details.
23   *
24   * You should have received a copy of the GNU Lesser General Public
25   * License along with this library; if not, write to the Free Software
26   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
27   * <p/>
28   * $File:  $ <br>
29   * $Change:  $ submitted by $Author: wbogaardt $ at $DateTime: Apr 4, 2006 5:14:20 PM $ <br>
30   * </small>
31   *
32   * @author wbogaardt
33   * @version 1
34   *          Date: Apr 4, 2006
35   *          Time: 5:14:20 PM
36   */
37  
38  public class MultiLineHeaderRenderer extends JList implements TableCellRenderer {
39    public MultiLineHeaderRenderer() {
40      setOpaque(true);
41      setForeground(UIManager.getColor("TableHeader.foreground"));
42      setBackground(UIManager.getColor("TableHeader.background"));
43      setBorder(UIManager.getBorder("TableHeader.cellBorder"));
44      ListCellRenderer renderer = getCellRenderer();
45      ((JLabel) renderer).setHorizontalAlignment(JLabel.CENTER);
46      setCellRenderer(renderer);
47    }
48  
49    public Component getTableCellRendererComponent(JTable table, Object value,
50                                                   boolean isSelected, boolean hasFocus, int row, int column) {
51      setFont(table.getFont());
52      String str = (value == null) ? "" : value.toString();
53      BufferedReader br = new BufferedReader(new StringReader(str));
54      String line;
55      Vector v = new Vector();
56      try {
57        while ((line = br.readLine()) != null) {
58          v.addElement(line);
59        }
60      } catch (IOException ex) {
61        ex.printStackTrace();
62      }
63      setListData(v);
64      return this;
65    }
66  }
67  
68