Package at.reppeitsolutions.formbuilder.components

Source Code of at.reppeitsolutions.formbuilder.components.FormBuilderInternal

/*
* Copyright (C) 2014 Mathias Reppe <mathias.reppe@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU 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 at.reppeitsolutions.formbuilder.components;

import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemCheckbox;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemConstraint;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemDate;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemDownload;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemFormatArea;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemHeading;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemHorizonalRule;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemImage;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemInput;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemLabel;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemListbox;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemMetaData;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemNumber;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemPagebreak;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemRadio;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemSelect;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemSpace;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemTextarea;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemTime;
import at.reppeitsolutions.formbuilder.components.formbuilderitem.FormBuilderItemUpload;
import at.reppeitsolutions.formbuilder.components.helper.FormBuilderItemFactory;
import at.reppeitsolutions.formbuilder.components.helper.JQueryHelper;
import at.reppeitsolutions.formbuilder.components.helper.MetaDataDescription;
import at.reppeitsolutions.formbuilder.components.html.HtmlDiv;
import at.reppeitsolutions.formbuilder.components.html.HtmlHeading;
import at.reppeitsolutions.formbuilder.components.html.formbuilder.HtmlFormBuilderItem;
import at.reppeitsolutions.formbuilder.components.html.HtmlUnorderedList;
import at.reppeitsolutions.formbuilder.components.html.renderer.formbuilder.FormBuilderInternalRenderer;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.ResourceDependencies;
import javax.faces.application.ResourceDependency;
import javax.faces.component.FacesComponent;
import javax.faces.component.html.HtmlInputHidden;
import at.reppeitsolutions.formbuilder.messages.Messages;
import java.util.Locale;

/**
*
* @author Mathias Reppe <mathias.reppe@gmail.com>
*/
@FacesComponent(createTag = true, namespace = Constants.NAMESPACE, tagName = "formBuilderInternal")
@ResourceDependencies(value = {
    @ResourceDependency(library = "javax.faces", name = "jsf.js"),
    @ResourceDependency(library = "formbuilder", name = "js/jquery-1.9.1.js"),
    @ResourceDependency(library = "formbuilder", name = "js/jquery-ui-1.10.3.custom.js"),
    @ResourceDependency(library = "formbuilder", name = "js/jquery-ui-1.10.3.custom.min.js"),
    @ResourceDependency(library = "formbuilder", name = "js/jquery.timepicker.min.js"),
    @ResourceDependency(library = "formbuilder", name = "css/smoothness/jquery-ui-1.10.3.custom.css"),
    @ResourceDependency(library = "formbuilder", name = "css/smoothness/jquery-ui-1.10.3.custom.min.css"),
    @ResourceDependency(library = "formbuilder", name = "jquery.listAttributes.js"),
    @ResourceDependency(library = "formbuilder", name = "jquery.timepicker.css"),
    @ResourceDependency(library = "formbuilder", name = "formbuilder.js"),
    @ResourceDependency(library = "formbuilder", name = "formbuilder.css")})
public class FormBuilderInternal extends FormBuilderComponentBase {

    public static final String FORMACTIONSTRING = "formActionString";
    public static final String FORMCONTENTSTRING = "formContentString";
    public static final String FORMACTIVETABSTRING = "formActiveTabString";
    private List<HtmlUnorderedList> palettes = new ArrayList<>();

    private enum COMPONENT_CATEGORY {

        INPUT, OUTPUT, FORMAT, WORKFLOW, METADATA
    }

    public FormBuilderInternal() {
        setRendererType(FormBuilderInternalRenderer.RENDERTYPE);
    }

