Package org.jboss.dashboard.ui.formatters

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

/**
* 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.ui.SessionManager;
import org.jboss.dashboard.ui.HTTPSettings;
import org.jboss.dashboard.ui.UIServices;
import org.jboss.dashboard.ui.components.URLMarkupGenerator;
import org.jboss.dashboard.ui.taglib.formatter.Formatter;
import org.jboss.dashboard.ui.taglib.formatter.FormatterException;
import org.jboss.dashboard.security.PanelPermission;
import org.jboss.dashboard.users.UserStatus;
import org.jboss.dashboard.workspace.Panel;
import org.jboss.dashboard.workspace.PanelSession;
import org.jboss.dashboard.workspace.SectionRegion;

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

/**
* This class extends Formatter to provide support for the rendering of a panel header.
*/
public class RenderPanelHeaderFormatter extends Formatter {

    private Panel panel = null;

    public void service(HttpServletRequest request, HttpServletResponse response) throws FormatterException {
        panel = (Panel) getParameter("panel");
        Boolean administratorMode = (Boolean) getParameter("administratorMode");
        if (panel != null) {
            boolean tabbedMode = panel.getRegion().isTabbedRegion();
            if (panel != null && panel.getRegion() != null) {
                if (tabbedMode)
                    serviceTabbedHeader(administratorMode != null && administratorMode.booleanValue());
                else
                    servicePanelHeader(administratorMode != null && administratorMode.booleanValue());
            }
        }
    }

    protected void servicePanelHeader(boolean administratorMode) {
        setAttribute("panelId", panel.getPanelId());
        setAttribute("panel", panel);
        renderFragment("outputStart");
        setAttribute("panelTitle", panel.getTitle());
        setAttribute("panelId", panel.getPanelId());
        setAttribute("panel", panel);
        renderFragment(administratorMode ? "panelTitle (Edit Mode)" : "panelTitle (Normal)");
        renderButtons(administratorMode);
        renderFragment("outputEnd");
    }

    protected void renderButtons(boolean administratorMode) {
        UserStatus userStatus = UserStatus.lookup();
        PanelSession status = SessionManager.getPanelSession(panel);
        SectionRegion sectionRegion = panel.getSection().getSectionRegion(panel.getRegion().getId());
        PanelPermission editPanelPerm = PanelPermission.newInstance(panel, PanelPermission.ACTION_EDIT);
        PanelPermission minPanelPerm = PanelPermission.newInstance(panel, PanelPermission.ACTION_MINIMIZE);
        PanelPermission maxPanelPerm = PanelPermission.newInstance(panel, PanelPermission.ACTION_MAXIMIZE);
        boolean userCanEditPanel = userStatus.hasPermission(editPanelPerm);
        boolean userCanMinimizePanel = userStatus.hasPermission(minPanelPerm);
        boolean userCanMaximizePanel = userStatus.hasPermission(maxPanelPerm);
        boolean columnRegion = panel.getRegion().isColumnRegion();
        setAttribute("panelId", panel.getPanelId());
        setAttribute("panel", panel);
        renderFragment("beforePanelButtons");
        //Invalidate cache button.
        if (panel.getCacheTime() > 0) {
            renderButtonOutput("ui.panel.refresh", getPanelActionLink("_invalidate-cache"), "REFRESH", "R");
        }
        //Arrow buttons.
        if (administratorMode && !status.isMaximized()) {
            if (!sectionRegion.isFirstPanelInRegion(panel) && !sectionRegion.isOnlyPanelInRegion(panel)) {
                renderButtonOutput("ui.panel.moveBack", getPanelActionLink("_move-back"), columnRegion ? "UP" : "LEFT", columnRegion ? "^" : "<");
            }
            if (!sectionRegion.isLastPanelInRegion(panel) && !sectionRegion.isOnlyPanelInRegion(panel)) {
                renderButtonOutput("ui.panel.moveForward", getPanelActionLink("_move-forward"), columnRegion ? "DOWN" : "RIGHT", columnRegion ? "v" : ">");
            }
        }
        //Edit button.
        if (!status.isEditMode() && panel.supportsEditMode() && userCanEditPanel) {
            renderButtonOutput("ui.panel.editMode", getPanelActionLink("_edit-mode"), "EDIT_MODE", "L");
        }

        //Show mode.
        if (!status.isShowMode()) {
            renderButtonOutput("ui.panel.showMode", getPanelActionLink("_show-mode"), "SHOW", "S");
        }
        //Properties mode
        if (administratorMode) {
            renderButtonOutput("ui.panel.editProperties", "#print here link to treeshortcuthandler", "PROPERTIES", "P");
        }
        //Minimize button
        if (!status.isMinimized() && (panel.isMinimizable() || administratorMode) && userCanMinimizePanel) {
            renderButtonOutput("ui.panel.minimize", getPanelActionLink("_minimize"), "MINIMIZE", "_");
        }
        //Restore button
        if (status.isMinimized() || status.isMaximized() || status.isMaximizedInRegion()) {
            renderButtonOutput("ui.panel.restore", getPanelActionLink("_restore"), "RESTORE", "oO");
        }
        //Maximize button
        if (!status.isMaximized() && (panel.isMaximizable() || administratorMode) && userCanMaximizePanel) {
            if (status.isMaximizedInRegion())
                renderButtonOutput("ui.panel.maximize", getPanelActionLink("_maximize"), "MAXIMIZE", "O");
            else
                renderButtonOutput("ui.panel.maximizeInRegion", getPanelActionLink("_maximize-in-region"), "MAXIMIZE", "O");
        }
        //Close button
        if (administratorMode) {
            renderButtonOutput("ui.panel.close", getPanelActionLink("_close"), "CLOSE", "X");
        }
        renderFragment("afterPanelButtons");
    }

    protected void serviceTabbedHeader(boolean administratorMode) {
        setAttribute("panelId", panel.getPanelId());
        setAttribute("panel", panel);
        renderFragment("outputStart");
        Panel[] allPanels = panel.getSection().getSectionRegion(panel.getRegion().getId()).getPanels();
        for (int i = 0; i < allPanels.length; i++) {
            Panel currentPanel = allPanels[i];
            setAttribute("panelTitle", currentPanel.getTitle());
            setAttribute("panelId", currentPanel.getPanelId());
            setAttribute("panel", currentPanel);
            if (SessionManager.getRegionStatus(panel.getSection(), panel.getRegion()).isSelected(currentPanel))
                renderFragment(administratorMode ? "panelTitle (Tabbed Edit Mode Selected)" : "panelTitle (Tabbed Normal Selected)");
            else
                renderFragment(administratorMode ? "panelTitle (Tabbed Edit Mode)" : "panelTitle (Tabbed Normal)");
        }
        renderButtons(administratorMode);
        renderFragment("outputEnd");
    }

    protected void renderButtonOutput(String buttonMessage, String link, String imageId, String imageAlt) {
        setAttribute("buttonMessage", buttonMessage);
        setAttribute("panelId", panel.getPanelId());
        setAttribute("link", link);
        setAttribute("imageId", imageId);
        setAttribute("imageAlternative", imageAlt);
        setAttribute("panelUID", HTTPSettings.AJAX_AREA_PREFFIX + "content_panel_" + panel.getPanelId());
        renderFragment("panelButton");
    }

    protected String getPanelActionLink(String action) {
        URLMarkupGenerator markupGenerator = UIServices.lookup().getUrlMarkupGenerator();
        return markupGenerator.getLinkToPanelAction(panel, action, false);
    }

}
TOP

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

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.