KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > teamkonzept > field > TKTextField


1 package com.teamkonzept.field;
2
3 import com.teamkonzept.lib.*;
4 import com.teamkonzept.publishing.markups.*;
5 import com.teamkonzept.web.*;
6 import com.teamkonzept.field.db.*;
7 import com.teamkonzept.international.LanguageManager;
8 import org.w3c.dom.*;
9
10 /**
11  * The text field control.
12  *
13  * @author $Author: uli $
14  * @version $Revision: 1.27 $
15  */

16 public class TKTextField
17     extends TKAtomField
18 {
19     // $Id: TKTextField.java,v 1.27 2002/02/27 11:07:04 uli Exp $
20

21     /**
22      * The class identifier.
23      */

24     public static final String JavaDoc CLASS_ID = "TEXT";
25     public static final String JavaDoc COLS_KEY = "COLS";
26     public static final String JavaDoc ROWS_KEY = "ROWS";
27     public static final String JavaDoc MAX_SIZE_KEY = "MAX_SIZE";
28
29     /**
30      * The column field size.
31      */

32     public static final int COLUMN_FIELD_SIZE = 3;
33
34     /**
35      * The length field size.
36      */

37     public static final int LENGTH_FIELD_SIZE = 6;
38
39     protected int rows = 0;
40
41     protected int cols = 0;
42
43     protected int maxSize = 0;
44
45     public TKTextField() {};
46
47     public TKTextField( String JavaDoc name, int rows, int cols, int maxSize )
48     {
49         this( name, rows, cols, maxSize, null );
50     }
51
52     public TKTextField( String JavaDoc name, int rows, int cols, int maxSize, String JavaDoc showName )
53     {
54         initTextField( CLASS_ID, name, rows, cols, maxSize, showName );
55     }
56
57     public void initTextField( String JavaDoc type, String JavaDoc name, int rows, int cols, int maxSize, String JavaDoc showName )
58     {
59         initAtomField( type, name, showName );
60         this.rows = rows;
61         this.cols = cols;
62         this.maxSize = maxSize;
63     }
64
65     public void init( String JavaDoc fieldType, Object JavaDoc initData )
66         throws
67             TKUnregisteredClassException,
68             ClassNotFoundException JavaDoc,
69             InstantiationException JavaDoc,
70             IllegalAccessException JavaDoc
71     {
72         super.init( fieldType, initData );
73         TKHashtable data = (TKHashtable) initData;
74         rows = Integer.parseInt( (String JavaDoc) data.get(ROWS_KEY) );
75         cols = Integer.parseInt( (String JavaDoc) data.get(COLS_KEY) );
76
77         String JavaDoc value = (String JavaDoc) data.get(MAX_SIZE_KEY);
78         this.maxSize = value != null && value.length() > 0
79                            ? Integer.parseInt(value)
80                            : 0;
81     }
82
83     /**
84      * Methode zur Definition eines Textfeldes
85      */

86     public TKFieldGroup getDefGroup(TKFieldSwitch allSwitch, TKFieldSwitchList allSwitchList) {
87
88         TKBaseField [] textArray = {
89             new TKInputField( TKTextField.NAME_KEY, TKInputField.SMALL_DEFAULT_SIZE, TKInputField.SMALL_DEFAULT_LENGTH, LanguageManager.getText(LANGUAGE_CONTEXT, "INPUT_NAME"), TKInputField.CHECK_STRING),
90             new TKInputField( TKTextField.SHOW_NAME_KEY, TKInputField.LARGE_DEFAULT_SIZE, TKInputField.LARGE_DEFAULT_LENGTH, LanguageManager.getText(LANGUAGE_CONTEXT, "INPUT_SHOWNAME"), TKInputField.CHECK_STRING),
91             new TKInputField( TKTextField.COLS_KEY, COLUMN_FIELD_SIZE, COLUMN_FIELD_SIZE, LanguageManager.getText(LANGUAGE_CONTEXT, "TEXTFIELD_WIDTH"), TKInputField.CHECK_INTEGER),
92             new TKInputField( TKTextField.ROWS_KEY, COLUMN_FIELD_SIZE, COLUMN_FIELD_SIZE, LanguageManager.getText(LANGUAGE_CONTEXT, "TEXTFIELD_HEIGHT"), TKInputField.CHECK_INTEGER),
93             new TKInputField( MAX_SIZE_KEY, LENGTH_FIELD_SIZE, LENGTH_FIELD_SIZE, LanguageManager.getText(LANGUAGE_CONTEXT, "INPUT_MAXLENGTH"), TKInputField.CHECK_OPTIONAL_INTEGER)
94
95         };
96         TKFieldGroup textGroup =
97             new TKFieldGroup( TKTextField.CLASS_ID, new TKVector( textArray ), LanguageManager.getText(LANGUAGE_CONTEXT, TKTextField.CLASS_ID) );
98         return textGroup;
99     }
100
101     public Object JavaDoc toData ()
102     {
103         TKHashtable result = (TKHashtable) super.toData();
104
105         result.put(ROWS_KEY, String.valueOf(rows));
106         result.put(COLS_KEY, String.valueOf(cols));
107
108         if (maxSize > 0)
109         {
110             result.put(MAX_SIZE_KEY, String.valueOf(maxSize));
111         }
112
113         return result;
114     }
115
116     public void fillIntoTemplate (TKHTMLTemplate t, Object JavaDoc value, String JavaDoc prefix)
117     {
118         super.fillIntoTemplate(t, value, prefix);
119
120         t.set(ROWS_KEY, String.valueOf(rows));
121         t.set(COLS_KEY, String.valueOf(cols));
122
123         if (maxSize > 0)
124         {
125             t.set(MAX_SIZE_KEY, String.valueOf(maxSize));
126         }
127     }
128
129     public void fillAttributesIntoNode(Element node, Object JavaDoc data) throws DOMException
130     {
131         super.fillAttributesIntoNode(node, data);
132         node.setAttribute( ROWS_KEY, String.valueOf( rows ) );
133         node.setAttribute( COLS_KEY, String.valueOf( cols ) );
134         node.setAttribute( MAX_SIZE_KEY,String.valueOf( maxSize));
135     }
136
137     public int realInsertIntoDB( TKFormDBData db, int formId )
138     {
139         if( super.realInsertIntoDB( db, formId ) == -1 ) return -1;
140         insertNewFieldAttribute( db, formId, ROWS_KEY, 0, String.valueOf( rows ) );
141         insertNewFieldAttribute( db, formId, COLS_KEY, 0, String.valueOf( cols ) );
142         insertNewFieldAttribute( db, formId, MAX_SIZE_KEY, 0, String.valueOf( maxSize));
143         return fieldId;
144     }
145
146     public void initFromDB( String JavaDoc classId, TKFormDBData db, TKVector otherFields )
147         throws
148             TKUnregisteredClassException,
149             ClassNotFoundException JavaDoc,
150             InstantiationException JavaDoc,
151             IllegalAccessException JavaDoc
152     {
153         super.initFromDB( classId, db, otherFields );
154         rows = Integer.parseInt( getFieldAttribute( db, ROWS_KEY, 0 ) );
155         cols = Integer.parseInt( getFieldAttribute( db, COLS_KEY, 0 ) );
156         if (hasFieldAttribute( db, MAX_SIZE_KEY, 0 ))
157             maxSize = Integer.parseInt( getFieldAttribute( db, MAX_SIZE_KEY, 0) );
158     }
159
160     public Object JavaDoc compileData (String JavaDoc prefix, TKHashtable data, TKHashtable context)
161     {
162         Object JavaDoc result = super.compileData(prefix, data, context);
163         Object JavaDoc[] args = new Object JavaDoc[1];
164         args[0] = fieldName;
165         String JavaDoc text = (String JavaDoc) data.get(prefix+fieldName);
166
167         // Laenge ueberpruefen
168

169         if (maxSize > 0)
170         {
171             if (text.length() > maxSize && context != null)
172             {
173                 TKHashtable table = new TKHashtable ();
174                 table.put ("DIAG",LanguageManager.getText(LANGUAGE_CONTEXT, "TEXTFIELD_TOO_LONG", args));
175                 table.put ("PATH",prefix+fieldName);
176                 addToContext (table,DIAGS_KEY,context);
177             }
178         }
179         return result;
180     }
181
182     public Object JavaDoc compileData( String JavaDoc prefix, TKMarkupNode data, TKHashtable context )
183     {
184         TKXmlMarkup markup = data == null ? null : (TKXmlMarkup) data.markup;
185         if (markup == null) { return null;}
186
187         if (!markup.name.equals (getName())) {
188
189             return null;
190         }
191
192         TKXmlTree tree = (TKXmlTree) data.tree;
193         if (tree == null) { return null;}
194
195         String JavaDoc val = tree.getSingleText ();
196
197         if (val == null) return getDefault();
198         else return val.trim();
199     }
200
201     /**
202      * Checks wether this object and the specified object
203      * may be treated as equal.
204      *
205      * @param object the object to checked for equality.
206      * @return <CODE>true</CODE> if this object and the
207      * specified object may be treated as equal, otherwise
208      * <CODE>false</CODE>.
209      */

210     public boolean equals (Object JavaDoc object)
211     {
212         if (! super.equals(object))
213         {
214             return false;
215         }
216
217         TKTextField field = (TKTextField) object;
218
219         return (this.rows == field.rows) &&
220                (this.cols == field.cols) &&
221                (this.maxSize == field.maxSize);
222     }
223
224     /**
225      * Returns the hash code for this object.
226      *
227      * @return the hash code for this object.
228      */

229     public int hashCode ()
230     {
231         // Implementation for JTest only ;-(
232
return super.hashCode();
233     }
234
235 }
236
Popular Tags