Package org.jboss.dashboard.ui.panel.help

Source Code of org.jboss.dashboard.ui.panel.help.RenderPanelHelpFormatter

/**
* 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.panel.help;

import org.jboss.dashboard.ui.panel.PanelProvider;
import org.jboss.dashboard.ui.taglib.formatter.Formatter;
import org.jboss.dashboard.ui.taglib.formatter.FormatterException;
import org.jboss.dashboard.workspace.Panel;
import org.jboss.dashboard.workspace.PanelInstance;
import org.jboss.dashboard.workspace.PanelInstance;
import org.jboss.dashboard.workspace.PanelProviderParameter;
import org.jboss.dashboard.security.PanelPermission;
import org.jboss.dashboard.security.WorkspacePermission;
import org.jboss.dashboard.ui.utils.forms.RenderUtils;
import org.jboss.dashboard.users.UserStatus;

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

public class RenderPanelHelpFormatter extends Formatter {

    /**
     * Perform the required logic for this Formatter. Inside, the methods
     * setAttribute and renderFragment are intended to be used to generate the
     * output and set parameters for this output. Method getParameter is
     * intended to retrieve input parameters by name. <p/> Exceptions are to be
     * catched inside the method, and not to be thrown, normally, formatters
     * could use a error fragment to be displayed when an error happens in
     * displaying. But if the error is unexpected, it can be wrapped inside a
     * FormatterException.
     *
     * @param request  user request
     * @param response response to the user
     * @throws org.jboss.dashboard.ui.taglib.formatter.FormatterException
     *          in case of an unexpected exception.
     */
    public void service(HttpServletRequest request, HttpServletResponse response) throws FormatterException {
        Panel panel = getPanel();
        UserStatus userStatus = UserStatus.lookup();
        boolean canEdit = userStatus.hasPermission(PanelPermission.newInstance(getPanel(), PanelPermission.ACTION_EDIT));
        boolean canViewParams = userStatus.hasPermission(WorkspacePermission.newInstance(getPanel().getWorkspace(), WorkspacePermission.ACTION_ADMIN));
        renderHelp(panel.getInstance(), canEdit, canViewParams);
    }

    public void renderHelp(PanelInstance instance, boolean canEdit, boolean canViewParams) {
        PanelProvider provider = instance.getProvider();
        PanelHelp help = instance.getProvider().getPanelHelp();
        if (help == null) {
            setAttribute("panelName", provider.getResource(provider.getDescription(), getLocale()));
            renderFragment("empty");
        } else {
            setAttribute("panelName", provider.getResource(provider.getDescription(), getLocale()));
            renderFragment("outputStart");
            String usage = help.getUsage(getLocale());
            if (usage != null) {
                setAttribute("message", usage);
                renderFragment("outputUsage");
            }
            if (canEdit) {
                String helpUsage = help.getEditModeUsage(getLocale());
                if (helpUsage != null) {
                    setAttribute("message", helpUsage);
                    renderFragment("outputUsage");
                }
            }
            if (canViewParams) {
                String[] paramNames = help.getParameterNames();
                PanelProviderParameter[] params = instance.getCustomParameters();
                if (paramNames != null && paramNames.length > 0) {
                    renderFragment("paramsStart");
                    for (int i = 0; i < paramNames.length; i++) {
                        String paramId = paramNames[i];
                        for (int j = 0; j < params.length; j++) {
                            PanelProviderParameter param = params[j];
                            if (param.getId().equals(paramId)) {
                                setAttribute("paramName", param.getDescription(getLocale()));
                                setAttribute("paramValue", RenderUtils.noNull(help.getParameterUsage(paramId, getLocale())));
                                renderFragment("outputParam");
                                break;
                            }
                        }
                    }
                    renderFragment("paramsEnd");
                }
            }
            /*
             * About is no help mode, but ABOUT mode PanelAbout about =
             * help.getAbout(); if(about != null){ renderFragment("aboutStart");
             * String[] props = about.getProperties(); for (int i = 0; i <
             * props.length; i++) { String prop = props[i]; String val =
             * about.getProperty(prop); setAttribute("name",prop);
             * setAttribute("value",val); renderFragment("about"); }
             * renderFragment("aboutEnd"); }
             */
            renderFragment("outputEnd");
        }
    }
}
TOP

Related Classes of org.jboss.dashboard.ui.panel.help.RenderPanelHelpFormatter

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.