Search in sources :

Example 1 with UIOutput

use of javax.faces.component.UIOutput in project acs-community-packaging by Alfresco.

the class UISearchCustomProperties method generateControl.

/**
 * Generates an appropriate control for the given property
 *
 * @param context       JSF context
 * @param propDef       The definition of the property to create the control for
 * @param displayLabel  Display label for the component
 * @param beanBinding   Combined name of the value bound bean and variable used for value binding expression
 *
 * @return UIComponent
 */
@SuppressWarnings("unchecked")
private UIComponent generateControl(FacesContext context, PropertyDefinition propDef, String displayLabel, String beanBinding) {
    UIComponent control = null;
    DataTypeDefinition dataTypeDef = propDef.getDataType();
    QName typeName = dataTypeDef.getName();
    javax.faces.application.Application facesApp = context.getApplication();
    // create default value binding to a Map of values with a defined name
    ValueBinding vb = facesApp.createValueBinding("#{" + beanBinding + "[\"" + propDef.getName().toString() + "\"]}");
    // generate the appropriate input field
    if (typeName.equals(DataTypeDefinition.BOOLEAN)) {
        control = (UISelectBoolean) facesApp.createComponent(ComponentConstants.JAVAX_FACES_SELECT_BOOLEAN);
        control.setRendererType(ComponentConstants.JAVAX_FACES_CHECKBOX);
        control.setValueBinding(VALUE, vb);
    } else if (typeName.equals(DataTypeDefinition.CATEGORY)) {
        control = (UICategorySelector) facesApp.createComponent(RepoConstants.ALFRESCO_FACES_TAG_SELECTOR);
        control.setValueBinding(VALUE, vb);
    } else if (typeName.equals(DataTypeDefinition.DATETIME) || typeName.equals(DataTypeDefinition.DATE)) {
        Boolean showTime = Boolean.valueOf(typeName.equals(DataTypeDefinition.DATETIME));
        // create value bindings for the start year and year count attributes
        ValueBinding startYearBind = null;
        ValueBinding yearCountBind = null;
        if (showTime) {
            startYearBind = facesApp.createValueBinding("#{DateTimePickerGenerator.startYear}");
            yearCountBind = facesApp.createValueBinding("#{DateTimePickerGenerator.yearCount}");
        } else {
            startYearBind = facesApp.createValueBinding("#{DatePickerGenerator.startYear}");
            yearCountBind = facesApp.createValueBinding("#{DatePickerGenerator.yearCount}");
        }
        // Need to output component for From and To date selectors and labels
        // also neeed checkbox for enable/disable state - requires an outer wrapper component
        control = (UIPanel) facesApp.createComponent(ComponentConstants.JAVAX_FACES_PANEL);
        control.setRendererType(ComponentConstants.JAVAX_FACES_GRID);
        control.getAttributes().put("columns", Integer.valueOf(2));
        // enabled state checkbox
        UIInput checkbox = (UIInput) facesApp.createComponent(ComponentConstants.JAVAX_FACES_SELECT_BOOLEAN);
        checkbox.setRendererType(ComponentConstants.JAVAX_FACES_CHECKBOX);
        checkbox.setId(context.getViewRoot().createUniqueId());
        ValueBinding vbCheckbox = facesApp.createValueBinding("#{" + beanBinding + "[\"" + propDef.getName().toString() + "\"]}");
        checkbox.setValueBinding(VALUE, vbCheckbox);
        control.getChildren().add(checkbox);
        // main display label
        UIOutput label = (UIOutput) context.getApplication().createComponent(ComponentConstants.JAVAX_FACES_OUTPUT);
        label.setId(context.getViewRoot().createUniqueId());
        label.setRendererType(ComponentConstants.JAVAX_FACES_TEXT);
        label.setValue(displayLabel + ":");
        control.getChildren().add(label);
        // from date label
        UIOutput labelFromDate = (UIOutput) context.getApplication().createComponent(ComponentConstants.JAVAX_FACES_OUTPUT);
        labelFromDate.setId(context.getViewRoot().createUniqueId());
        labelFromDate.setRendererType(ComponentConstants.JAVAX_FACES_TEXT);
        labelFromDate.setValue(Application.getMessage(context, MSG_FROM));
        control.getChildren().add(labelFromDate);
        // from date control
        UIInput inputFromDate = (UIInput) facesApp.createComponent(ComponentConstants.JAVAX_FACES_INPUT);
        inputFromDate.setId(context.getViewRoot().createUniqueId());
        inputFromDate.setRendererType(RepoConstants.ALFRESCO_FACES_DATE_PICKER_RENDERER);
        inputFromDate.setValueBinding("startYear", startYearBind);
        inputFromDate.setValueBinding("yearCount", yearCountBind);
        inputFromDate.getAttributes().put("initialiseIfNull", Boolean.TRUE);
        inputFromDate.getAttributes().put("showTime", showTime);
        ValueBinding vbFromDate = facesApp.createValueBinding("#{" + beanBinding + "[\"" + PREFIX_DATE_FROM + propDef.getName().toString() + "\"]}");
        inputFromDate.setValueBinding(VALUE, vbFromDate);
        control.getChildren().add(inputFromDate);
        // to date label
        UIOutput labelToDate = (UIOutput) context.getApplication().createComponent(ComponentConstants.JAVAX_FACES_OUTPUT);
        labelToDate.setId(context.getViewRoot().createUniqueId());
        labelToDate.setRendererType(ComponentConstants.JAVAX_FACES_TEXT);
        labelToDate.setValue(Application.getMessage(context, MSG_TO));
        control.getChildren().add(labelToDate);
        // to date control
        UIInput inputToDate = (UIInput) facesApp.createComponent(ComponentConstants.JAVAX_FACES_INPUT);
        inputToDate.setId(context.getViewRoot().createUniqueId());
        inputToDate.setRendererType(RepoConstants.ALFRESCO_FACES_DATE_PICKER_RENDERER);
        inputToDate.setValueBinding("startYear", startYearBind);
        inputToDate.setValueBinding("yearCount", yearCountBind);
        inputToDate.getAttributes().put("initialiseIfNull", Boolean.TRUE);
        inputToDate.getAttributes().put("showTime", showTime);
        ValueBinding vbToDate = facesApp.createValueBinding("#{" + beanBinding + "[\"" + PREFIX_DATE_TO + propDef.getName().toString() + "\"]}");
        inputToDate.setValueBinding(VALUE, vbToDate);
        control.getChildren().add(inputToDate);
    } else if (typeName.equals(DataTypeDefinition.NODE_REF)) {
        control = (UISpaceSelector) facesApp.createComponent(RepoConstants.ALFRESCO_FACES_SPACE_SELECTOR);
        control.setValueBinding(VALUE, vb);
    } else {
        ListOfValuesConstraint constraint = getListOfValuesConstraint(propDef);
        if (constraint != null && propDef != null && propDef.isProtected() == false) {
            control = (UISelectOne) facesApp.createComponent(UISelectOne.COMPONENT_TYPE);
            UISelectItems itemsComponent = (UISelectItems) facesApp.createComponent(ComponentConstants.JAVAX_FACES_SELECT_ITEMS);
            List<SelectItem> items = new ArrayList<SelectItem>();
            List<String> values = constraint.getAllowedValues();
            for (String value : values) {
                items.add(new SelectItem(value, value));
            }
            itemsComponent.setValue(items);
            // add the items as a child component
            control.getChildren().add(itemsComponent);
            ValueBinding vbItemList = facesApp.createValueBinding("#{" + beanBinding + "[\"" + PREFIX_LOV_ITEM + propDef.getName().toString() + "\"]}");
            control.setValueBinding(VALUE, vbItemList);
        } else {
            // any other type is represented as an input text field
            control = (UIInput) facesApp.createComponent(ComponentConstants.JAVAX_FACES_INPUT);
            control.setRendererType(ComponentConstants.JAVAX_FACES_TEXT);
            control.setValueBinding("size", facesApp.createValueBinding("#{TextFieldGenerator.size}"));
            control.setValueBinding("maxlength", facesApp.createValueBinding("#{TextFieldGenerator.maxLength}"));
            control.setValueBinding(VALUE, vb);
        }
    }
    // set up the common aspects of the control
    control.setId(context.getViewRoot().createUniqueId());
    return control;
}
Also used : UISelectItems(javax.faces.component.UISelectItems) QName(org.alfresco.service.namespace.QName) ValueBinding(javax.faces.el.ValueBinding) UIComponent(javax.faces.component.UIComponent) DataTypeDefinition(org.alfresco.service.cmr.dictionary.DataTypeDefinition) UIInput(javax.faces.component.UIInput) UIOutput(javax.faces.component.UIOutput) SelectItem(javax.faces.model.SelectItem) ListOfValuesConstraint(org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint) ArrayList(java.util.ArrayList) List(java.util.List) UISelectBoolean(javax.faces.component.UISelectBoolean) UISelectOne(javax.faces.component.UISelectOne)

