KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > module > gui > html > FieldSelector


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.module.gui.html;
11
12 import java.util.*;
13
14 import org.mmbase.util.*;
15 import org.mmbase.module.ParseException;
16 import org.mmbase.module.core.*;
17 import org.mmbase.module.corebuilders.*;
18
19 /**
20  * The FieldSelector class offers the possibility to edit fields of a selected
21  * object.
22  *
23  * @application SCAN
24  * @author Daniel Ockeloen
25  * @author Hans Speijer
26  * @version $Id: FieldSelector.java,v 1.11 2006/01/16 14:47:28 michiel Exp $
27  */

28 public class FieldSelector implements CommandHandlerInterface {
29
30     StateManager stateMngr;
31
32     /**
33      * Constructor to setup reference to the StateManager.
34      */

35     public FieldSelector(StateManager stateMngr) {
36         this.stateMngr=stateMngr;
37     }
38
39     /**
40      * General List pages coming from MMEdit.
41      */

42     public Vector getList(scanpage sp, StringTagger args, StringTokenizer commands) throws ParseException {
43         String JavaDoc token;
44         String JavaDoc userName=HttpAuth.getRemoteUser(sp);
45         EditState state = stateMngr.getEditState(userName);
46
47         token=commands.nextToken();
48         if (token.equals("GETEDITFIELDS")) {
49             return getEditFields(state,args);
50         } else if (token.equals("GETPOSRELATIONS")) {
51             return getPosRelations(state,args);
52         } else if (token.equals("GETTYPES")) {
53             return getTypes(state,args);
54         } else if (token.equals("GETRELTYPES")) {
55             return getRelTypes(state,args);
56         } else if (token.equals("GETDATATYPES")) {
57             return getDataTypes(state,args);
58         } else if (token.equals("GETRELDEFS")) {
59             return getRelDefs(state,args);
60         }
61         return null;
62     }
63
64     Vector getRelTypes(EditState ed,StringTagger args) {
65         Vector results=new Vector();
66         for (Enumeration h=stateMngr.mmBase.getMMObjects();h.hasMoreElements();) {
67             MMObjectBuilder bul=(MMObjectBuilder)h.nextElement();
68             if (bul instanceof InsRel) {
69                 results.addElement(""+bul.getNumber());
70                 results.addElement(bul.getTableName());
71                 results.addElement(bul.description);
72             }
73         }
74         args.setValue("ITEMS","3");
75         return results;
76     }
77
78     Vector getDataTypes(EditState ed,StringTagger args) {
79         Vector results=new Vector();
80         for (Enumeration h=stateMngr.mmBase.getMMObjects();h.hasMoreElements();) {
81             MMObjectBuilder bul=(MMObjectBuilder)h.nextElement();
82             if (!(bul instanceof InsRel)) {
83                 results.addElement(""+bul.getNumber());
84                 results.addElement(bul.getTableName());
85                 results.addElement(bul.description);
86             }
87         }
88         args.setValue("ITEMS","3");
89         return results;
90     }
91
92     Vector getTypes(EditState ed,StringTagger args) {
93         Vector results=new Vector();
94         Enumeration h=stateMngr.mmBase.getTypeDef().search("");
95         results=new Vector();
96         for (;h.hasMoreElements();) {
97             MMObjectNode node=(MMObjectNode)h.nextElement();
98             results.addElement(""+node.getIntValue("number"));
99             results.addElement(node.getStringValue("name"));
100         }
101         args.setValue("ITEMS","2");
102         return results;
103     }
104
105
106     Vector getRelDefs(EditState ed,StringTagger args) {
107         Vector results=new Vector();
108         Enumeration h=stateMngr.mmBase.getRelDef().search("");
109         results=new Vector();
110         for (;h.hasMoreElements();) {
111             MMObjectNode node=(MMObjectNode)h.nextElement();
112             results.addElement(""+node.getIntValue("number"));
113             // *** changed
114
if (node.getIntValue("dir")==2) {
115                 results.addElement(node.getStringValue("sguiname")+"/"+node.getStringValue("dguiname"));
116             } else {
117                 results.addElement(node.getStringValue("dguiname"));
118             }
119         }
120         args.setValue("ITEMS","2");
121         return results;
122     }
123
124     Vector getPosRelations(EditState ed,StringTagger args) {
125         MMObjectBuilder bul=ed.getBuilder();
126         MMObjectNode node=ed.getEditNode();
127         int n1=node.getIntValue("snumber");
128         int n2=node.getIntValue("dnumber");
129         Vector results=new Vector();
130         Enumeration h=stateMngr.mmBase.getTypeRel().getAllowedRelations(bul.getNode(n1),bul.getNode(n2));
131         for (;h.hasMoreElements();) {
132             MMObjectNode n=(MMObjectNode)h.nextElement();
133             int r=n.getIntValue("rnumber");
134             results.addElement(""+r);
135             MMObjectNode node2=stateMngr.mmBase.getRelDef().getNode(r);
136             results.addElement(node2.getGUIIndicator());
137         }
138         args.setValue("ITEMS","2");
139         return results;
140     }
141
142     /**
143      * Builds a list of editable fields for the field editor.
144      * Item1 = Name of the field (GUIName)
145      * Item2 = Type of the field (GUIType)
146      * Item3 = Database name of the field (DBName)
147      * Item4 = Current Search Value of the field
148      */

149     Vector getEditFields(EditState ed,StringTagger args) {
150         Vector results=new Vector();
151         String JavaDoc language=ed.getLanguage();
152         MMObjectBuilder obj=ed.getBuilder();
153         String JavaDoc key,val;
154         Vector tempresults=obj.getEditFields();
155         FieldDefs def;
156         for (Enumeration h=tempresults.elements();h.hasMoreElements();) {
157             def=(FieldDefs)h.nextElement();
158             results.addElement(def.getGUIName(language));
159             results.addElement(def.getGUIType());
160             key=def.getDBName();
161             val=ed.getSearchValue(key);
162             if (val==null) val="";
163             results.addElement(key);
164             results.addElement(val);
165         }
166         args.setValue("ITEMS","4");
167         return results;
168     }
169
170     /**
171      * Replace/Trigger commands
172      */

173     public String JavaDoc replace(scanpage sp, StringTokenizer cmds) {
174         return "Command not defined (FieldSelector)";
175     }
176
177     /**
178      * The hook that passes all form related pages to the correct handler
179      */

180     public boolean process(scanpage sp, StringTokenizer command, Hashtable cmds, Hashtable vars) {
181         return false;
182     }
183
184 }
185
Popular Tags