Package org.fenixedu.academic.ui.renderers

Source Code of org.fenixedu.academic.ui.renderers.ListLinkRenderer

/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FenixEdu Academic 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with FenixEdu Academic.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.fenixedu.academic.ui.renderers;

import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.fenixedu.academic.dto.LinkObject;

import pt.ist.fenixWebFramework.renderers.ObjectLinkRenderer;
import pt.ist.fenixWebFramework.renderers.OutputRenderer;
import pt.ist.fenixWebFramework.renderers.components.HtmlBlockContainer;
import pt.ist.fenixWebFramework.renderers.components.HtmlComponent;
import pt.ist.fenixWebFramework.renderers.components.HtmlText;
import pt.ist.fenixWebFramework.renderers.layouts.Layout;
import pt.ist.fenixWebFramework.renderers.utils.RenderKit;

public class ListLinkRenderer extends OutputRenderer {

    private static String DEFAULT_SEPARATOR = " > ";

    private String linkFormat;
    private String separator;

    private boolean contextRelative;
    private boolean moduleRelative;

    public String getSeparator() {
        return hasSeparator() ? this.separator : DEFAULT_SEPARATOR;
    }

    /**
     * Indicates the separator between generated links. If not specified then
     * " > " default sting is used
     *
     * @property
     */
    public void setSeparator(String separator) {
        this.separator = separator;
    }

    private boolean hasSeparator() {
        return !StringUtils.isEmpty(this.separator);
    }

    public boolean isContextRelative() {
        return contextRelative;
    }

    public void setContextRelative(boolean contextRelative) {
        this.contextRelative = contextRelative;
    }

    public String getLinkFormat() {
        return linkFormat;
    }

    public void setLinkFormat(String linkFormat) {
        this.linkFormat = linkFormat;
    }

    public boolean isModuleRelative() {
        return moduleRelative;
    }

    public void setModuleRelative(boolean moduleRelative) {
        this.moduleRelative = moduleRelative;
    }

    @Override
    protected Layout getLayout(Object object, Class type) {
        return new Layout() {

            @Override
            public HtmlComponent createComponent(Object object, Class type) {

                final HtmlBlockContainer blockContainer = new HtmlBlockContainer();

                final List<LinkObject> objects = (List<LinkObject>) object;
                final Iterator<LinkObject> iterator = objects.iterator();

                while (iterator.hasNext()) {
                    final LinkObject each = iterator.next();

                    final ObjectLinkRenderer linkRenderer = new ObjectLinkRenderer();

                    linkRenderer.setText(each.getLabel());
                    linkRenderer.setLinkFormat(getLinkFormat());
                    linkRenderer.setModuleRelative(isModuleRelative());
                    linkRenderer.setContextRelative(isContextRelative());

                    blockContainer.addChild(RenderKit.getInstance().renderUsing(linkRenderer, getContext(), each,
                            LinkObject.class));
                    blockContainer.addChild(iterator.hasNext() ? new HtmlText(getSeparator()) : new HtmlText());
                }
                return blockContainer;
            }
        };
    }
}
TOP

Related Classes of org.fenixedu.academic.ui.renderers.ListLinkRenderer

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.