    public void initFormBuilder() {
        formContent = new HtmlUnorderedList();
        formContent.setClassString("connectedSortable sortable2 box-runde-ecken");

        HtmlInputHidden formActionString = new HtmlInputHidden();
        formActionString.setValue("update");
        formActionString.setId(FORMACTIONSTRING);

        HtmlInputHidden formContentString = new HtmlInputHidden();
        formContentString.setValue("");
        formContentString.setId(FORMCONTENTSTRING);

        HtmlInputHidden formActiveTabString = new HtmlInputHidden();
        if(getActiveTab() != null) {
            formActiveTabString.setValue(getActiveTab());
        } else {
            formActiveTabString.setValue("0");
        }
        formActiveTabString.setId(FORMACTIVETABSTRING);

        HtmlInputHidden propDialogHeader = new HtmlInputHidden();
        propDialogHeader.setValue(Messages.getStringJSF("dialog.header"));
        propDialogHeader.setId("prop-dialog-header");

        HtmlDiv holder = new HtmlDiv();
        holder.setId("holder");

        holder.getChildren().add(formActionString);
        holder.getChildren().add(formContentString);
        holder.getChildren().add(formActiveTabString);
        holder.getChildren().add(propDialogHeader);

        HtmlDiv accordion = new HtmlDiv();
        accordion.setId("accordion");

        for (COMPONENT_CATEGORY category : COMPONENT_CATEGORY.values()) {
            if(category != COMPONENT_CATEGORY.METADATA ||
               (category == COMPONENT_CATEGORY.METADATA && getMetaDataDescriptions() != null && getMetaDataObject() != null)) {
                HtmlHeading heading = new HtmlHeading();
                heading.setSize(3);
                heading.setValue(Messages.getStringJSF("menu.palette." + category.name()));
                HtmlDiv paletteDiv = new HtmlDiv();
                HtmlUnorderedList palette = getPalette(category);
                palettes.add(palette);
                paletteDiv.getChildren().add(palette);
                accordion.getChildren().add(heading);
                accordion.getChildren().add(paletteDiv);
            }
        }

        HtmlDiv accordionHolder = new HtmlDiv();
        accordionHolder.setId("accordionHolder");

        HtmlDiv ajaxReload = new HtmlDiv();
        ajaxReload.setId("ajaxReload");
        accordionHolder.getChildren().add(ajaxReload);
        accordionHolder.getChildren().add(accordion);

        holder.getChildren().add(accordionHolder);

        HtmlDiv contentHolder = new HtmlDiv();
        contentHolder.setId("contentHolder");
        contentHolder.getChildren().add(formContent);

        holder.getChildren().add(contentHolder);

        getChildren().add(holder);

        HtmlDiv div = new HtmlDiv();
        div.setStyle("clear:both;");
        getChildren().add(div);
    }

    @Override
    public String getFamily() {
        return FormBuilderInternalRenderer.FAMILY;
    }

    public List<HtmlUnorderedList> getPalettes() {
        return palettes;
    }

    private HtmlUnorderedList getPalette(COMPONENT_CATEGORY category) {
        List<HtmlFormBuilderItem> components = new ArrayList<>();

        if (category == COMPONENT_CATEGORY.OUTPUT) {
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemHeading(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemLabel(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemImage(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemDownload(true)));
        } else if (category == COMPONENT_CATEGORY.INPUT) {
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemInput(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemTextarea(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemNumber(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemDate(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemTime(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemUpload(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemSelect(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemRadio(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemCheckbox(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemListbox(true)));
        } else if (category == COMPONENT_CATEGORY.FORMAT) {
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemHorizonalRule(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemSpace(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemFormatArea(true)));
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemPagebreak(true)));
        } else if (category == COMPONENT_CATEGORY.WORKFLOW) {
            components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemConstraint(true)));
        } else if (category == COMPONENT_CATEGORY.METADATA &&
                getMetaDataObject() != null &&
                getMetaDataDescriptions() != null) {
            for(MetaDataDescription description : getMetaDataDescriptions()) {
                components.add(FormBuilderItemFactory.getUIComponent(new FormBuilderItemMetaData(true, description)));
            }
        }

        HtmlUnorderedList palette = new HtmlUnorderedList();
        palette.setClassString("connectedSortable sortable1");

        JQueryHelper.encasulateForJQuery(palette, components);

        return palette;
    }
   
    public String getActiveTab() {
        return (String) getStateHelper().eval("activeTab");
    }

    public void setActiveTab(String activeTab) {
        getStateHelper().put("activeTab", activeTab);
    }
   
}
TOP

Related Classes of at.reppeitsolutions.formbuilder.components.FormBuilderInternal

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.