Example 2 with UIOutput

use of javax.faces.component.UIOutput in project acs-community-packaging by Alfresco.

the class BaseComponentGenerator method createAndSetConverter.

/**
 * Creates the converter with the given id and adds it to the component.
 *
 * @param context FacesContext
 * @param converterId The name of the converter to create
 * @param component The component to add the converter to
 */
protected void createAndSetConverter(FacesContext context, String converterId, UIComponent component) {
    if (converterId != null && component instanceof UIOutput) {
        try {
            Converter conv = context.getApplication().createConverter(converterId);
            ((UIOutput) component).setConverter(conv);
        } catch (NullPointerException npe) {
            // workaround a NPE bug in MyFaces
            logger.warn("Converter " + converterId + " could not be applied");
        } catch (FacesException fe) {
            logger.warn("Converter " + converterId + " could not be applied");
        }
    }
}
Also used : UIOutput(javax.faces.component.UIOutput) Converter(javax.faces.convert.Converter) FacesException(javax.faces.FacesException)

Example 3 with UIOutput

use of javax.faces.component.UIOutput in project acs-community-packaging by Alfresco.

the class LinkGenerator method setupProperty.

/**
 * @see org.alfresco.web.bean.generator.BaseComponentGenerator#setupProperty(javax.faces.context.FacesContext, org.alfresco.web.ui.repo.component.property.UIPropertySheet, org.alfresco.web.ui.repo.component.property.PropertySheetItem, org.alfresco.service.cmr.dictionary.PropertyDefinition, javax.faces.component.UIComponent)
 */
