⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmshtmllist.java

📁 OpenCms 是一个J2EE的产品
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     * 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&nbsp;&nbsp;&nbsp;");
        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&nbsp;&nbsp;&nbsp;");
        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 + -