Package org.jboss.dashboard.ui.formatters

Source Code of org.jboss.dashboard.ui.formatters.RenderTabbedRegionFormatter

/**
* Copyright (C) 2012 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*       http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.dashboard.ui.formatters;

import org.jboss.dashboard.LocaleManager;
import org.jboss.dashboard.ui.SessionManager;
import org.jboss.dashboard.ui.UIServices;
import org.jboss.dashboard.ui.taglib.formatter.FormatterException;
import org.jboss.dashboard.workspace.LayoutRegionStatus;
import org.jboss.dashboard.workspace.Panel;
import org.jboss.dashboard.security.PanelPermission;
import org.jboss.dashboard.users.UserStatus;
import org.slf4j.Logger;

import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Formatter that renders the tabbed regions.
*/
public class RenderTabbedRegionFormatter extends RegionFormatter {

    @Inject
    private transient Logger log;

    public void service(HttpServletRequest request, HttpServletResponse response) throws FormatterException {
        super.service(request, response);

        if (currentSection == null) {
            log.error("Rendering a region, and current page is null.");
            return;
        }

        if (currentSectionRegion == null) {
            log.error("Cannot find region named " + currentRegion.getId() + " in current page!");
            return;
        }

        if(regionPanels.size() == && !userAdmin || !currentRegion.isTabbedRegion()) return;

        renderRegionStart();
        renderRegionPanelsStart();

        if (regionPanels.size() > 0) {
            renderTabbedRegionHeader();
            for (int i = 0; i < regionPanels.size(); i++) {
                Panel panel = regionPanels.get(i);
                if (!SessionManager.getRegionStatus(currentSection, currentRegion).isSelected(panel))
                    continue;
                PanelPermission editPerm = PanelPermission.newInstance(panel, PanelPermission.ACTION_EDIT);
                boolean canEditPanel = getUserStatus().hasPermission( editPerm);
                renderPanel(panel, canEditPanel);
            }
        }
        renderRegionPanelsEnd();
        renderRegionEnd();
    }

    protected void renderTabbedDropRegion(int index, boolean hasPanels) {
        if (hasPanels) {
            renderFragment("outputStartTab");
            renderDropRegion(index);
            renderFragment("outputEndTab");
        }
    }

    protected void renderTabbedRegionHeader() {
        renderFragment("beforeTabs");

        if (userAdmin)
            renderTabbedDropRegion(0, !regionPanels.isEmpty());
        LayoutRegionStatus regionStatus = SessionManager.getRegionStatus(currentSection, currentRegion);
        if (regionStatus.getSelectedPanel() == null && !regionPanels.isEmpty()) {
            regionStatus.setSelectedPanel((Panel) regionPanels.get(0));
        }
        for (int i = 0; i < regionPanels.size(); i++) {
            Panel panel = regionPanels.get(i);
            setAttribute("tabTitle", LocaleManager.lookup().localize(panel.getTitle()));
            setAttribute("panel", panel);
            setAttribute("dragEnabled", userAdmin);
            setAttribute("url", UIServices.lookup().getUrlMarkupGenerator().getLinkToPanelAction(panel, "_select", true));
            setAttribute("selected", regionStatus.isSelected(panel));
            renderFragment("outputTab");
            if (userAdmin)
                renderTabbedDropRegion(i + 1, !regionPanels.isEmpty());
        }
        renderFragment("afterTabs");
    }
}
TOP

Related Classes of org.jboss.dashboard.ui.formatters.RenderTabbedRegionFormatter

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.