@SuppressWarnings("unchecked")
@Override
protected void setupProperty(FacesContext context, UIPropertySheet propertySheet, PropertySheetItem item, PropertyDefinition propertyDef, UIComponent component) {
    super.setupProperty(context, propertySheet, item, propertyDef, component);
    if (component.getRendererType().equals("javax.faces.Link") == true) {
        // Add child text component
        UIOutput output = createOutputTextComponent(context, "linklabel_" + component.getId());
        output.setValueBinding("value", component.getValueBinding("value"));
        component.getChildren().add(output);
    }
}
Also used : UIOutput(javax.faces.component.UIOutput)

Example 4 with UIOutput

use of javax.faces.component.UIOutput in project acs-community-packaging by Alfresco.

the class UIDialogButtons method addSpacingRow.

/**
 * Creates an output text component to represent a spacing row.
 *
 * @param context Faces context
 */
@SuppressWarnings("unchecked")
protected void addSpacingRow(FacesContext context) {
    UIOutput spacingRow = (UIOutput) context.getApplication().createComponent(ComponentConstants.JAVAX_FACES_OUTPUT);
    spacingRow.setRendererType(ComponentConstants.JAVAX_FACES_TEXT);
    FacesHelper.setupComponentId(context, spacingRow, null);
    spacingRow.setValue("<div class=\"wizardButtonSpacing\" />");
    spacingRow.getAttributes().put("escape", Boolean.FALSE);
    this.getChildren().add(spacingRow);
}
Also used : UIOutput(javax.faces.component.UIOutput)

Example 5 with UIOutput

use of javax.faces.component.UIOutput in project acs-community-packaging by Alfresco.

the class UISearchCustomProperties method generateLabel.

/**
 * Generates a JSF OutputText component/renderer
 *
 * @param context JSF context
 * @param displayLabel The display label text
 *
 * @return UIComponent
 */
private UIComponent generateLabel(FacesContext context, String displayLabel) {
    UIOutput label = (UIOutput) context.getApplication().createComponent(ComponentConstants.JAVAX_FACES_OUTPUT);
    label.setId(context.getViewRoot().createUniqueId());
    label.setRendererType(ComponentConstants.JAVAX_FACES_TEXT);
    label.setValue(displayLabel);
    return label;
}
Also used : UIOutput(javax.faces.component.UIOutput)

Aggregations

UIOutput (javax.faces.component.UIOutput)6 ArrayList (java.util.ArrayList)1 List (java.util.List)1 FacesException (javax.faces.FacesException)1 UIComponent (javax.faces.component.UIComponent)1 UIInput (javax.faces.component.UIInput)1 UISelectBoolean (javax.faces.component.UISelectBoolean)1 UISelectItems (javax.faces.component.UISelectItems)1 UISelectOne (javax.faces.component.UISelectOne)1 Converter (javax.faces.convert.Converter)1 ValueBinding (javax.faces.el.ValueBinding)1 SelectItem (javax.faces.model.SelectItem)1 ListOfValuesConstraint (org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint)1 DataTypeDefinition (org.alfresco.service.cmr.dictionary.DataTypeDefinition)1 QName (org.alfresco.service.namespace.QName)1