KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > form > editors2 > ListModelEditor


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 package org.netbeans.modules.form.editors2;
21
22 import javax.swing.*;
23 import org.netbeans.modules.form.editors.StringArrayEditor;
24 import org.openide.util.NbBundle;
25
26 /** A simple property editor for ListModel.
27  *
28  * @author Tomas Pavek
29  */

30
31 public class ListModelEditor extends StringArrayEditor {
32
33     private ListModel listModel = null;
34
35     public void setValue(Object JavaDoc val) {
36         if (val instanceof ListModel) {
37             listModel = (ListModel) val;
38             super.setValue(getDataFromModel(listModel));
39         }
40         else if (val instanceof String JavaDoc[]) {
41             listModel = getModelForData((String JavaDoc[])val);
42             super.setValue(val);
43         }
44         else {
45             listModel = getModelForData(new String JavaDoc[0]);
46             super.setValue(null);
47         }
48     }
49
50     public Object JavaDoc getValue() {
51         return listModel;
52     }
53
54     public void setStringArray(String JavaDoc[] value) {
55         listModel = getModelForData(value);
56         super.setValue(value);
57     }
58
59     public String JavaDoc[] getStringArray () {
60         return (String JavaDoc[])super.getValue ();
61     }
62
63     public String JavaDoc getJavaInitializationString() {
64         if (getStrings(true).equals(""))
65             return null;
66         StringBuffer JavaDoc buf = new StringBuffer JavaDoc("new javax.swing.AbstractListModel() {\n"); // NOI18N
67
buf.append("String[] strings = { "); // NOI18N
68
buf.append(getStrings(true));
69         buf.append(" };\n"); // NOI18N
70
buf.append("public int getSize() { return strings.length; }\n"); // NOI18N
71
buf.append("public Object getElementAt(int i) { return strings[i]; }\n"); // NOI18N
72
buf.append("}"); // NOI18N
73

74         return buf.toString();
75     }
76
77     static String JavaDoc[] getDataFromModel(ListModel model) {
78         String JavaDoc[] data = new String JavaDoc[model.getSize()];
79         for (int i=0; i < data.length; i++) {
80             Object JavaDoc obj = model.getElementAt(i);
81             data[i] = obj instanceof String JavaDoc ? (String JavaDoc) obj : ""; // NOI18N
82
}
83         return data;
84     }
85
86     static ListModel getModelForData(String JavaDoc[] data) {
87         DefaultListModel model = new DefaultListModel();
88         for (int i=0; i < data.length; i++)
89             model.addElement(data[i]);
90         return model;
91     }
92     
93     // NamedPropertyEditor implementation
94
public String JavaDoc getDisplayName() {
95         return NbBundle.getBundle(getClass()).getString("CTL_ListModelEditor_DisplayName"); // NOI18N
96
}
97
98 }
99
Popular Tags