001: package de.webman.form.eventhandler;
002:
003: import com.teamkonzept.international.LanguageManager;
004: import com.teamkonzept.web.*;
005: import com.teamkonzept.webman.*;
006: import com.teamkonzept.webman.db.TKWebmanDBManager;
007: import com.teamkonzept.webman.mainint.*;
008: import com.teamkonzept.webman.mainint.db.*;
009: import com.teamkonzept.webman.mainint.db.queries.*;
010: import com.teamkonzept.webman.mainint.events.*;
011: import com.teamkonzept.lib.*;
012: import com.teamkonzept.field.*;
013: import com.teamkonzept.field.db.*;
014: import com.teamkonzept.db.*;
015: import de.webman.template.xslt.*;
016: import de.webman.form.Form;
017:
018: /**
019: * Visualizes the form structure.
020: *
021: * @author $Author: uli $
022: * @version $Revision: 1.14 $
023: */
024: public class CTShowStructureHandler extends DefaultEventHandler
025: implements ParameterTypes, FrameConstants, DatabaseDefaults {
026:
027: /**
028: * The singleton instance.
029: */
030: private static final CTShowStructureHandler INSTANCE = new CTShowStructureHandler();
031:
032: /**
033: * Avoids outside intstantiation.
034: */
035: private CTShowStructureHandler() {
036: // NOP
037: }
038:
039: /**
040: * Returns the singleton instance.
041: *
042: * @return the singleton instance.
043: */
044: public static CTShowStructureHandler getInstance() {
045: return INSTANCE;
046: }
047:
048: /**
049: * Handles the specified event.
050: *
051: * @param event the event to be handled.
052: * @throws TKException if any error occurred during event handling.
053: */
054: public void handleEvent(TKEvent event) throws TKException {
055: try {
056: // Check event.
057: WebManEvent.checkEvent(event.getRemoteUser(), event
058: .getName(), ContextConstants.CONTENT_TREE);
059:
060: // Get form.
061: Form form = new Form(Integer.valueOf(event.getParameter(
062: PARAMETER, "FORM_ID")));
063:
064: TKBaseField field = CTUtils.getStructure(form
065: .getTypeAsInt());
066: TKFormDBData data = new TKFormDBData(form
067: .getIdentifierAsInt(), form.getTypeAsInt());
068: TKFormDBInterface.Get(data);
069: String classId = ((TKFieldTableData) data.field
070: .firstElement()).field_type;
071: TKBaseField editField = TKFieldRegistry
072: .getFieldFromDB(data);
073: Object editFieldData = editField.toData();
074:
075: if (form.isFormFragment()) {
076: TKFieldSwitchData switchFieldData = new TKFieldSwitchData(
077: classId, classId, editFieldData);
078: TKHashtable groupData = new TKHashtable(1);
079: groupData
080: .put(TKBaseField.SUB_TYPE_KEY, switchFieldData);
081: editFieldData = groupData;
082: }
083:
084: TemplateBasic template = event
085: .getPrepTemplate("ct_structure.wsl");
086: DOMTemplateData dom = template.getDOMData();
087:
088: dom.set("webman-form-type", LanguageManager.getText(
089: "general", CTUtils.getFormTypeDescription(form)));
090: dom.set("webman-form-id", LanguageManager.getText(
091: "general", "ID"));
092: dom.set("webman-form-name", LanguageManager.getText(
093: "general", "NAME"));
094: dom.set("webman-form-element", LanguageManager.getText(
095: "form", "FORM_ELEMENT"));
096: dom.set("webman-structure-view", LanguageManager.getText(
097: "form", "STRUCTURE_VIEW"));
098: dom.set("webman-show-structure", LanguageManager.getText(
099: "form", "SHOW_STRUCTURE"));
100: dom.set("webman-form-is-fragment", String.valueOf(form
101: .isFormFragment()));
102: dom.set("webman-move-back", LanguageManager.getText(
103: "general", "BACK"));
104:
105: field.fillIntoDOM(dom.getDocument(), dom.getRoot(),
106: editFieldData);
107: event.finishTemplate(template);
108: } catch (Throwable e) {
109: // TO DO : Analyze Exception !
110: throw WebmanExceptionHandler.getException(e);
111: }
112: }
113:
114: /**
115: * Checks wether this handler is capable to handle the specified event.
116: *
117: * @param event the event to be handled.
118: * @return <CODE>true</CODE> if this handler is capable to handle the
119: * specified event, otherwise <CODE>false</CODE>.
120: */
121: public boolean isHandler(TKEvent event) {
122: return event.getName().equalsIgnoreCase("CT_SHOW_STRUCTURE");
123: }
124:
125: }
|