📄 htmldatascrollerrenderer.java
字号:
writer.startElement("td", scroller); renderFacet(facesContext, scroller, facetComp, FACET_FIRST); writer.endElement("td"); } facetComp = scroller.getFastRewind(); if (facetComp != null) { writer.startElement("td", scroller); renderFacet(facesContext, scroller, facetComp, FACET_FAST_REWIND); writer.endElement("td"); } facetComp = scroller.getPrevious(); if (facetComp != null) { writer.startElement("td", scroller); renderFacet(facesContext, scroller, facetComp, FACET_PREVOIUS); writer.endElement("td"); } if (scroller.isPaginator()) { writer.startElement("td", scroller); renderPaginator(facesContext, scroller, uiData); writer.endElement("td"); } facetComp = scroller.getNext(); if (facetComp != null) { writer.startElement("td", scroller); renderFacet(facesContext, scroller, facetComp, FACET_NEXT); writer.endElement("td"); } facetComp = scroller.getFastForward(); if (facetComp != null) { writer.startElement("td", scroller); renderFacet(facesContext, scroller, facetComp, FACET_FAST_FORWARD); writer.endElement("td"); } facetComp = scroller.getLast(); if (facetComp != null) { writer.startElement("td", scroller); renderFacet(facesContext, scroller, facetComp, FACET_LAST); writer.endElement("td"); } writer.endElement("tr"); writer.endElement("table"); } private void renderFacet(FacesContext facesContext, HtmlDataScroller scroller, UIComponent facetComp, String facetName) throws IOException { UIComponent link = getLink(facesContext, scroller, facetComp, facetName); link.encodeBegin(facesContext); facetComp.encodeBegin(facesContext); if (facetComp.getRendersChildren()) facetComp.encodeChildren(facesContext); facetComp.encodeEnd(facesContext); link.encodeEnd(facesContext); } protected void renderPaginator(FacesContext facesContext, HtmlDataScroller scroller, UIData uiData) throws IOException { ResponseWriter writer = facesContext.getResponseWriter(); int maxPages = scroller.getPaginatorMaxPages(); if (maxPages <= 1) { maxPages = 2; } int pageCount = getPageCount(uiData); if (pageCount <= 1) { return; } int pageIndex = getPageIndex(uiData); int delta = maxPages / 2; int pages; int start; if (pageCount > maxPages && pageIndex > delta) { pages = maxPages; start = pageIndex - pages / 2 - 1; if (start + pages > pageCount) { start = pageCount - pages; } } else { pages = pageCount < maxPages ? pageCount : maxPages; start = 0; } writer.startElement("table", scroller); String styleClass = scroller.getPaginatorTableClass(); if (styleClass != null) { writer.writeAttribute("class", styleClass, null); } String style = scroller.getPaginatorTableStyle(); if (style != null) { writer.writeAttribute("style", style, null); } writer.startElement("tr", scroller); for (int i = start, size = start + pages; i < size; i++) { int idx = i + 1; writer.startElement("td", scroller); String cStyleClass; String cStyle; if (idx == pageIndex) { cStyleClass = scroller.getPaginatorActiveColumnClass(); cStyle = scroller.getPaginatorActiveColumnStyle(); } else { cStyleClass = scroller.getPaginatorColumnClass(); cStyle = scroller.getPaginatorColumnStyle(); } if (cStyleClass != null) { writer.writeAttribute("class", cStyleClass, null); } if (cStyle != null) { writer.writeAttribute("style", cStyle, null); } HtmlCommandLink link = getLink(facesContext, scroller, Integer.toString(idx), idx); link.encodeBegin(facesContext); link.encodeChildren(facesContext); link.encodeEnd(facesContext); writer.endElement("td"); } writer.endElement("tr"); writer.endElement("table"); } protected HtmlCommandLink getLink(FacesContext facesContext, HtmlDataScroller scroller, String text, int pageIndex) { String id = PAGE_NAVIGATION + Integer.toString(pageIndex); Application application = facesContext.getApplication(); HtmlCommandLink link = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); link.setId(scroller.getId() + id); link.setTransient(true); UIParameter parameter = (UIParameter)application.createComponent(UIParameter.COMPONENT_TYPE); parameter.setId(scroller.getId() + id + "_param"); parameter.setTransient(true); parameter.setName(scroller.getClientId(facesContext)); parameter.setValue(id); List children = link.getChildren(); children.add(parameter); if (text != null) { HtmlOutputText uiText = (HtmlOutputText)application.createComponent(HtmlOutputText.COMPONENT_TYPE); uiText.setTransient(true); uiText.setValue(text); children.add(uiText); } scroller.getChildren().add(link); return link; } protected HtmlCommandLink getLink(FacesContext facesContext, HtmlDataScroller scroller, UIComponent facetComp, String facetName) { Application application = facesContext.getApplication(); HtmlCommandLink link = (HtmlCommandLink)application.createComponent(HtmlCommandLink.COMPONENT_TYPE); link.setId(scroller.getId() + facetName); link.setTransient(true); UIParameter parameter = (UIParameter)application.createComponent(UIParameter.COMPONENT_TYPE); parameter.setId(scroller.getId() + facetName + "_param"); parameter.setTransient(true); parameter.setName(scroller.getClientId(facesContext)); parameter.setValue(facetName); List children = link.getChildren(); children.add(parameter); if (facetComp != null) children.add(facetComp); // dirty, cause facet-comp is now child from link & scroller! scroller.getChildren().add(link); return link; } protected int getPageIndex(UIData uiData) { int rows = uiData.getRows(); int pageIndex; if (rows > 0) { pageIndex = uiData.getFirst() / rows + 1; } else { log.warn("DataTable " + uiData.getClientId(FacesContext.getCurrentInstance()) + " has invalid rows attribute."); pageIndex = 0; } if (uiData.getFirst() % rows > 0) { pageIndex++; } return pageIndex; } protected int getPageCount(UIData uiData) { int rows = uiData.getRows(); int pageCount; if (rows > 0) { pageCount = rows <= 0 ? 1 : uiData.getRowCount() / rows; if (uiData.getRowCount() % rows > 0) { pageCount++; } } else { rows = 1; pageCount = 1; } return pageCount; } protected UIData findUIData(HtmlDataScroller scroller, UIComponent component) { String forStr = scroller.getFor(); UIComponent forComp; if (forStr == null) { // DataScroller may be a child of uiData forComp = component.getParent(); } else { forComp = component.findComponent(scroller.getFor()); if (forComp == null) { log.warn("could not find UIData referenced by attribute dataScroller@for = '" + scroller.getFor() + "'"); } } if (!(forComp instanceof UIData)) { throw new IllegalArgumentException("uiComponent referenced by attribute tableScroller@for must be of type " + UIData.class.getName()); } return (UIData)forComp; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -