All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.taglib.portletext.IconOptionsTag Maven / Gradle / Ivy

There is a newer version: 7.4.3.112-ga112
Show newest version
/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library 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 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library 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.
 */

package com.liferay.taglib.portletext;

import com.liferay.petra.reflect.ReflectionUtil;
import com.liferay.portal.kernel.portlet.configuration.icon.PortletConfigurationIcon;
import com.liferay.portal.kernel.portlet.configuration.icon.PortletConfigurationIconTracker;
import com.liferay.portal.kernel.theme.PortletDisplay;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.JavaConstants;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.kernel.util.comparator.PortletConfigurationIconComparator;
import com.liferay.taglib.servlet.PipingServletResponse;
import com.liferay.taglib.ui.IconMenuTag;
import com.liferay.taglib.ui.IconTag;

import java.util.List;

import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;

/**
 * @author Brian Wing Shun Chan
 */
public class IconOptionsTag extends IconTag {

	public List getPortletConfigurationIcons() {
		if (_portletConfigurationIcons != null) {
			return _portletConfigurationIcons;
		}

		_portletConfigurationIcons =
			PortletConfigurationIconTracker.getPortletConfigurationIcons(
				getPortletId(), getPortletRequest(),
				PortletConfigurationIconComparator.INSTANCE);

		return _portletConfigurationIcons;
	}

	public void setDirection(String direction) {
		_direction = direction;
	}

	public void setPortletConfigurationIcons(
		List portletConfigurationIcons) {

		_portletConfigurationIcons = portletConfigurationIcons;
	}

	public void setShowArrow(boolean showArrow) {
		_showArrow = showArrow;
	}

	@Override
	protected void cleanUp() {
		super.cleanUp();

		_direction = "right";
		_portletConfigurationIcons = null;
		_showArrow = true;
	}

	@Override
	protected String getPage() {
		return "/html/taglib/portlet/icon_options/page.jsp";
	}

	protected String getPortletId() {
		ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
			WebKeys.THEME_DISPLAY);

		PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();

		return portletDisplay.getRootPortletId();
	}

	protected PortletRequest getPortletRequest() {
		return (PortletRequest)request.getAttribute(
			JavaConstants.JAVAX_PORTLET_REQUEST);
	}

	protected PortletResponse getPortletResponse() {
		return (PortletResponse)request.getAttribute(
			JavaConstants.JAVAX_PORTLET_RESPONSE);
	}

	@Override
	protected int processEndTag() throws Exception {
		IconMenuTag iconMenuTag = new IconMenuTag();

		iconMenuTag.setCssClass("portlet-options");
		iconMenuTag.setDirection(_direction);
		iconMenuTag.setExtended(false);
		iconMenuTag.setIcon("ellipsis-v");
		iconMenuTag.setMarkupView("lexicon");
		iconMenuTag.setMessage("options");
		iconMenuTag.setShowArrow(false);
		iconMenuTag.setShowWhenSingleIcon(true);
		iconMenuTag.setTriggerCssClass("icon-monospaced");

		iconMenuTag.doBodyTag(
			pageContext, this::_processPortletConfigurationIcons);

		return EVAL_PAGE;
	}

	@Override
	protected void setAttributes(HttpServletRequest request) {
		super.setAttributes(request);

		request.setAttribute(
			"liferay-ui:icon-options:portletConfigurationIcons",
			getPortletConfigurationIcons());
		request.setAttribute("liferay-ui:icon:direction", _direction);
		request.setAttribute(
			"liferay-ui:icon:showArrow", String.valueOf(_showArrow));
	}

	private void _processPortletConfigurationIcons(PageContext pageContext) {
		try {
			HttpServletRequest request =
				(HttpServletRequest)pageContext.getRequest();

			PortletRequest portletRequest =
				(PortletRequest)request.getAttribute(
					JavaConstants.JAVAX_PORTLET_REQUEST);

			PortletResponse portletResponse =
				(PortletResponse)request.getAttribute(
					JavaConstants.JAVAX_PORTLET_RESPONSE);

			for (PortletConfigurationIcon portletConfigurationIcon :
					_portletConfigurationIcons) {

				boolean include = portletConfigurationIcon.include(
					request,
					PipingServletResponse.createPipingServletResponse(
						pageContext));

				if (!include) {
					IconTag iconTag = new IconTag();

					iconTag.setAlt(portletConfigurationIcon.getAlt());
					iconTag.setAriaRole(portletConfigurationIcon.getAriaRole());
					iconTag.setCssClass(portletConfigurationIcon.getCssClass());
					iconTag.setData(portletConfigurationIcon.getData());
					iconTag.setIconCssClass(
						portletConfigurationIcon.getIconCssClass());
					iconTag.setId(portletConfigurationIcon.getId());
					iconTag.setImage(portletConfigurationIcon.getImage());
					iconTag.setImageHover(
						portletConfigurationIcon.getImageHover());
					iconTag.setLabel(portletConfigurationIcon.isLabel());
					iconTag.setLang(portletConfigurationIcon.getLang());
					iconTag.setLinkCssClass(
						portletConfigurationIcon.getLinkCssClass());
					iconTag.setLocalizeMessage(false);
					iconTag.setMessage(
						portletConfigurationIcon.getMessage(portletRequest));
					iconTag.setMethod(portletConfigurationIcon.getMethod());
					iconTag.setOnClick(
						portletConfigurationIcon.getOnClick(
							portletRequest, portletResponse));
					iconTag.setSrc(portletConfigurationIcon.getSrc());
					iconTag.setSrcHover(portletConfigurationIcon.getSrcHover());
					iconTag.setTarget(portletConfigurationIcon.getTarget());
					iconTag.setToolTip(portletConfigurationIcon.isToolTip());
					iconTag.setUrl(
						portletConfigurationIcon.getURL(
							portletRequest, portletResponse));
					iconTag.setUseDialog(
						portletConfigurationIcon.isUseDialog());

					iconTag.doTag(pageContext);
				}
			}
		}
		catch (Exception e) {
			ReflectionUtil.throwException(e);
		}
	}

	private String _direction = "right";
	private List _portletConfigurationIcons;
	private boolean _showArrow = true;

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy