1 31 32 package org.opencms.widgets; 33 34 import org.opencms.file.CmsObject; 35 36 import java.util.Iterator ; 37 import java.util.List ; 38 import java.util.Map ; 39 40 59 public class CmsMultiSelectWidget extends A_CmsSelectWidget { 60 61 62 private boolean m_asCheckBoxes; 63 64 67 public CmsMultiSelectWidget() { 68 69 super(); 71 } 72 73 82 public CmsMultiSelectWidget(List configuration) { 83 84 this(configuration, false); 85 } 86 87 97 public CmsMultiSelectWidget(List configuration, boolean asCheckboxes) { 98 99 super(configuration); 100 m_asCheckBoxes = asCheckboxes; 101 } 102 103 108 public CmsMultiSelectWidget(String configuration) { 109 110 super(configuration); 111 } 112 113 116 public void setEditorValue( 117 CmsObject cms, 118 Map formParameters, 119 I_CmsWidgetDialog widgetDialog, 120 I_CmsWidgetParameter param) { 121 122 String [] values = (String [])formParameters.get(param.getId()); 123 if ((values != null) && (values.length > 0)) { 124 StringBuffer value = new StringBuffer (128); 125 for (int i = 0; i < values.length; i++) { 126 if (i > 0) { 127 value.append(','); 128 } 129 value.append(values[i]); 130 } 131 param.setStringValue(cms, value.toString()); 133 } 134 } 135 136 139 public String getDialogWidget(CmsObject cms, I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) { 140 141 String id = param.getId(); 142 StringBuffer result = new StringBuffer (16); 143 144 List options = parseSelectOptions(cms, widgetDialog, param); 145 result.append("<td class=\"xmlTd\">"); 146 if (!m_asCheckBoxes) { 147 result.append("<select multiple size='"); 148 result.append(options.size()); 149 result.append("' class=\"xmlInput"); 150 if (param.hasError()) { 151 result.append(" xmlInputError"); 152 } 153 result.append("\" name=\""); 154 result.append(id); 155 result.append("\" id=\""); 156 result.append(id); 157 result.append("\">"); 158 } 159 160 List selected = getSelectedValues(cms, param); 162 Iterator i = options.iterator(); 163 while (i.hasNext()) { 164 CmsSelectWidgetOption option = (CmsSelectWidgetOption)i.next(); 165 if (!m_asCheckBoxes) { 167 result.append("<option value=\""); 168 result.append(option.getValue()); 169 result.append("\""); 170 if (selected.contains(option.getValue())) { 171 result.append(" selected=\"selected\""); 172 } 173 result.append(">"); 174 result.append(option.getOption()); 175 result.append("</option>"); 176 } else { 177 result.append("<input type='checkbox' name='"); 178 result.append(id); 179 result.append("' value='"); 180 result.append(option.getValue()); 181 result.append("'"); 182 if (selected.contains(option.getValue())) { 183 result.append(" checked"); 184 } 185 result.append(">"); 186 result.append(option.getOption()); 187 result.append("<br>"); 188 } 189 } 190 if (!m_asCheckBoxes) { 191 result.append("</select>"); 192 } 193 result.append("</td>"); 194 195 return result.toString(); 196 } 197 198 201 public I_CmsWidget newInstance() { 202 203 return new CmsMultiSelectWidget(getConfiguration()); 204 } 205 } | Popular Tags |