KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > grid > ed > VEditorFactory


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

14 package org.compiere.grid.ed;
15
16 import javax.swing.*;
17
18 import org.compiere.util.*;
19 import org.compiere.model.*;
20 import org.compiere.swing.*;
21 import org.compiere.plaf.*;
22
23 /**
24  * Factory for VEditor and its Label for single Row display and multi row-editor
25  *
26  * @see VCellRenderer for multi-row display
27  * @author Jorg Janke
28  * @version $Id: VEditorFactory.java,v 1.19 2003/10/27 15:22:02 jjanke Exp $
29  */

30 public class VEditorFactory
31 {
32     /**
33      * Create Editor for MField.
34      * The Name is set to the column name for dynamic display management
35      * @param mField MField
36      * @param tableEditor true if table editor
37      * @return grid editor
38      */

39     public static VEditor getEditor (MField mField, boolean tableEditor)
40     {
41         return getEditor (null, mField, tableEditor);
42     } // getEditor
43

44     /**
45      * Create Editor for MField.
46      * The Name is set to the column name for dynamic display management
47      * @param mTab MTab
48      * @param mField MField
49      * @param tableEditor true if table editor
50      * @return grid editor
51      */

52     public static VEditor getEditor (MTab mTab, MField mField, boolean tableEditor)
53     {
54         if (mField == null)
55             return null;
56
57         VEditor editor = null;
58         int displayType = mField.getDisplayType();
59         String JavaDoc columnName = mField.getColumnName();
60         boolean mandatory = mField.isMandatory(false); // no context check
61
boolean readOnly = mField.isReadOnly();
62         boolean updateable = mField.isUpdateable();
63         int WindowNo = mField.getWindowNo();
64
65         // Not a Field
66
if (mField.isHeading())
67             return null;
68
69         // String (clear/password)
70
if (displayType == DisplayType.String
71             || (tableEditor && (displayType == DisplayType.Text || displayType == DisplayType.TextLong)) )
72         {
73             if (mField.isEncryptedField())
74             {
75                 VPassword vs = new VPassword (columnName, mandatory, readOnly, updateable,
76                     mField.getDisplayLength(), mField.getFieldLength(), mField.getVFormat());
77                 vs.setName (columnName);
78                 vs.setField (mField);
79                 editor = vs;
80             }
81 /**
82             else if (mField.getColumnName().equals("PrinterName"))
83             {
84                 VPrinterName vs = new VPrinterName (columnName, mandatory, readOnly, updateable,
85                     mField.getDisplayLength(), mField.getFieldLength(), mField.getVFormat());
86                 vs.setName (columnName);
87                 vs.setField (mField);
88                 editor = vs;
89             }
90 **/

91             else
92             {
93                 VString vs = new VString (columnName, mandatory, readOnly, updateable,
94                     mField.getDisplayLength(), mField.getFieldLength(), mField.getVFormat());
95                 vs.setName (columnName);
96                 vs.setField (mField);
97                 editor = vs;
98             }
99         }
100
101         // Lookup
102
else if (DisplayType.isLookup(displayType) || displayType == DisplayType.ID)
103         {
104             VLookup vl = new VLookup(columnName, mandatory, readOnly, updateable,
105                 mField.getLookup(), displayType, WindowNo);
106             vl.setName(columnName);
107             vl.setField (mField);
108             editor = vl;
109         }
110
111         // Number
112
else if (DisplayType.isNumeric(displayType))
113         {
114             VNumber vn = new VNumber(columnName, mandatory, readOnly, updateable,
115                 displayType, mField.getHeader());
116             vn.setRange(mField.getValueMin(), mField.getValueMax());
117             vn.setName(columnName);
118             vn.setField (mField);
119             editor = vn;
120         }
121
122         // YesNo
123
else if (displayType == DisplayType.YesNo)
124         {
125             VCheckBox vc = new VCheckBox(columnName, mandatory, readOnly, updateable,
126                 mField.getHeader(), mField.getDescription(), tableEditor);
127             vc.setName(columnName);
128             vc.setField (mField);
129             editor = vc;
130         }
131
132         // Text (single row)
133
else if (displayType == DisplayType.Text)
134         {
135             VText vt = new VText(columnName, mandatory, readOnly, updateable,
136                 mField.getDisplayLength(), mField.getFieldLength());
137             vt.setName(columnName);
138             vt.setField (mField);
139             editor = vt;
140         }
141
142         // Memo (single row)
143
else if (displayType == DisplayType.Memo)
144         {
145             VMemo vt = new VMemo(columnName, mandatory, readOnly, updateable,
146                 mField.getDisplayLength(), mField.getFieldLength());
147             vt.setName(columnName);
148             vt.setField (mField);
149             editor = vt;
150         }
151
152         // Date
153
else if (DisplayType.isDate(displayType))
154         {
155             if (displayType == DisplayType.DateTime)
156                 readOnly = true;
157             VDate vd = new VDate(columnName, mandatory, readOnly, updateable,
158                 displayType, mField.getHeader());
159             vd.setName(columnName);
160             vd.setField (mField);
161             editor = vd;
162         }
163
164         // Location
165
else if (displayType == DisplayType.Location)
166         {
167             VLocation loc = new VLocation (columnName, mandatory, readOnly, updateable,
168                 (MLocation)mField.getLookup());
169             loc.setName(columnName);
170             loc.setField (mField);
171             editor = loc;
172         }
173
174         // Locator
175
else if (displayType == DisplayType.Locator)
176         {
177             VLocator loc = new VLocator (columnName, mandatory, readOnly, updateable,
178                 (MLocatorLookup)mField.getLookup(), WindowNo);
179             loc.setName(columnName);
180             loc.setField (mField);
181             editor = loc;
182         }
183
184         // Account
185
else if (displayType == DisplayType.Account)
186         {
187             VAccount acct = new VAccount (columnName, mandatory, readOnly, updateable,
188                 (MAccount)mField.getLookup(), mField.getHeader());
189             acct.setName(columnName);
190             acct.setField (mField);
191             editor = acct;
192         }
193
194         // Button
195
else if (displayType == DisplayType.Button)
196         {
197             VButton button = new VButton(columnName, mandatory, readOnly, updateable,
198                 mField.getHeader(), mField.getDescription(), mField.getHelp(), mField.getAD_Process_ID());
199             button.setName(columnName);
200             button.setField (mField);
201             editor = button;
202         }
203
204         // Assignment
205
else if (displayType == DisplayType.Assignment)
206         {
207             VAssignment assign = new VAssignment (mandatory, readOnly, updateable);
208             assign.setName(columnName);
209             assign.setField (mField);
210             editor = assign;
211         }
212
213         // Color
214
else if (displayType == DisplayType.Color)
215         {
216             VColor color = new VColor (mTab, mandatory, readOnly);
217             color.setName(columnName);
218             color.setField (mField);
219             editor = color;
220         }
221
222         // Image
223
else if (displayType == DisplayType.Image)
224         {
225             VImage image = new VImage (WindowNo);
226             image.setName(columnName);
227             image.setField (mField);
228             editor = image;
229         }
230
231         // PAttribute
232
else if (displayType == DisplayType.PAttribute)
233         {
234             VPAttribute attrib = new VPAttribute (mandatory, readOnly, updateable, WindowNo,
235                 (MPAttribute)mField.getLookup());
236             attrib.setName(columnName);
237             attrib.setField (mField);
238             editor = attrib;
239         }
240         
241         // Long Text (CLob)
242
else if (displayType == DisplayType.TextLong)
243         {
244             VText vt = new VText(columnName, mandatory, readOnly, updateable,
245                 mField.getDisplayLength(), mField.getFieldLength());
246             vt.setName(columnName);
247             vt.setField (mField);
248             editor = vt;
249         }
250
251         else
252             Log.error("VEditorFactory.getEditor - " + columnName + " - Unknown Type: " + displayType);
253
254         return editor;
255     } // getEditor
256

257     /**
258      * Create Label for MField. (null for YesNo/Button)
259      * The Name is set to the column name for dynamic display management
260      *
261      * @param mField MField
262      * @return Label
263      */

264     public static CLabel getLabel (MField mField)
265     {
266         if (mField == null)
267             return null;
268
269         int displayType = mField.getDisplayType();
270
271         // No Label for FieldOnly, CheckBox, Button
272
if (mField.isFieldOnly()
273                 || displayType == DisplayType.YesNo
274                 || displayType == DisplayType.Button)
275             return null;
276         //
277
CLabel label = new CLabel(mField.getHeader(), mField.getDescription());
278         label.setName(mField.getColumnName());
279     // label.setFont(CompierePLAF.getFont_Label());
280
// label.setForeground(CompierePLAF.getTextColor_Label());
281
return label;
282     } // getLabel
283

284 } // VEditorFactory
285
Popular Tags