DialogFormField.java
- /*
- * Copyright (C) 2003-2008 eXo Platform SAS.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see<http://www.gnu.org/licenses/>.
- */
- package org.exoplatform.ecm.webui.form;
- import java.util.HashMap;
- import org.exoplatform.services.cms.JcrInputProperty;
- import org.exoplatform.webui.form.UIFormInputBase;
- /**
- * Created by The eXo Platform SAS
- * @author : Hoa.Pham
- * hoa.pham@exoplatform.com
- * Jun 23, 2008
- */
- public abstract class DialogFormField {
- protected final String SEPARATOR = "=";
- protected final String JCR_PATH = "jcrPath" + SEPARATOR;
- protected final String EDITABLE = "editable" + SEPARATOR;
- protected final String ONCHANGE = "onchange" + SEPARATOR;
- protected final String OPTIONS = "options" + SEPARATOR;
- protected final String TYPE = "type" + SEPARATOR ;
- protected final String VISIBLE = "visible" + SEPARATOR;
- protected final String NODETYPE = "nodetype" + SEPARATOR;
- protected final String MIXINTYPE = "mixintype" + SEPARATOR;
- protected final String MIMETYPE = "mimetype" + SEPARATOR;
- protected final String VALIDATE = "validate" + SEPARATOR;
- protected final String SELECTOR_ACTION = "selectorAction" + SEPARATOR;
- protected final String SELECTOR_CLASS = "selectorClass" + SEPARATOR;
- protected final String SELECTOR_ICON = "selectorIcon" + SEPARATOR;
- protected final String SELECTOR_PARAMS = "selectorParams" + SEPARATOR;
- protected final String WORKSPACE_FIELD = "workspaceField" + SEPARATOR;
- protected final String SCRIPT = "script" + SEPARATOR;
- protected final String SCRIPT_PARAMS = "scriptParams" + SEPARATOR;
- protected final String MULTI_VALUES = "multiValues" + SEPARATOR;
- protected final String REFERENCE = "reference" + SEPARATOR;
- protected final String REPOSITORY = "repository";
- protected final String DEFAULT_VALUES = "defaultValues" + SEPARATOR ;
- protected final String ROW_SIZE = "rows" + SEPARATOR ;
- protected final String COL_SIZE = "columns" + SEPARATOR ;
- protected final String SIZE = "size" + SEPARATOR ;
- protected final String CHANGE_IN_JCR_PATH_PARAM = "changeInJcrPathParam" + SEPARATOR;
- protected final String FILL_JCR_DATA_OF_FILE = "fillJcrDataOfFile" + SEPARATOR;
- protected String editable;
- protected String defaultValue;
- protected String rowSize;
- protected String colSize;
- protected String jcrPath;
- protected String selectorAction;
- protected String selectorClass;
- protected String workspaceField;
- protected String selectorIcon;
- protected String multiValues;
- protected String reference;
- protected String validateType;
- protected String selectorParams;
- protected String name;
- protected String label;
- protected String options;
- protected String visible;
- protected String nodeType;
- protected String mixinTypes;
- protected String mimeTypes;
- protected String onchange;
- protected String groovyScript;
- protected String[] scriptParams;
- protected String type;
- protected String size;
- protected String changeInJcrPathParam;
- protected String fillJcrDataOfFile = "true";
- public DialogFormField(String name, String label, String[] arguments) {
- HashMap<String,String> parsedArguments = parseArguments(arguments) ;
- this.editable = parsedArguments.get(EDITABLE);
- this.defaultValue = parsedArguments.get(DEFAULT_VALUES);
- this.rowSize = parsedArguments.get(ROW_SIZE);
- this.colSize = parsedArguments.get(COL_SIZE);
- this.jcrPath = parsedArguments.get(JCR_PATH);
- this.selectorAction = parsedArguments.get(SELECTOR_ACTION);
- this.selectorClass = parsedArguments.get(SELECTOR_CLASS);
- this.workspaceField = parsedArguments.get(WORKSPACE_FIELD);
- this.selectorIcon = parsedArguments.get(SELECTOR_ICON);
- this.multiValues = parsedArguments.get(MULTI_VALUES);
- this.reference = parsedArguments.get(REFERENCE);
- this.validateType = parsedArguments.get(VALIDATE);
- this.selectorParams = parsedArguments.get(SELECTOR_PARAMS) ;
- this.options = parsedArguments.get(OPTIONS);
- this.visible = parsedArguments.get(VISIBLE);
- this.nodeType = parsedArguments.get(NODETYPE);
- this.mixinTypes = parsedArguments.get(MIXINTYPE);
- this.mimeTypes = parsedArguments.get(MIMETYPE);
- this.onchange = parsedArguments.get(ONCHANGE);
- this.groovyScript = parsedArguments.get(SCRIPT);
- this.type = parsedArguments.get(TYPE);
- this.size = parsedArguments.get(SIZE);
- this.changeInJcrPathParam = parsedArguments.get(CHANGE_IN_JCR_PATH_PARAM);
- this.fillJcrDataOfFile = parsedArguments.get(FILL_JCR_DATA_OF_FILE);
- String scriptParam = parsedArguments.get(SCRIPT_PARAMS);
- if(scriptParam != null) {
- scriptParams = scriptParam.split(",");
- }
- this.name = name;
- this.label = label;
- }
- @SuppressWarnings("unchecked")
- public abstract <T extends UIFormInputBase> T createUIFormInput() throws Exception;
- public JcrInputProperty createJcrInputProperty (){
- JcrInputProperty inputProperty = new JcrInputProperty();
- inputProperty.setJcrPath(jcrPath);
- return inputProperty;
- }
- public String getEditable() { return editable; }
- public void setEditable(String editable) { this.editable = editable; }
- public String getDefaultValue() { return defaultValue; }
- public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; }
- public String getRowSize() { return rowSize; }
- public void setRowSize(String rowSize) { this.rowSize = rowSize; }
- public String getColSize() { return colSize; }
- public void setColSize(String colSize) { this.colSize = colSize; }
- public String getJcrPath() { return jcrPath; }
- public void setJcrPath(String jcrPath) { this.jcrPath = jcrPath; }
- public String getSelectorAction() { return selectorAction; }
- public void setSelectorAction(String selectorAction) {
- this.selectorAction = selectorAction;
- }
- public String getSelectorClass() { return selectorClass; }
- public void setSelectorClass(String selectorClass) {
- this.selectorClass = selectorClass;
- }
- public String getWorkspaceField() { return workspaceField; }
- public void setWorkspaceField(String workspaceField) {
- this.workspaceField = workspaceField;
- }
- public String getSelectorIcon() { return selectorIcon; }
- public void setSelectorIcon(String selectorIcon) {
- this.selectorIcon = selectorIcon;
- }
- public String getMultiValues() { return multiValues; }
- public void setMultiValues(String multiValues) {
- this.multiValues = multiValues;
- }
- public String getReference() { return reference; }
- public void setReferenceType(String reference) {
- this.reference = reference;
- }
- public String getValidateType() { return validateType; }
- public void setValidateType(String validateType) {
- this.validateType = validateType;
- }
- public String[] getSelectorParams() {
- if(selectorParams != null) {
- return selectorParams.split(",");
- }
- return null;
- }
- public String getSelectorParam() { return selectorParams; }
- public void setSelectorParam(String param) { this.selectorParams = param; }
- public String getName() { return name; }
- public void setName(String name) { this.name = name; }
- public String getLabel() { return label; }
- public void setLabel(String label) {this.label = label;}
- public String getOptions() { return options; }
- public void setOptions(String options) { this.options = options; }
- public String getVisible() { return visible;}
- public void setVisible(String visible) {this.visible = visible; }
- public String getNodeType() { return nodeType; }
- public void setNodeType(String nodeType) { this.nodeType = nodeType; }
- public String getMixinTypes() { return mixinTypes; }
- public void setMixinTypes(String mixinTypes) { this.mixinTypes = mixinTypes; }
-
- public String getMimeTypes() { return mimeTypes; }
- public void setMimeTypes(String mimeTypes) { this.mimeTypes = mimeTypes; }
- public String getOnchange() { return onchange; }
- public void setOnchange(String onchange) { this.onchange = onchange; }
- public String getGroovyScript() { return groovyScript; }
- public void setGroovyScript(String groovyScript) { this.groovyScript = groovyScript; }
- public String[] getScriptParams() { return scriptParams; }
- public void setScriptParams(String[] scriptParams) { this.scriptParams = scriptParams; }
- public String getType() { return type; }
- public void setType(String type) { this.type = type;}
- public String getSize() { return size; }
- public void setSize(String size) { this.size = size;}
-
- public String getChangeInJcrPathParam() { return changeInJcrPathParam; }
- public void setChangeInJcrPathParam(String value) { this.changeInJcrPathParam = value; }
-
- public String getFillJcrDataFile() { return fillJcrDataOfFile; }
- public void setFillJcrDataFile(String value) { fillJcrDataOfFile = value; }
- public boolean isMultiValues() { return "true".equalsIgnoreCase(multiValues); }
- public boolean isReference() { return "true".equalsIgnoreCase(reference); }
- public boolean isEditable() { return !"false".equalsIgnoreCase(editable); }
- public boolean isEditableIfNull() { return "if-null".equalsIgnoreCase(editable); }
- public boolean isVisibleIfNotNull() { return "if-not-null".equals(visible); }
- public boolean isFillJcrDataFile() {
- return "true".equals(fillJcrDataOfFile) || fillJcrDataOfFile == null;
- }
- private HashMap<String,String> parseArguments(String[] arguments) {
- HashMap<String,String> map = new HashMap<String,String>() ;
- for(String argument:arguments) {
- String value = null;
- if(argument.indexOf(SEPARATOR)>0) {
- value = argument.substring(argument.indexOf(SEPARATOR)+1) ;
- }else {
- value = argument;
- map.put(DEFAULT_VALUES,value) ; continue;
- }
- if (argument.startsWith(JCR_PATH)) {
- map.put(JCR_PATH,value); continue;
- } else if (argument.startsWith(EDITABLE)) {
- map.put(EDITABLE,value); continue;
- } else if (argument.startsWith(SELECTOR_ACTION)) {
- map.put(SELECTOR_ACTION,value) ; continue;
- } else if (argument.startsWith(SELECTOR_CLASS)) {
- map.put(SELECTOR_CLASS,value); continue;
- } else if (argument.startsWith(MULTI_VALUES)) {
- map.put(MULTI_VALUES,value); continue;
- } else if (argument.startsWith(SELECTOR_ICON)) {
- map.put(SELECTOR_ICON,value); continue;
- } else if (argument.startsWith(SELECTOR_PARAMS)) {
- map.put(SELECTOR_PARAMS,value); continue;
- }else if (argument.startsWith(WORKSPACE_FIELD)) {
- map.put(WORKSPACE_FIELD,value); continue;
- } else if (argument.startsWith(VALIDATE)) {
- map.put(VALIDATE,value); continue;
- } else if (argument.startsWith(REFERENCE)) {
- map.put(REFERENCE, value); continue;
- } else if(argument.startsWith(DEFAULT_VALUES)) {
- map.put(DEFAULT_VALUES,value); continue;
- } else if(argument.startsWith(ROW_SIZE)) {
- map.put(ROW_SIZE,value); continue;
- } else if(argument.startsWith(COL_SIZE)) {
- map.put(COL_SIZE,value); continue;
- } else if(argument.startsWith(OPTIONS)){
- map.put(OPTIONS,value); continue;
- } else if(argument.startsWith(SCRIPT)) {
- map.put(SCRIPT,value); continue;
- } else if(argument.startsWith(SCRIPT_PARAMS)){
- map.put(SCRIPT_PARAMS,value); continue;
- } else if(argument.startsWith(VISIBLE)){
- map.put(VISIBLE,value); continue;
- } else if(argument.startsWith(TYPE)){
- map.put(TYPE,value) ; continue;
- } else if(argument.startsWith(ONCHANGE)){
- map.put(ONCHANGE,value); continue;
- } else if (argument.startsWith(MIXINTYPE)) {
- map.put(MIXINTYPE, value); continue;
- } else if (argument.startsWith(MIMETYPE)) {
- map.put(MIMETYPE, value); continue;
- } else if(argument.startsWith(NODETYPE)) {
- map.put(NODETYPE, value) ;
- continue ;
- } else if(argument.startsWith(SIZE)) {
- map.put(SIZE, value) ;
- continue ;
- } else if (argument.startsWith(CHANGE_IN_JCR_PATH_PARAM)) {
- map.put(CHANGE_IN_JCR_PATH_PARAM, value);
- continue;
- } else if (argument.startsWith(FILL_JCR_DATA_OF_FILE)) {
- map.put(FILL_JCR_DATA_OF_FILE, value);
- continue;
- } else {
- map.put(DEFAULT_VALUES,argument);
- }
- }
- return map;
- }
- }