/* * Copyright 2004 original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.extremecomponents.table.view.html; import org.extremecomponents.table.bean.Export; import org.extremecomponents.table.core.Messages; import org.extremecomponents.table.core.TableConstants; import org.extremecomponents.table.core.TableModel; import org.extremecomponents.table.view.html.toolbar.ButtonItem; import org.extremecomponents.table.view.html.toolbar.ImageItem; import org.extremecomponents.table.view.html.toolbar.TextItem; import org.extremecomponents.table.view.html.toolbar.ToolbarItemUtils; import org.extremecomponents.util.HtmlBuilder; /** * @author Jeff Johnston */ public class ToolbarBuilder { private HtmlBuilder html; private TableModel model; private Messages messages; public ToolbarBuilder(TableModel model) { this(new HtmlBuilder(), model); } public ToolbarBuilder(HtmlBuilder html, TableModel model) { this.html = html; this.model = model; this.messages = model.getMessages(); } public HtmlBuilder getHtmlBuilder() { return html; } protected TableModel getTableModel() { return model; } protected Messages getMessages() { return messages; } public void firstPageItemAsButton() { ButtonItem item = new ButtonItem(); item.setId(model.getTableHandler().prefixWithTableId() + BuilderConstants.TOOLBAR_FIRST_PAGE_IMAGE); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_FIRST_PAGE_TOOLTIP)); item.setContents(messages.getMessage(BuilderConstants.TOOLBAR_FIRST_PAGE_TEXT)); ToolbarItemUtils.buildFirstPage(html, model, item); } public void firstPageItemAsImage() { ImageItem item = new ImageItem(); item.setId(model.getTableHandler().prefixWithTableId() + BuilderConstants.TOOLBAR_FIRST_PAGE_IMAGE); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_FIRST_PAGE_TOOLTIP)); item.setDisabledImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_FIRST_PAGE_DISABLED_IMAGE)); item.setImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_FIRST_PAGE_IMAGE)); item.setAlt(messages.getMessage(BuilderConstants.TOOLBAR_FIRST_PAGE_TEXT)); item.setStyle("border:0"); ToolbarItemUtils.buildFirstPage(html, model, item); } public void firstPageItemAsText() { TextItem item = new TextItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_FIRST_PAGE_TOOLTIP)); item.setText(messages.getMessage(BuilderConstants.TOOLBAR_FIRST_PAGE_TEXT)); ToolbarItemUtils.buildFirstPage(html, model, item); } public void prevPageItemAsButton() { ButtonItem item = new ButtonItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_PREV_PAGE_TOOLTIP)); item.setContents(messages.getMessage(BuilderConstants.TOOLBAR_PREV_PAGE_TEXT)); ToolbarItemUtils.buildPrevPage(html, model, item); } public void prevPageItemAsImage() { ImageItem item = new ImageItem(); item.setId(model.getTableHandler().prefixWithTableId() + BuilderConstants.TOOLBAR_PREV_PAGE_IMAGE); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_PREV_PAGE_TOOLTIP)); item.setDisabledImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_PREV_PAGE_DISABLED_IMAGE)); item.setImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_PREV_PAGE_IMAGE)); item.setAlt(messages.getMessage(BuilderConstants.TOOLBAR_PREV_PAGE_TEXT)); item.setStyle("border:0"); ToolbarItemUtils.buildPrevPage(html, model, item); } public void prevPageItemAsText() { TextItem item = new TextItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_PREV_PAGE_TOOLTIP)); item.setText(messages.getMessage(BuilderConstants.TOOLBAR_PREV_PAGE_TEXT)); ToolbarItemUtils.buildPrevPage(html, model, item); } public void nextPageItemAsButton() { ButtonItem item = new ButtonItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_NEXT_PAGE_TOOLTIP)); item.setContents(messages.getMessage(BuilderConstants.TOOLBAR_NEXT_PAGE_TEXT)); ToolbarItemUtils.buildNextPage(html, model, item); } public void nextPageItemAsImage() { ImageItem item = new ImageItem(); item.setId(model.getTableHandler().prefixWithTableId() + BuilderConstants.TOOLBAR_NEXT_PAGE_IMAGE); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_NEXT_PAGE_TOOLTIP)); item.setDisabledImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_NEXT_PAGE_DISABLED_IMAGE)); item.setImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_NEXT_PAGE_IMAGE)); item.setAlt(messages.getMessage(BuilderConstants.TOOLBAR_NEXT_PAGE_TEXT)); item.setStyle("border:0"); ToolbarItemUtils.buildNextPage(html, model, item); } public void nextPageItemAsText() { TextItem item = new TextItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_NEXT_PAGE_TOOLTIP)); item.setText(messages.getMessage(BuilderConstants.TOOLBAR_NEXT_PAGE_TEXT)); ToolbarItemUtils.buildNextPage(html, model, item); } public void lastPageItemAsButton() { ButtonItem item = new ButtonItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_LAST_PAGE_TOOLTIP)); item.setContents(messages.getMessage(BuilderConstants.TOOLBAR_LAST_PAGE_TEXT)); ToolbarItemUtils.buildLastPage(html, model, item); } public void lastPageItemAsImage() { ImageItem item = new ImageItem(); item.setId(model.getTableHandler().prefixWithTableId() + BuilderConstants.TOOLBAR_LAST_PAGE_IMAGE); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_LAST_PAGE_TOOLTIP)); item.setDisabledImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_LAST_PAGE_DISABLED_IMAGE)); item.setImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_LAST_PAGE_IMAGE)); item.setAlt(messages.getMessage(BuilderConstants.TOOLBAR_LAST_PAGE_TEXT)); item.setStyle("border:0"); ToolbarItemUtils.buildLastPage(html, model, item); } public void lastPageItemAsText() { TextItem item = new TextItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_LAST_PAGE_TOOLTIP)); item.setText(messages.getMessage(BuilderConstants.TOOLBAR_LAST_PAGE_TEXT)); ToolbarItemUtils.buildLastPage(html, model, item); } public void filterItemAsButton() { ButtonItem item = new ButtonItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_FILTER_TOOLTIP)); item.setContents(messages.getMessage(BuilderConstants.TOOLBAR_FILTER_TEXT)); ToolbarItemUtils.buildFilter(html, model, item); } public void filterItemAsImage() { ImageItem item = new ImageItem(); item.setId(model.getTableHandler().prefixWithTableId() + BuilderConstants.TOOLBAR_FILTER_IMAGE); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_FILTER_TOOLTIP)); item.setImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_FILTER_IMAGE)); item.setAlt(messages.getMessage(BuilderConstants.TOOLBAR_FILTER_TEXT)); item.setStyle("border:0"); ToolbarItemUtils.buildFilter(html, model, item); } public void filterItemAsText() { TextItem item = new TextItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_FILTER_TOOLTIP)); item.setText(messages.getMessage(BuilderConstants.TOOLBAR_FILTER_TEXT)); ToolbarItemUtils.buildFilter(html, model, item); } public void clearItemAsButton() { ButtonItem item = new ButtonItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_CLEAR_TOOLTIP)); item.setContents(messages.getMessage(BuilderConstants.TOOLBAR_CLEAR_TEXT)); ToolbarItemUtils.buildClear(html, model, item); } public void clearItemAsImage() { ImageItem item = new ImageItem(); item.setId(model.getTableHandler().prefixWithTableId() + BuilderConstants.TOOLBAR_CLEAR_IMAGE); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_CLEAR_TOOLTIP)); item.setImage(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_CLEAR_IMAGE)); item.setAlt(messages.getMessage(BuilderConstants.TOOLBAR_CLEAR_TEXT)); item.setStyle("border:0"); ToolbarItemUtils.buildClear(html, model, item); } public void clearItemAsText() { TextItem item = new TextItem(); item.setTooltip(messages.getMessage(BuilderConstants.TOOLBAR_CLEAR_TOOLTIP)); item.setText(messages.getMessage(BuilderConstants.TOOLBAR_CLEAR_TEXT)); ToolbarItemUtils.buildClear(html, model, item); } public void exportItemAsButton(Export export) { ButtonItem item = new ButtonItem(); item.setTooltip(export.getTooltip()); item.setContents(export.getText()); ToolbarItemUtils.buildExport(html, model, item, export); } public void exportItemAsImage(Export export) { ImageItem item = new ImageItem(); item.setId(model.getTableHandler().prefixWithTableId() + export.getView()); item.setTooltip(export.getTooltip()); item.setImage(BuilderUtils.getImage(model, export.getImageName())); item.setAlt(export.getText()); item.setStyle("border:0"); ToolbarItemUtils.buildExport(html, model, item, export); } public void exportItemAsText(Export export) { TextItem item = new TextItem(); item.setTooltip(export.getTooltip()); item.setText(export.getText()); ToolbarItemUtils.buildExport(html, model, item, export); } public void rowsDisplayedDroplist() { int rowsDisplayed = model.getTableHandler().getTable().getRowsDisplayed(); int medianRowsDisplayed = model.getTableHandler().getTable().getMedianRowsDisplayed(); int maxRowsDisplayed = model.getTableHandler().getTable().getMaxRowsDisplayed(); int currentRowsDisplayed = model.getLimit().getCurrentRowsDisplayed(); html.select().name(model.getTableHandler().prefixWithTableId() + TableConstants.ROWS_DISPLAYED); html.id(model.getTableHandler().prefixWithTableId() + TableConstants.ROWS_DISPLAYED); StringBuffer onchange = new StringBuffer(); onchange.append(new TableActions(model).getRowsDisplayedAction()); html.onchange(onchange.toString()); html.close(); html.newline(); html.tabs(4); // default rows html.option().value(String.valueOf(rowsDisplayed)); if (currentRowsDisplayed == rowsDisplayed) { html.selected(); } html.close(); html.append(String.valueOf(rowsDisplayed)); html.optionEnd(); // median rows html.option().value(String.valueOf(medianRowsDisplayed)); if (currentRowsDisplayed == medianRowsDisplayed) { html.selected(); } html.close(); html.append(String.valueOf(medianRowsDisplayed)); html.optionEnd(); // max rows html.option().value(String.valueOf(maxRowsDisplayed)); if (currentRowsDisplayed == maxRowsDisplayed) { html.selected(); } html.close(); html.append(String.valueOf(maxRowsDisplayed)); html.optionEnd(); html.newline(); html.tabs(4); html.selectEnd(); } public void separator() { html.img(); html.src(BuilderUtils.getImage(model, BuilderConstants.TOOLBAR_SEPARATOR_IMAGE)); html.style("border:0"); html.alt("Separator"); html.xclose(); } public String toString() { return html.toString(); } }