KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nextapp > echo2 > testapp > interactive > testscreen > ListRenderTableTest


1 /*
2  * This file is part of the Echo Web Application Framework (hereinafter "Echo").
3  * Copyright (C) 2002-2005 NextApp, Inc.
4  *
5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6  *
7  * The contents of this file are subject to the Mozilla Public License Version
8  * 1.1 (the "License"); you may not use this file except in compliance with
9  * the License. You may obtain a copy of the License at
10  * http://www.mozilla.org/MPL/
11  *
12  * Software distributed under the License is distributed on an "AS IS" basis,
13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14  * for the specific language governing rights and limitations under the
15  * License.
16  *
17  * Alternatively, the contents of this file may be used under the terms of
18  * either the GNU General Public License Version 2 or later (the "GPL"), or
19  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
20  * in which case the provisions of the GPL or the LGPL are applicable instead
21  * of those above. If you wish to allow use of your version of this file only
22  * under the terms of either the GPL or the LGPL, and not to allow others to
23  * use your version of this file under the terms of the MPL, indicate your
24  * decision by deleting the provisions above and replace them with the notice
25  * and other provisions required by the GPL or the LGPL. If you do not delete
26  * the provisions above, a recipient may use your version of this file under
27  * the terms of any one of the MPL, the GPL or the LGPL.
28  */

29
30 package nextapp.echo2.testapp.interactive.testscreen;
31
32 import nextapp.echo2.app.Column;
33 import nextapp.echo2.app.Component;
34 import nextapp.echo2.app.Extent;
35 import nextapp.echo2.app.Insets;
36 import nextapp.echo2.app.SelectField;
37 import nextapp.echo2.app.Table;
38 import nextapp.echo2.app.TextField;
39 import nextapp.echo2.app.layout.SplitPaneLayoutData;
40 import nextapp.echo2.app.list.AbstractListModel;
41 import nextapp.echo2.app.list.DefaultListModel;
42 import nextapp.echo2.app.list.ListModel;
43 import nextapp.echo2.app.table.DefaultTableModel;
44 import nextapp.echo2.app.table.TableCellRenderer;
45 import nextapp.echo2.app.text.StringDocument;
46
47 /**
48  * A test to determine bandwidth consumption of large numbers of list boxes
49  * with identical models.
50  */

51 public class ListRenderTableTest extends Column {
52     
53     private ListModel monthModel = new DefaultListModel(new Object JavaDoc[]{ "January", "Februrary", "March", "April", "May",
54             "June", "July", "August", "September", "October", "November", "December"});
55
56     private ListModel dayModel = new AbstractListModel(){
57     
58         /**
59          * @see nextapp.echo2.app.list.ListModel#size()
60          */

61         public int size() {
62             return 31;
63         }
64     
65         /**
66          * @see nextapp.echo2.app.list.ListModel#get(int)
67          */

68         public Object JavaDoc get(int index) {
69             return Integer.toString(index + 1);
70         }
71     };
72     
73     private ListModel yearModel = new AbstractListModel(){
74     
75         /**
76          * @see nextapp.echo2.app.list.ListModel#size()
77          */

78         public int size() {
79             return 200;
80         }
81     
82         /**
83          * @see nextapp.echo2.app.list.ListModel#get(int)
84          */

85         public Object JavaDoc get(int index) {
86             return Integer.toString(index + 1850);
87         }
88     };
89     
90     public ListRenderTableTest() {
91         setCellSpacing(new Extent(10));
92         
93         SplitPaneLayoutData splitPaneLayoutData = new SplitPaneLayoutData();
94         splitPaneLayoutData.setInsets(new Insets(10));
95         setLayoutData(splitPaneLayoutData);
96         
97         DefaultTableModel model = new DefaultTableModel();
98         model.setColumnCount(4);
99         for (int i = 0; i < 10; ++i) {
100             model.addRow(new Object JavaDoc[]{"John Smith", new Integer JavaDoc(0), new Integer JavaDoc(4), new Integer JavaDoc(1982)});
101         }
102         
103         TableCellRenderer renderer = new TableCellRenderer() {
104         
105             public Component getTableCellRendererComponent(Table table, Object JavaDoc value, int column, int row) {
106                 switch (column) {
107                 case 0:
108                     TextField tf = new TextField(new StringDocument(), value.toString(), 30);
109                     return tf;
110                 case 1:
111                     SelectField monthField = new SelectField(monthModel);
112                     monthField.setSelectedIndex(((Integer JavaDoc) value).intValue());
113                     return monthField;
114                 case 2:
115                     SelectField dayField = new SelectField(dayModel);
116                     dayField.setSelectedIndex(((Integer JavaDoc) value).intValue() - 1);
117                     return dayField;
118                 case 3:
119                     SelectField yearField = new SelectField(yearModel);
120                     yearField.setSelectedIndex(((Integer JavaDoc) value).intValue() - 1850);
121                     return yearField;
122                 }
123                 return null;
124             }
125         };
126         
127         Table table = new Table(model);
128         table.setStyleName("Default");
129         table.setDefaultRenderer(Object JavaDoc.class, renderer);
130         add(table);
131     }
132 }
133
Popular Tags