KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > addressbook > gui > table > TableView


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.addressbook.gui.table;
19
20 import java.awt.Dimension JavaDoc;
21
22 import javax.swing.JTable JavaDoc;
23 import javax.swing.table.TableColumn JavaDoc;
24 import javax.swing.table.TableModel JavaDoc;
25
26 import org.columba.addressbook.gui.table.renderer.DefaultHeaderRenderer;
27 import org.columba.addressbook.util.AddressbookResourceLoader;
28
29 /**
30  * JTable customized with renderers.
31  *
32  * @author fdietz
33  */

34 public class TableView extends JTable JavaDoc {
35
36     private TableController controller;
37
38     public TableView(TableController controller, TableModel JavaDoc tableModel) {
39         super(tableModel);
40
41         this.controller = controller;
42
43         // this.addressbookModel = addressbookModel;
44
setIntercellSpacing(new Dimension JavaDoc(0, 0));
45         setShowGrid(false);
46         setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
47
48         // set renderers for columns
49
TableColumn JavaDoc tc = getColumnModel().getColumn(0);
50
51         tc = getColumnModel().getColumn(0);
52         tc.setHeaderRenderer(createHeader("displayname"));
53         tc = getColumnModel().getColumn(1);
54         tc.setHeaderRenderer(createHeader("given"));
55         tc = getColumnModel().getColumn(2);
56         tc.setHeaderRenderer(createHeader("family"));
57         tc = getColumnModel().getColumn(3);
58         tc.setHeaderRenderer(createHeader("email;internet"));
59         tc = getColumnModel().getColumn(4);
60         tc.setHeaderRenderer(createHeader("url"));
61     }
62
63     public boolean getScrollableTracksViewportHeight() {
64         return getPreferredSize().height < getParent().getHeight();
65     }
66
67     /**
68      * Create table header renderer. Names use semicolon ";" character to define
69      * subtypes.
70      * <p>
71      * For example:email;internet or: tel;fax
72      * <p>
73      * Method searches for a semicolon and creates a string representation,
74      * setting the subtype in braces.
75      *
76      * @param name
77      * @return
78      */

79     private DefaultHeaderRenderer createHeader(String JavaDoc name) {
80         int index = name.indexOf(";");
81
82         if (index != -1) {
83             String JavaDoc prefix = AddressbookResourceLoader.getString("header", name
84                     .substring(0, index));
85             String JavaDoc suffix = AddressbookResourceLoader.getString("header", name
86                     .substring(index + 1, name.length()));
87
88             return new DefaultHeaderRenderer(controller.getSortDecorator(),
89                     prefix + " (" + suffix + ")");
90         } else {
91             String JavaDoc trans = AddressbookResourceLoader.getString("header", name);
92             return new DefaultHeaderRenderer(controller.getSortDecorator(),
93                     trans);
94         }
95
96         // return new DefaultHeaderRenderer(controller.getSortDecorator(),
97
// name);
98
}
99 }
100
Popular Tags