📄 cmshtmllist.java
字号:
* Sets the maximum number of items per page.<p>
*
* @param maxItemsPerPage the maximum number of items per page to set
*/
public void setMaxItemsPerPage(int maxItemsPerPage) {
this.m_maxItemsPerPage = maxItemsPerPage;
}
/**
* Sets the search filter.<p>
*
* @param searchFilter the search filter to set
* @param locale the used locale for searching/sorting
*/
public void setSearchFilter(String searchFilter, Locale locale) {
if (!m_metadata.isSearchable()) {
return;
}
if (CmsStringUtil.isEmptyOrWhitespaceOnly(searchFilter)) {
// reset content if filter is empty
m_filteredItems = null;
m_searchFilter = "";
getMetadata().getSearchAction().getShowAllAction().setVisible(false);
} else {
m_filteredItems = getMetadata().getSearchAction().filter(getAllContent(), searchFilter);
m_searchFilter = searchFilter;
getMetadata().getSearchAction().getShowAllAction().setVisible(true);
}
String sCol = m_sortedColumn;
m_sortedColumn = "";
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(sCol)) {
CmsListOrderEnum order = getCurrentSortOrder();
setSortedColumn(sCol, locale);
if (order == CmsListOrderEnum.ORDER_DESCENDING) {
setSortedColumn(sCol, locale);
}
}
setCurrentPage(1);
}
/**
* Sets the sorted column.<p>
*
* @param sortedColumn the sorted column to set
* @param locale the used locale for sorting
*
* @throws CmsIllegalArgumentException if the <code>sortedColumn</code> argument is invalid
*/
public void setSortedColumn(String sortedColumn, Locale locale) throws CmsIllegalArgumentException {
if (getMetadata().getColumnDefinition(sortedColumn) == null
|| !getMetadata().getColumnDefinition(sortedColumn).isSorteable()) {
return;
}
// check if the parameter is valid
if (m_metadata.getColumnDefinition(sortedColumn) == null) {
throw new CmsIllegalArgumentException(Messages.get().container(
Messages.ERR_LIST_INVALID_COLUMN_1,
sortedColumn));
}
// reset view
setCurrentPage(1);
// only reverse order if the to sort column is already sorted
if (sortedColumn.equals(m_sortedColumn)) {
if (m_currentSortOrder == CmsListOrderEnum.ORDER_ASCENDING) {
m_currentSortOrder = CmsListOrderEnum.ORDER_DESCENDING;
} else {
m_currentSortOrder = CmsListOrderEnum.ORDER_ASCENDING;
}
Collections.reverse(m_filteredItems);
return;
}
// sort new column
m_sortedColumn = sortedColumn;
m_currentSortOrder = CmsListOrderEnum.ORDER_ASCENDING;
I_CmsListItemComparator c = getMetadata().getColumnDefinition(sortedColumn).getListItemComparator();
if (m_filteredItems == null) {
m_filteredItems = new ArrayList(getAllContent());
}
Collections.sort(m_filteredItems, c.getComparator(sortedColumn, locale));
}
/**
* Sets the list state.<p>
*
* This may involve sorting, filtering and paging.<p>
*
* @param listState the state to be set
* @param locale the locale
*/
public void setState(CmsListState listState, Locale locale) {
setSearchFilter(listState.getFilter(), locale);
setSortedColumn(listState.getColumn(), locale);
if (listState.getOrder() == CmsListOrderEnum.ORDER_DESCENDING) {
setSortedColumn(listState.getColumn(), locale);
}
if (listState.getPage() > 0) {
if (listState.getPage() <= getNumberOfPages()) {
setCurrentPage(listState.getPage());
} else {
setCurrentPage(1);
}
}
}
/**
* Sets the metadata for this list.<p>
*
* Should only be used by the <code>{@link A_CmsListDialog}</code> class
* for temporaly removing the metadata object while the list is saved in the
* <code>{@link org.opencms.workplace.CmsWorkplaceSettings}</code>.<p>
*
* @param metadata the list metadata
*/
/*package*/void setMetadata(CmsListMetadata metadata) {
m_metadata = metadata;
}
/**
* Returns the number (from 1) of the first displayed item.<p>
*
* @return the number (from 1) of the first displayed item, or zero if the list is empty
*/
private int displayedFrom() {
if (getSize() != 0) {
if (isPrintable()) {
return 1;
} else {
return (getCurrentPage() - 1) * getMaxItemsPerPage() + 1;
}
}
return 0;
}
/**
* Returns the number (from 1) of the last displayed item.<p>
*
* @return the number (from 1) of the last displayed item, or zero if the list is empty
*/
private int displayedTo() {
if (getSize() != 0) {
if (!isPrintable()) {
if (getCurrentPage() * getMaxItemsPerPage() < getSize()) {
return getCurrentPage() * getMaxItemsPerPage();
}
}
}
return getSize();
}
/**
* Generates the initial html code.<p>
*
* @param wp the workplace context
*
* @return html code
*/
private String htmlBegin(CmsWorkplace wp) {
StringBuffer html = new StringBuffer(512);
// help & confirmation text for actions if needed
if (!isPrintable() && m_visibleItems != null && !m_visibleItems.isEmpty()) {
Iterator cols = getMetadata().getColumnDefinitions().iterator();
while (cols.hasNext()) {
CmsListColumnDefinition col = (CmsListColumnDefinition)cols.next();
Iterator actions = col.getDirectActions().iterator();
while (actions.hasNext()) {
I_CmsListDirectAction action = (I_CmsListDirectAction)actions.next();
action.setItem((CmsListItem)m_visibleItems.get(0));
html.append(action.helpTextHtml(wp));
html.append(action.confirmationTextHtml(wp));
}
Iterator defActions = col.getDefaultActions().iterator();
while (defActions.hasNext()) {
I_CmsListDirectAction action = (I_CmsListDirectAction)defActions.next();
action.setItem((CmsListItem)m_visibleItems.get(0));
html.append(action.helpTextHtml(wp));
html.append(action.confirmationTextHtml(wp));
}
}
}
// start list code
html.append("<div class='listArea'>\n");
html.append(((CmsDialog)wp).dialogBlock(CmsWorkplace.HTML_START, m_name.key(wp.getLocale()), false));
html.append("\t\t<table width='100%' cellspacing='0' cellpadding='0' border='0'>\n");
html.append("\t\t\t<tr><td>\n");
return html.toString();
}
/**
* Generates the need html code for ending a lsit.<p>
*
* @param wp the workplace context
*
* @return html code
*/
private String htmlEnd(CmsWorkplace wp) {
StringBuffer html = new StringBuffer(512);
html.append("\t\t\t</td></tr>\n");
html.append("\t\t</table>\n");
html.append(((CmsDialog)wp).dialogBlock(CmsWorkplace.HTML_END, m_name.key(wp.getLocale()), false));
html.append("</div>\n");
if (!isPrintable() && getMetadata().isSearchable()) {
html.append("<script type='text/javascript'>\n");
html.append("\tvar form = document.forms['");
html.append(getId());
html.append("-form'];\n");
html.append("\tform.listSearchFilter.value='");
html.append(getSearchFilter() != null ? CmsStringUtil.escapeJavaScript(getSearchFilter()) : "");
html.append("';\n");
html.append("</script>\n");
}
return html.toString();
}
/**
* Generates the needed html code for the paging bar.<p>
*
* @param wp the workplace instance
*
* @return html code
*/
private String htmlPagingBar(CmsWorkplace wp) {
if (getNumberOfPages() < 2) {
return "";
}
StringBuffer html = new StringBuffer(1024);
CmsMessages messages = Messages.get().getBundle(wp.getLocale());
html.append("<table width='100%' cellspacing='0' style='margin-top: 5px;'>\n");
html.append("\t<tr>\n");
html.append("\t\t<td class='main'>\n");
// prev button
String id = "listPrev";
String name = messages.key(Messages.GUI_LIST_PAGING_PREVIOUS_NAME_0);
String iconPath = ICON_LEFT;
boolean enabled = getCurrentPage() > 1;
String helpText = messages.key(Messages.GUI_LIST_PAGING_PREVIOUS_HELP_0);
if (!enabled) {
helpText = messages.key(Messages.GUI_LIST_PAGING_PREVIOUS_HELPDIS_0);
}
String onClic = "listSetPage('" + getId() + "', " + (getCurrentPage() - 1) + ")";
html.append(A_CmsHtmlIconButton.defaultButtonHtml(
wp.getJsp(),
CmsHtmlIconButtonStyleEnum.SMALL_ICON_TEXT,
id,
name,
helpText,
enabled,
iconPath,
null,
onClic));
html.append("\n");
// next button
id = "listNext";
name = messages.key(Messages.GUI_LIST_PAGING_NEXT_NAME_0);
iconPath = ICON_RIGHT;
enabled = getCurrentPage() < getNumberOfPages();
helpText = messages.key(Messages.GUI_LIST_PAGING_NEXT_HELP_0);
if (!enabled) {
helpText = messages.key(Messages.GUI_LIST_PAGING_NEXT_HELPDIS_0);
}
onClic = "listSetPage('" + getId() + "', " + (getCurrentPage() + 1) + ")";
html.append(A_CmsHtmlIconButton.defaultButtonHtml(
wp.getJsp(),
CmsHtmlIconButtonStyleEnum.SMALL_ICON_TEXT,
id,
name,
helpText,
enabled,
iconPath,
null,
onClic));
html.append("\n");
// page selection list
html.append("\t\t\t ");
html.append("\t\t\t<select name='listPageSet' id='id-page_set' onChange =\"listSetPage('");
html.append(getId());
html.append("', this.value);\" style='vertical-align: bottom;'>\n");
for (int i = 0; i < getNumberOfPages(); i++) {
int displayedFrom = i * getMaxItemsPerPage() + 1;
int displayedTo = (i + 1) * getMaxItemsPerPage() < getSize() ? (i + 1) * getMaxItemsPerPage() : getSize();
html.append("\t\t\t\t<option value='");
html.append(i + 1);
html.append("'");
html.append((i + 1) == getCurrentPage() ? " selected" : "");
html.append(">");
html.append(displayedFrom);
html.append(" - ");
html.append(displayedTo);
html.append("</option>\n");
}
html.append("\t\t\t</select>\n");
html.append("\t\t\t ");
if (CmsStringUtil.isEmptyOrWhitespaceOnly(m_searchFilter)) {
html.append(messages.key(
Messages.GUI_LIST_PAGING_TEXT_2,
new Object[] {m_name.key(wp.getLocale()), new Integer(getTotalSize())}));
} else {
html.append(messages.key(
Messages.GUI_LIST_PAGING_FILTER_TEXT_3,
new Object[] {m_name.key(wp.getLocale()), new Integer(getSize()), new Integer(getTotalSize())}));
}
html.append("\t\t</td>\n");
html.append("\t</tr>\n");
html.append("</table>\n");
return html.toString();
}
/**
* returns the html for the title of the list.<p>
*
* @param wp the workplace context
*
* @return html code
*/
private String htmlTitle(CmsWorkplace wp) {
StringBuffer html = new StringBuffer(512);
CmsMessages messages = Messages.get().getBundle(wp.getLocale());
html.append("<table width='100%' cellspacing='0'>");
html.append("\t<tr>\n");
html.append("\t\t<td align='left'>\n");
html.append("\t\t\t");
if (getTotalNumberOfPages() > 1) {
if (CmsStringUtil.isEmptyOrWhitespaceOnly(m_searchFilter)) {
html.append(messages.key(Messages.GUI_LIST_TITLE_TEXT_4, new Object[] {
m_name.key(wp.getLocale()),
new Integer(displayedFrom()),
new Integer(displayedTo()),
new Integer(getTotalSize())}));
} else {
html.append(messages.key(Messages.GUI_LIST_TITLE_FILTERED_TEXT_5, new Object[] {
m_name.key(wp.getLocale()),
new Integer(displayedFrom()),
new Integer(displayedTo()),
new Integer(getSize()),
new Integer(getTotalSize())}));
}
} else {
if (CmsStringUtil.isEmptyOrWhitespaceOnly(m_searchFilter)) {
html.append(messages.key(Messages.GUI_LIST_SINGLE_TITLE_TEXT_2, new Object[] {
m_name.key(wp.getLocale()),
new Integer(getTotalSize())}));
} else {
html.append(messages.key(Messages.GUI_LIST_SINGLE_TITLE_FILTERED_TEXT_3, new Object[] {
m_name.key(wp.getLocale()),
new Integer(getSize()),
new Integer(getTotalSize())}));
}
}
html.append("\n");
html.append("\t\t</td>\n\t\t");
html.append(getMetadata().htmlActionBar(wp));
html.append("\n\t</tr>\n");
html.append("</table>\n");
return html.toString();
}
/**
* Returns the html code for the toolbar (search bar + multiactions bar).<p>
*
* @param wp the workplace context
*
* @return html code
*/
private String htmlToolBar(CmsWorkplace wp) {
StringBuffer html = new StringBuffer(512);
html.append("<table width='100%' cellspacing='0' style='margin-bottom: 5px'>\n");
html.append("\t<tr>\n");
html.append(m_metadata.htmlSearchBar(wp));
html.append(m_metadata.htmlMultiActionBar(wp));
html.append("\t</tr>\n");
html.append("</table>\n");
return html.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -