KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > j2ee > sun > share > configbean > customizers > common > MethodTableModel


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 /*
20  * MethodTableModel.java
21  *
22  * Created on February 2, 2005, 11:38 PM
23  */

24
25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers.common;
26
27 import java.util.ArrayList JavaDoc;
28 import java.util.Hashtable JavaDoc;
29 import java.util.List JavaDoc;
30 import java.util.Map JavaDoc;
31
32 import java.awt.Component JavaDoc;
33
34 import javax.swing.JComboBox JavaDoc;
35 import javax.swing.JTable JavaDoc;
36 import javax.swing.table.AbstractTableModel JavaDoc;
37 import javax.swing.table.TableCellRenderer JavaDoc;
38
39
40 /**
41  *
42  * @author Rajeshwar Patil
43  */

44 public abstract class MethodTableModel extends AbstractTableModel JavaDoc {
45
46     protected List JavaDoc ddMethods;
47     protected List JavaDoc methods;
48
49
50     //Map of java.util.Method to BaseBean(i.e. Method)
51
private Map JavaDoc methodToDDMethodMap;
52
53
54     /** Creates a new instance of MethodTableModel */
55     public MethodTableModel(List JavaDoc methods, List JavaDoc ddMethods) {
56         if (methods != null) {
57             this.methods = new ArrayList JavaDoc();
58             for(int i = 0;i < methods.size(); i++) {
59                     this.methods.add(methods.get(i));
60             }
61         }
62
63         if (ddMethods != null) {
64             this.ddMethods = new ArrayList JavaDoc();
65             for(int i = 0;i < ddMethods.size(); i++) {
66                     this.ddMethods.add(ddMethods.get(i));
67             }
68         }
69         setMap();
70         fireTableDataChanged();
71     }
72
73
74     public void setData(List JavaDoc methods, List JavaDoc ddMethods) {
75         if (methods != null) {
76             this.methods = new ArrayList JavaDoc();
77             for(int i = 0;i < methods.size(); i++) {
78                     this.methods.add(methods.get(i));
79             }
80         }
81
82         if (ddMethods != null) {
83             this.ddMethods = new ArrayList JavaDoc();
84             for(int i = 0;i < ddMethods.size(); i++) {
85                     this.ddMethods.add(ddMethods.get(i));
86             }
87         }
88
89         //printList(this.methods);
90
//printList(this.ddMethods);
91

92         setMap();
93         fireTableDataChanged();
94     }
95
96     
97     public MethodTableModel(List JavaDoc methods) {
98         this(methods, null);
99     }
100
101
102     protected MethodTableModel() {
103     }
104
105
106     public int getColumnCount() {
107         return getColumnNames().length;
108     }
109
110     
111     public String JavaDoc getColumnName(int column) {
112         return getColumnNames()[column];
113     }
114
115
116     public Class JavaDoc getColumnClass(int column) {
117         switch(column){
118             case 0: {
119                 return String JavaDoc.class;
120             }
121             case 1: {
122                 return Boolean JavaDoc.class;
123             }
124             default: {
125                 return getColumnType(column);
126             }
127         }
128     }
129
130
131     public int getRowCount() {
132         if (methods != null){
133                 return methods.size();
134         } else {
135                 return 0;
136         }
137     }
138
139
140     /*
141      * Don't need to implement this method unless your table's
142      * editable.
143      */

144     public boolean isCellEditable(int row, int col) {
145         //Note that the data/cell address is constant,
146
//no matter where the cell appears onscreen.
147
if (col == 0) {
148             return false;
149         } else {
150             return true;
151         }
152     }
153
154
155     public Object JavaDoc getValueAt(int row, int col) {
156         switch(col){
157             case 0: {
158                 //Method Name
159
Object JavaDoc method = methods.get(row);
160                 if(method != null){
161                     ///revert later(post Netbeans 4.1); since method is a mockup object and
162
//does not have method-signature available to display in tooltip
163
//using row number instead
164
///return getValueAt(col, method);
165
return getValueAt(col, method, row);
166                 }else{
167                     return null;
168                 }
169             }
170             case 1: {
171                 //Enability Flag
172
if(methodToDDMethodMap != null){
173                     if(methodToDDMethodMap.containsKey(methods.get(row))){
174                         return new Boolean JavaDoc("true"); //NOI18N
175
}
176                 }
177                 return new Boolean JavaDoc("false"); //NOI18N
178
}
179             default: {
180                    if(methodToDDMethodMap != null){
181                        Object JavaDoc ddMethod = methodToDDMethodMap.get(methods.get(row));
182                        if(ddMethod != null){
183                             return getDDValueAt(col, ddMethod);
184                        }
185                    } else return null;
186             }
187         }
188         return null;
189     }
190
191
192     /*
193      * Don't need to implement this method unless your table's
194      * data can change.
195      */

196     public void setValueAt(Object JavaDoc value, int row, int col) {
197         switch(col){
198             case 0: {
199             }
200             break;
201             case 1: {
202                 Object JavaDoc method = methods.get(row);
203                 Object JavaDoc ddMethod = null;
204                 if(methodToDDMethodMap != null){
205                     ddMethod = methodToDDMethodMap.get(method);
206                 }
207                 Boolean JavaDoc enable = (Boolean JavaDoc)value;
208                 if(enable.toString().equals("true")){ //NOI18N
209
if(ddMethod == null){
210                         enableMethod(method);
211                     }
212                 }else{
213                     if(ddMethod != null){
214                         disableMethod(method, ddMethod);
215                     }
216                 }
217             }
218             break;
219             default: {
220                 if(methodToDDMethodMap != null){
221                     Object JavaDoc ddMethod = methodToDDMethodMap.get(methods.get(row));
222                     if(ddMethod != null){
223                         setDDValueAt(col, ddMethod, value);
224                     }
225                 }
226             }
227             break;
228         }
229         fireTableCellUpdated(row, col);
230     }
231
232
233     protected abstract String JavaDoc[] getColumnNames();
234
235     protected abstract Class JavaDoc getColumnType(int column);
236
237     ///revert later(post Netbeans 4.1); since method is a mockup object and
238
//does not have unique method name available to display, using row number instead
239
///protected abstract Object getValueAt(int column, Object method);///revert later
240
protected abstract Object JavaDoc getValueAt(int column, Object JavaDoc method, int row);
241
242     protected abstract Object JavaDoc getDDValueAt(int column, Object JavaDoc ddMethod);
243
244     protected abstract void setDDValueAt(int column, Object JavaDoc ddMethod, Object JavaDoc value);
245
246     protected abstract Object JavaDoc getDDMethod(Object JavaDoc method);
247
248     protected abstract void addDDMethod(Object JavaDoc ddMethod);
249
250     protected abstract void removeDDMethod(Object JavaDoc ddMethod);
251
252     protected abstract boolean areEqual(Object JavaDoc ddMethod, Object JavaDoc method);
253
254
255     protected void setMap(){
256         //assert(methods != null);
257
methodToDDMethodMap = new Hashtable JavaDoc();
258         if(methods == null) return;
259         Object JavaDoc method = null;
260         if(ddMethods != null){
261             for(int i=0; i<ddMethods.size(); i++){
262                 Object JavaDoc ddMethod = ddMethods.get(i);
263                 method = getMethod(ddMethod, methods);
264                 assert(method != null);
265                 if(method != null){
266                     methodToDDMethodMap.put(method, ddMethod);
267                 }
268             }
269         }
270     }
271
272
273     private void enableMethod(Object JavaDoc method){
274         Object JavaDoc ddMethod = getDDObject(method);
275         if(methodToDDMethodMap == null){
276             methodToDDMethodMap = new Hashtable JavaDoc();
277         }
278         methodToDDMethodMap.put(method, ddMethod);
279         addDDMethod(ddMethod);
280         fireTableDataChanged();
281     }
282
283
284     private Object JavaDoc getDDObject(Object JavaDoc method){
285         return getDDMethod(method);
286     }
287
288
289     private void disableMethod(Object JavaDoc method, Object JavaDoc ddMethod){
290         if(methodToDDMethodMap != null){
291             methodToDDMethodMap.remove(method);
292             removeDDMethod(ddMethod);
293         }
294         fireTableDataChanged();
295     }
296
297
298     private Object JavaDoc getMethod(Object JavaDoc ddMethod, List JavaDoc methods){
299         for(int i=0; i<methods.size(); i++){
300             if(areEqual(ddMethod, methods.get(i))){
301                 return methods.get(i);
302             }
303         }
304         return null;
305     }
306
307
308    private void printList(List JavaDoc list){
309        if(list != null){
310            System.out.println("printList list --" + list); //NOI18N
311
System.out.println("printList list toString -- " + list.toString()); //NOI18N
312
int size = list.size();
313            for(int i=0; i<size; i++){
314                System.out.println("printList item no: i -- " + list.get(i)); //NOI18N
315
System.out.println("printList item no: i toSring() -- " + list.get(i).toString()); //NOI18N
316
}
317        }
318    }
319 }
320
Popular Tags