/**
* 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.portal.kernel.dao.search;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.HtmlUtil;
import com.liferay.portal.kernel.util.LocaleThreadLocal;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.util.WebKeys;
import java.util.Locale;
import java.util.Map;
import javax.portlet.PortletResponse;
import javax.servlet.http.HttpServletRequest;
/**
* @author Brian Wing Shun Chan
*/
public class RowChecker {
public static final String ALIGN = "left";
public static final String ALL_ROW_IDS = "allRowIds";
public static final int COLSPAN = 1;
public static final String CSS_CLASS = StringPool.BLANK;
public static final String FORM_NAME = "fm";
public static final String ROW_IDS = "rowIds";
public static final String VALIGN = "middle";
public RowChecker(PortletResponse portletResponse) {
_portletResponse = portletResponse;
_allRowIds = _portletResponse.getNamespace() + ALL_ROW_IDS;
_formName = _portletResponse.getNamespace() + FORM_NAME;
_rowIds = _portletResponse.getNamespace() + ROW_IDS;
}
public String getAlign() {
return _align;
}
public String getAllRowIds() {
return _allRowIds;
}
public String getAllRowsCheckBox() {
return getAllRowsCheckBox(null);
}
public String getAllRowsCheckBox(HttpServletRequest request) {
return getAllRowsCheckbox(
request, _allRowIds, StringUtil.quote(_rowIds));
}
public String getAllRowsId() {
return getAllRowIds();
}
public int getColspan() {
return _colspan;
}
public String getCssClass() {
return _cssClass;
}
public Map<String, Object> getData(Object obj) {
return _data;
}
public String getFormName() {
return _formName;
}
public String getRememberCheckBoxStateURLRegex() {
return _rememberCheckBoxStateURLRegex;
}
public String getRowCheckBox(
HttpServletRequest request, boolean checked, boolean disabled,
String primaryKey) {
return getRowCheckBox(
request, checked, disabled, _rowIds, primaryKey,
StringUtil.quote(_rowIds), StringUtil.quote(_allRowIds),
StringPool.BLANK);
}
public String getRowId() {
return getRowIds();
}
public String getRowIds() {
return _rowIds;
}
public String getRowSelector() {
return _rowSelector;
}
public String getValign() {
return _valign;
}
public boolean isChecked(Object obj) {
return false;
}
public boolean isDisabled(Object obj) {
return false;
}
public boolean isRememberCheckBoxState() {
return _rememberCheckBoxState;
}
public void setAlign(String align) {
_align = align;
}
public void setAllRowIds(String allRowIds) {
_allRowIds = getNamespacedValue(allRowIds);
}
public void setColspan(int colspan) {
_colspan = colspan;
}
public void setCssClass(String cssClass) {
_cssClass = cssClass;
}
public void setData(Map<String, Object> data) {
_data = data;
}
public void setFormName(String formName) {
_formName = getNamespacedValue(formName);
}
public void setRememberCheckBoxState(boolean rememberCheckBoxState) {
_rememberCheckBoxState = rememberCheckBoxState;
}
public void setRememberCheckBoxStateURLRegex(
String rememberCheckBoxStateURLRegex) {
_rememberCheckBoxStateURLRegex = rememberCheckBoxStateURLRegex;
}
public void setRowIds(String rowIds) {
_rowIds = getNamespacedValue(rowIds);
}
public void setRowSelector(String rowSelector) {
_rowSelector = getNamespacedValue(rowSelector);
}
public void setValign(String valign) {
_valign = valign;
}
protected String getAllRowsCheckbox(
HttpServletRequest request, String name, String checkBoxRowIds) {
if (Validator.isNull(name)) {
return StringPool.BLANK;
}
StringBuilder sb = new StringBuilder(10);
sb.append("<label><input name=\"");
sb.append(name);
sb.append("\" title=\"");
sb.append(LanguageUtil.get(getLocale(request), "select-all"));
sb.append("\" type=\"checkbox\" ");
sb.append(HtmlUtil.buildData(_data));
sb.append("onClick=\"Liferay.Util.checkAll(AUI().one(this).ancestor(");
sb.append("'.table'), ");
sb.append(checkBoxRowIds);
sb.append(", this, 'tr:not(.lfr-template)');\"></label>");
return sb.toString();
}
protected Locale getLocale(HttpServletRequest request) {
Locale locale = null;
if (request != null) {
ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
WebKeys.THEME_DISPLAY);
locale = themeDisplay.getLocale();
}
else {
locale = LocaleThreadLocal.getThemeDisplayLocale();
}
if (locale == null) {
locale = LocaleUtil.getDefault();
}
return locale;
}
protected String getNamespacedValue(String value) {
if (Validator.isNull(value)) {
return StringPool.BLANK;
}
if (!value.startsWith(_portletResponse.getNamespace())) {
value = _portletResponse.getNamespace() + value;
}
return value;
}
protected String getOnClick(
String checkBoxRowIds, String checkBoxAllRowIds,
String checkBoxPostOnClick) {
StringBundler sb = new StringBundler(9);
sb.append("onClick=\"Liferay.Util.rowCheckerCheckAllBox(AUI().");
sb.append("one(this).ancestor('.table'), AUI().one(this).");
sb.append("ancestor('tr:not(.lfr-template)'), ");
sb.append(checkBoxRowIds);
sb.append(", ");
sb.append(checkBoxAllRowIds);
sb.append(", 'info');");
if (Validator.isNotNull(checkBoxPostOnClick)) {
sb.append(checkBoxPostOnClick);
}
sb.append("\"");
return sb.toString();
}
protected String getRowCheckBox(
HttpServletRequest request, boolean checked, boolean disabled,
String name, String value, String checkBoxRowIds,
String checkBoxAllRowIds, String checkBoxPostOnClick) {
StringBundler sb = new StringBundler(14);
sb.append("<label><input ");
if (checked) {
sb.append("checked ");
}
if (disabled) {
sb.append("disabled ");
}
sb.append("class=\"");
sb.append(_cssClass);
sb.append("\" name=\"");
sb.append(name);
sb.append("\" title=\"");
sb.append(LanguageUtil.get(request.getLocale(), "select"));
sb.append("\" type=\"checkbox\" value=\"");
sb.append(HtmlUtil.escapeAttribute(value));
sb.append("\" ");
if (Validator.isNotNull(_allRowIds)) {
sb.append(
getOnClick(
checkBoxRowIds, checkBoxAllRowIds, checkBoxPostOnClick));
}
sb.append("></label>");
return sb.toString();
}
private String _align = ALIGN;
private String _allRowIds;
private int _colspan = COLSPAN;
private String _cssClass = CSS_CLASS;
private Map<String, Object> _data;
private String _formName;
private final PortletResponse _portletResponse;
private boolean _rememberCheckBoxState = true;
private String _rememberCheckBoxStateURLRegex;
private String _rowIds;
private String _rowSelector;
private String _valign = VALIGN;
}