1 28 29 package com.opencms.workplace; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.main.CmsException; 33 34 import com.opencms.legacy.CmsLegacyException; 35 import com.opencms.template.A_CmsXmlContent; 36 37 import java.lang.reflect.InvocationTargetException ; 38 import java.lang.reflect.Method ; 39 import java.util.Hashtable ; 40 import java.util.Vector ; 41 42 import org.w3c.dom.Element ; 43 44 55 56 public class CmsSelectBox extends A_CmsWpElement { 57 58 76 77 public Object handleSpecialWorkplaceTag(CmsObject cms, Element n, A_CmsXmlContent doc, Object callingObject, 78 Hashtable parameters, CmsXmlLanguageFile lang) throws CmsException { 79 80 81 Vector values = new Vector (); 82 Vector names = new Vector (); 83 84 85 StringBuffer result = new StringBuffer (); 86 87 String selectClass = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_CLASS); 89 String selectName = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_NAME); 90 String selectMethod = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_METHOD); 91 String selectWidth = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_WIDTH); 92 String selectOnchange = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_ONCHANGE); 93 String selectSize = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_SIZE); 94 String selectDiv = n.getAttribute(CmsWorkplaceDefault.C_SELECTBOX_DIV); 95 if((selectSize == null) || (selectSize.length() == 0)) { 96 selectSize = "1"; 97 } 98 99 CmsXmlWpInputDefFile inputdef = getInputDefinitions(cms); 101 if((selectDiv == null) || (selectDiv.length() == 0)) { 102 103 result.append(inputdef.getSelectBoxStart(selectClass, selectName, selectWidth, selectOnchange, selectSize)); 105 } 106 else { 107 result.append(inputdef.getSelectBoxStartDiv(selectClass, selectName, selectWidth, selectOnchange, selectSize)); 108 } 109 110 Method groupsMethod = null; 112 int selectedOption = 0; 113 try { 114 groupsMethod = callingObject.getClass().getMethod(selectMethod, new Class [] { 115 CmsObject.class, CmsXmlLanguageFile.class, Vector .class, 116 Vector .class, Hashtable .class 117 }); 118 selectedOption = ((Integer )groupsMethod.invoke(callingObject, new Object [] { 119 cms, lang, values, names, parameters 120 })).intValue(); 121 } 122 catch(NoSuchMethodException exc) { 123 124 throwException("Could not find method " + selectMethod + " in calling class " + callingObject.getClass().getName() 126 + " for generating select box content.", CmsLegacyException.C_NOT_FOUND); 127 } 128 catch(InvocationTargetException targetEx) { 129 130 Throwable e = targetEx.getTargetException(); 133 if(!(e instanceof CmsException)) { 134 135 throwException("User method " + selectMethod + " in calling class " + callingObject.getClass().getName() 137 + " throwed an exception. " + e); 138 } 139 else { 140 141 throw (CmsException)e; 144 } 145 } 146 catch(Exception exc2) { 147 throwException("User method " + selectMethod + " in calling class " + callingObject.getClass().getName() 148 + " was found but could not be invoked. " + exc2, CmsLegacyException.C_XML_NO_USER_METHOD); 149 } 150 151 int numValues = values.size(); 154 155 for(int i = 0;i < numValues;i++) { 156 if(i == selectedOption) { 157 result.append(inputdef.getSelectBoxSelOption((String )values.elementAt(i), (String )names.elementAt(i))); 158 } 159 else { 160 result.append(inputdef.getSelectBoxOption((String )values.elementAt(i), (String )names.elementAt(i))); 161 } 162 } 163 164 result.append(inputdef.getSelectBoxEnd()); 166 return result.toString(); 167 } 168 } 169 | Popular Tags |