package com.idega.presentation.ui.util; import com.idega.core.builder.business.ICBuilderConstants; import com.idega.presentation.Block; import com.idega.presentation.IWContext; import com.idega.presentation.Layer; import com.idega.presentation.ui.HiddenInput; import com.idega.util.StringHandler; import com.idega.util.StringUtil; public abstract class AbstractChooserBlock extends Block { public static final String GLOBAL_HELPER_NAME = "ChooserHelper"; private static final String ABSTRACT_CHOOSER_BLOCK_ACTIVE_ELEMENT_ID_PARAMETER = "$ABSTRACT_CHOOSER_BLOCK_ACTIVE_ELEMENT_ID_PARAMETER$"; private String containerId = ICBuilderConstants.CHOOSER_PRESENTATION_OBJECT_CONTAINER_ID; private String idAttribute = null; private String valueAttribute = null; private String hiddenInputAttribute = null; private String chooserObject = null; private String value = null; private String displayValue = null; private Layer mainContainer = null; public AbstractChooserBlock() { super(); } public AbstractChooserBlock(String idAttribute, String valueAttribute) { this(); this.idAttribute = idAttribute; this.valueAttribute = valueAttribute; } public AbstractChooserBlock(String idAttribute, String valueAttribute, String hiddenInputAttribute) { this(idAttribute, valueAttribute); this.hiddenInputAttribute = hiddenInputAttribute; } public String getChooserObject() { return chooserObject == null ? GLOBAL_HELPER_NAME : chooserObject; } public void setChooserObject(String chooserObject) { this.chooserObject = chooserObject; } @Override public void main(IWContext iwc) { getChooserAttributes(); if (!StringUtil.isEmpty(getHiddenInputAttribute()) && !StringUtil.isEmpty(getValue())) { HiddenInput hiddenInput = new HiddenInput(getHiddenInputAttribute(), getValue()); hiddenInput.setId(getHiddenInputAttribute()); getMainContaier().add(hiddenInput); } } public Layer getMainContaier() { if (mainContainer == null) { mainContainer = new Layer(); mainContainer.setId(getContainerId()); mainContainer.setStyleAttribute("display: block;"); } return mainContainer; } /** * Action to remove selected property * @param idAttribute * @return */ public String getRemoveSelectedPropertyAction(String idAttribute) { return new StringBuffer(getChooserObject()).append(".removeAdvancedProperty('").append(idAttribute).append("');").toString(); } /** * Action to remove selected property * @return */ public String getRemoveSelectedPropertyAction() { return getRemoveSelectedPropertyAction(idAttribute); } /** * Action to choose selected property * @param idAttribute * @param valueAttribute * @return */ public String getChooserObjectAction(String idAttribute, String valueAttribute) { return new StringBuffer(getChooserObject()).append(".chooseObject('").append(ABSTRACT_CHOOSER_BLOCK_ACTIVE_ELEMENT_ID_PARAMETER).append("', '") .append(idAttribute).append("', '").append(valueAttribute).append("', true);").toString(); } /** * Action to choose selected property * @param simpleAction * @return */ public String getChooserObjectAction(boolean simpleAction) { if (simpleAction) { return getChooserObjectAction(idAttribute, valueAttribute); } return getChooserObjectAction(idAttribute, valueAttribute, hiddenInputAttribute); } /** * Action to choose selected property * @param idAttribute * @param valueAttribute * @param hiddenInputAttribute * @return */ public String getChooserObjectAction(String idAttribute, String valueAttribute, String hiddenInputAttribute) { StringBuffer action = new StringBuffer(getChooserObject()).append(".chooseObjectWithHidden('").append(ABSTRACT_CHOOSER_BLOCK_ACTIVE_ELEMENT_ID_PARAMETER) .append("', '").append(idAttribute).append("', '").append(valueAttribute).append("', '").append(hiddenInputAttribute).append("');"); return action.toString(); } /** * Action to set 'viewable' value of selected property * @param valueAttribute * @return */ public String getChooserViewAction(String valueAttribute) { return new StringBuffer(getChooserObject()).append(".setChooserView('").append(ABSTRACT_CHOOSER_BLOCK_ACTIVE_ELEMENT_ID_PARAMETER).append("', '") .append(valueAttribute).append("');").toString(); } /** * Action to set 'viewable' value of selected property * @return */ public String getChooserViewAction() { return getChooserViewAction(valueAttribute); } public String getContainerId() { return containerId; } public void setContainerId(String containerId) { this.containerId = containerId; } public String getHiddenInputAttribute() { return hiddenInputAttribute; } public void setHiddenInputAttribute(String hiddenInputParameter) { this.hiddenInputAttribute = hiddenInputParameter; } public String getIdAttribute() { return idAttribute; } public void setIdAttribute(String idAttribute) { this.idAttribute = idAttribute; } public String getValueAttribute() { return valueAttribute; } public void setValueAttribute(String valueAttribute) { this.valueAttribute = valueAttribute; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getDisplayValue() { return displayValue; } public void setDisplayValue(String displayValue) { this.displayValue = displayValue; } /** * Gets and sets additional attribute(s) * @return */ public abstract boolean getChooserAttributes(); public static final String getNormalizedAction(String action, String elementId) { if (StringUtil.isEmpty(action)) { return null; } String replacement = null; String whatToReplace = ABSTRACT_CHOOSER_BLOCK_ACTIVE_ELEMENT_ID_PARAMETER; if (StringUtil.isEmpty(elementId)) { elementId = "null"; replacement = elementId; whatToReplace = new StringBuilder("'").append(ABSTRACT_CHOOSER_BLOCK_ACTIVE_ELEMENT_ID_PARAMETER).append("'").toString(); } else { replacement = elementId; } action = StringHandler.replace(action, whatToReplace, replacement); return action; } }