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 16 public class TKTextField 17 extends TKAtomField 18 { 19 21 24 public static final String CLASS_ID = "TEXT"; 25 public static final String COLS_KEY = "COLS"; 26 public static final String ROWS_KEY = "ROWS"; 27 public static final String MAX_SIZE_KEY = "MAX_SIZE"; 28 29 32 public static final int COLUMN_FIELD_SIZE = 3; 33 34 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 name, int rows, int cols, int maxSize ) 48 { 49 this( name, rows, cols, maxSize, null ); 50 } 51 52 public TKTextField( String name, int rows, int cols, int maxSize, String showName ) 53 { 54 initTextField( CLASS_ID, name, rows, cols, maxSize, showName ); 55 } 56 57 public void initTextField( String type, String name, int rows, int cols, int maxSize, String 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 fieldType, Object initData ) 66 throws 67 TKUnregisteredClassException, 68 ClassNotFoundException , 69 InstantiationException , 70 IllegalAccessException 71 { 72 super.init( fieldType, initData ); 73 TKHashtable data = (TKHashtable) initData; 74 rows = Integer.parseInt( (String ) data.get(ROWS_KEY) ); 75 cols = Integer.parseInt( (String ) data.get(COLS_KEY) ); 76 77 String value = (String ) data.get(MAX_SIZE_KEY); 78 this.maxSize = value != null && value.length() > 0 79 ? Integer.parseInt(value) 80 : 0; 81 } 82 83 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 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 value, String 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 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 classId, TKFormDBData db, TKVector otherFields ) 147 throws 148 TKUnregisteredClassException, 149 ClassNotFoundException , 150 InstantiationException , 151 IllegalAccessException 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 compileData (String prefix, TKHashtable data, TKHashtable context) 161 { 162 Object result = super.compileData(prefix, data, context); 163 Object [] args = new Object [1]; 164 args[0] = fieldName; 165 String text = (String ) data.get(prefix+fieldName); 166 167 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 compileData( String 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 val = tree.getSingleText (); 196 197 if (val == null) return getDefault(); 198 else return val.trim(); 199 } 200 201 210 public boolean equals (Object 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 229 public int hashCode () 230 { 231 return super.hashCode(); 233 } 234 235 } 236 | Popular Tags |