Example usage for org.apache.wicket.extensions.markup.html.repeater.data.table IColumn isSortable

List of usage examples for org.apache.wicket.extensions.markup.html.repeater.data.table IColumn isSortable

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.markup.html.repeater.data.table IColumn isSortable.

Prototype

default boolean isSortable() 

Source Link

Document

Returns true if the header of the column should be sortable

Usage

From source file:net.unbewaff.wicketcrudr.components.StyledHeadersToolbar.java

License:Apache License

/**
 * Constructor//from www .  jav  a 2  s .c  o  m
 *
 * @param <T>
 *            the column data type
 * @param table
 *            data table this toolbar will be attached to
 * @param stateLocator
 *            locator for the ISortState implementation used by sortable
 *            headers
 */
public <T> StyledHeadersToolbar(final DataTable<T> table, final ISortStateLocator stateLocator) {
    super(table);

    RepeatingView headers = new RepeatingView("headers");
    add(headers);

    final List<IColumn<T>> columns = table.getColumns();
    for (final IColumn<T> column : columns) {
        AbstractItem item = new AbstractItem(headers.newChildId());
        headers.add(item);

        WebMarkupContainer header = null;
        if (column.isSortable()) {
            header = newSortableHeader("header", column.getSortProperty(), stateLocator);
        } else {
            header = new WebMarkupContainer("header");
        }

        if (column instanceof IMultipleStyledColumn) {
            AttributeAppender classAppender = new AttributeAppender("class",
                    ((IMultipleStyledColumn<?>) column).getCssClassForHeader()).setSeparator(" ");

            header.add(classAppender);
        } else if (column instanceof IStyledColumn) {
            AttributeAppender classAppender = new AttributeAppender("class",
                    ((IStyledColumn<?>) column).getCssClass()).setSeparator(" ");

            header.add(classAppender);
        }

        item.add(header);
        item.setRenderBodyOnly(true);
        header.add(column.getHeader("label"));
    }
}

From source file:org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.IsisAjaxHeadersToolbar.java

License:Apache License

/**
 * Constructor/*from  w w w. j av  a 2  s.co  m*/
 * 
 * @param <T>
 *            the column data type
 * @param table
 *            data table this toolbar will be attached to
 * @param stateLocator
 *            locator for the ISortState implementation used by sortable headers
 */
public <T> IsisAjaxHeadersToolbar(final DataTable<T, S> table, final ISortStateLocator<S> stateLocator) {
    super(table);

    RefreshingView<IColumn<T, S>> headers = new RefreshingView<IColumn<T, S>>("headers") {
        private static final long serialVersionUID = 1L;

        @Override
        protected Iterator<IModel<IColumn<T, S>>> getItemModels() {
            List<IModel<IColumn<T, S>>> columnsModels = new LinkedList<IModel<IColumn<T, S>>>();

            for (IColumn<T, S> column : table.getColumns()) {
                columnsModels.add(Model.of(column));
            }

            return columnsModels.iterator();
        }

        @Override
        protected void populateItem(Item<IColumn<T, S>> item) {
            final IColumn<T, S> column = item.getModelObject();

            WebMarkupContainer header;

            if (column.isSortable()) {
                header = newSortableHeader("header", column.getSortProperty(), stateLocator);

                if (column instanceof IStyledColumn) {
                    CssAttributeBehavior cssAttributeBehavior = new CssAttributeBehavior() {
                        private static final long serialVersionUID = 1L;

                        @Override
                        protected String getCssClass() {
                            return ((IStyledColumn<?, S>) column).getCssClass();
                        }
                    };

                    header.add(cssAttributeBehavior);
                }

            } else {
                header = new WebMarkupContainer("header");
            }

            item.add(header);
            item.setRenderBodyOnly(true);
            Component label = column.getHeader("label");
            Component sortIcon = newSortIcon("sortIcon", column, stateLocator);
            header.add(label, sortIcon);

            if (column instanceof ObjectAdapterTitleColumn) {
                header.add(new CssClassAppender("title-column"));
            }
        }
    };
    add(headers);
}

From source file:org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.IsisAjaxHeadersToolbar.java

License:Apache License

/**
 * Factory method for the sort icon//from   ww  w . j  a v  a 2s  .c  o  m
 *
 * @param id
 *          the component id
 * @param column
 *          the column for which a sort icon is needed
 * @param stateLocator
 *          locator for the ISortState implementation used by sortable headers
 * @param <T>
 *          The model object type of the data table
 * @return A component that should be used as a sort icon
 */
protected <T> Component newSortIcon(String id, final IColumn<T, S> column,
        final ISortStateLocator<S> stateLocator) {
    return new WebComponent(id) {
        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);

            if (column.isSortable()) {
                ISortState<S> sortState = stateLocator.getSortState();
                S sortProperty = column.getSortProperty();
                SortOrder sortOrder = sortProperty == null ? SortOrder.NONE
                        : sortState.getPropertySortOrder(sortProperty);
                if (sortOrder == SortOrder.ASCENDING) {
                    Attributes.addClass(tag, CLASS_SORT_UP);
                } else if (sortOrder == SortOrder.DESCENDING) {
                    Attributes.addClass(tag, CLASS_SORT_DOWN);
                } else {
                    Attributes.addClass(tag, CLASS_SORT_NONE);
                }
            }
        }
    };
}

From source file:org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.MyHeadersToolbar.java

License:Apache License

/**
 * Constructor/*from www  .j  a  va 2  s.  co  m*/
 * 
 * @param <T>
 *            the column data type
 * @param table
 *            data table this toolbar will be attached to
 * @param stateLocator
 *            locator for the ISortState implementation used by sortable headers
 */
public <T> MyHeadersToolbar(final DataTable<T, S> table, final ISortStateLocator<S> stateLocator) {
    super(table);

    RefreshingView<IColumn<T, S>> headers = new RefreshingView<IColumn<T, S>>("headers") {
        private static final long serialVersionUID = 1L;

        @Override
        protected Iterator<IModel<IColumn<T, S>>> getItemModels() {
            List<IModel<IColumn<T, S>>> columnsModels = new LinkedList<IModel<IColumn<T, S>>>();

            for (IColumn<T, S> column : table.getColumns()) {
                columnsModels.add(Model.of(column));
            }

            return columnsModels.iterator();
        }

        @Override
        protected void populateItem(Item<IColumn<T, S>> item) {
            final IColumn<T, S> column = item.getModelObject();

            WebMarkupContainer header = null;

            if (column.isSortable()) {
                header = newSortableHeader("header", column.getSortProperty(), stateLocator);
            } else {
                header = new WebMarkupContainer("header");
            }

            if (column instanceof IStyledColumn) {
                CssAttributeBehavior cssAttributeBehavior = new CssAttributeBehavior() {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected String getCssClass() {
                        return ((IStyledColumn<?, S>) column).getCssClass();
                    }
                };

                header.add(cssAttributeBehavior);
            }

            item.add(header);
            item.setRenderBodyOnly(true);

            Component label;
            //Component checkBox;
            //if(column instanceof ObjectAdapterToggleboxColumn) {
            label = new Label("label");
            //    checkBox = column.getHeader("checkbox");
            //    label.setVisible(false);
            //} else {
            label = column.getHeader("label");
            //    checkBox = new CheckBox("checkbox");
            //    checkBox.setVisible(false);
            // }
            header.add(label);
            //header.add(checkBox);
        }
    };
    add(headers);
}

From source file:org.artifactory.common.wicket.component.table.groupable.header.AjaxGroupableHeadersToolbar.java

License:Open Source License

public AjaxGroupableHeadersToolbar(final DataTable table, final ISortStateLocator stateLocator) {
    super(table);

    // alas, copied from HeadersToolbar
    RepeatingView headers = new RepeatingView("headers");
    add(headers);/*from   ww  w  . j  a v  a 2  s .c o m*/

    final List<IColumn> columns = table.getColumns();
    int i = 0;
    for (final IColumn column : columns) {
        WebMarkupContainer item = new WebMarkupContainer(headers.newChildId());
        item.setRenderBodyOnly(true);
        headers.add(item);

        WebMarkupContainer header;
        if (column.isSortable()) {
            if (column instanceof IGroupableColumn) {
                final IGroupableColumn groupableColumn = (IGroupableColumn) column;
                header = newSortableHeader("header", groupableColumn.getSortProperty(),
                        groupableColumn.getGroupProperty(), stateLocator);
            } else {
                header = newSortableHeader("header", column.getSortProperty(), column.getSortProperty(),
                        stateLocator);
            }
        } else {
            header = new UnsortableBorder("header");
        }

        // add IStyledColumn style
        if (column instanceof IStyledColumn) {
            header.add(new CssClass(new AbstractReadOnlyModel() {
                @Override
                public Object getObject() {
                    return ((IStyledColumn) column).getCssClass();
                }
            }));
        }

        // add first/last style
        if (i == 0) {
            header.add(new CssClass("first-cell"));
        } else if (i == columns.size() - 1) {
            header.add(new CssClass("last-cell"));
        }
        item.add(header);

        // add label
        header.add(column.getHeader("label"));

        // add groupByLink
        Component groupByLink;
        WebMarkupContainer groupByText = new WebMarkupContainer("groupByText");
        if (column instanceof IGroupableColumn) {
            IGroupableColumn groupableColumn = (IGroupableColumn) column;
            String property = groupableColumn.getGroupProperty();
            groupByLink = newGroupByLink("groupByLink", stateLocator, property);

            header.add(new CssClass(new HeaderCssModel(stateLocator, property)));
        } else {
            groupByLink = new WebMarkupContainer("groupByLink").setVisible(false);
            groupByText.setVisible(false);
        }

        header.add(groupByLink);
        header.add(groupByText);
        i++;
    }
}

From source file:org.sakaiproject.sitestats.tool.wicket.components.paging.infinite.InfinitePagingDataTableHeadersToolbar.java

License:Educational Community License

public <T> InfinitePagingDataTableHeadersToolbar(final InfinitePagingDataTable<T, S> table,
        final ISortStateLocator<S> stateLocator) {
    super(null, table);

    RefreshingView<IColumn<T, S>> headers = new RefreshingView<IColumn<T, S>>("headers") {
        private static final long serialVersionUID = 1L;

        @Override/*from   w  w  w  .  j  a v  a 2s  .  c o m*/
        protected Iterator<IModel<IColumn<T, S>>> getItemModels() {
            List<IModel<IColumn<T, S>>> columnsModels = new LinkedList<>();

            for (IColumn<T, S> column : table.getColumns()) {
                columnsModels.add(Model.of(column));
            }

            return columnsModels.iterator();
        }

        @Override
        protected void populateItem(Item<IColumn<T, S>> item) {
            final IColumn<T, S> column = item.getModelObject();

            WebMarkupContainer header;
            if (column.isSortable()) {
                header = newSortableHeader("header", column.getSortProperty(), stateLocator);
            } else {
                header = new WebMarkupContainer("header");
            }

            if (column instanceof IStyledColumn) {
                InfinitePagingDataTable.CssAttributeBehavior cssAttributeBehavior = new InfinitePagingDataTable.CssAttributeBehavior() {
                    private static final long serialVersionUID = 1L;

                    @Override
                    protected String getCssClass() {
                        return ((IStyledColumn<?, S>) column).getCssClass();
                    }
                };

                header.add(cssAttributeBehavior);
            }

            item.add(header);
            item.setRenderBodyOnly(true);
            header.add(column.getHeader("label"));
        }
    };

    add(headers);
    WebMarkupContainer sortToggle = new WebMarkupContainer("sortToggle");
    sortToggle.setVisible(table.getColumns().stream().anyMatch(IColumn::isSortable));
    add(sortToggle);
    table.setOutputMarkupId(true);
}

From source file:org.sakaiproject.wicket.markup.html.repeater.data.table.BasicHeadersToolbar.java

License:Educational Community License

public BasicHeadersToolbar(DataTable table, ISortStateLocator stateLocator) {
    super(table);

    setRenderBodyOnly(true);/*from w ww  .  ja v  a 2  s .co m*/

    RepeatingView headers = new RepeatingView("headers");
    add(headers);

    final IColumn[] columns = table.getColumns();
    for (int i = 0; i < columns.length; i++) {
        final IColumn column = columns[i];

        WebMarkupContainer item = new WebMarkupContainer(headers.newChildId());
        headers.add(item);

        WebMarkupContainer header = null;
        if (column.isSortable()) {
            header = newSortableHeader("header", column.getSortProperty(), stateLocator);
        } else {
            header = new WebMarkupContainer("header");
        }

        if (column instanceof PropertyColumn) {
            String expression = ((PropertyColumn) column).getPropertyExpression();

            if (expression != null)
                header.setMarkupId(expression);
        }

        if (column instanceof IStyledColumn) {
            header.add(new CssAttributeBehavior() {
                private static final long serialVersionUID = 1L;

                protected String getCssClass() {
                    return ((IStyledColumn) column).getCssClass();
                }
            });
        }

        final ISortState state = stateLocator.getSortState();

        Image indicatorImage = new Image("indicator") {
            private static final long serialVersionUID = 1L;

            protected ResourceReference getImageResourceReference() {
                int sortOrder = ISortState.NONE;

                if (column.isSortable() && column.getSortProperty() != null)
                    sortOrder = state.getPropertySortOrder(column.getSortProperty());

                if (sortOrder == ISortState.DESCENDING)
                    return upArrowReference;
                else if (sortOrder == ISortState.ASCENDING)
                    return downArrowReference;

                return noArrowReference;
            }
        };

        header.add(indicatorImage);

        indicatorImage.setVisible(column.isSortable() && column.getSortProperty() != null);

        item.add(header);
        item.setRenderBodyOnly(true);
        header.add(column.getHeader("label"));

    }
}

From source file:table.headercolumndatatable.TwinHeadersToolbar.java

License:Apache License

private void populateHeaders(ISortStateLocator stateLocator, RepeatingView headers, String headerId,
        String labelId, IColumn<?>[] tableColumns) {
    for (final IColumn column : tableColumns) {
        WebMarkupContainer item = new WebMarkupContainer(headers.newChildId());
        headers.add(item);/*from w  w w  . j  a  va 2 s  .c  o  m*/

        WebMarkupContainer header;
        if (column.isSortable()) {
            header = newSortableHeader(headerId, column.getSortProperty(), stateLocator);
        } else {
            header = new WebMarkupContainer(headerId);
        }

        if (column instanceof IStyledColumn) {
            header.add(new CssAttributeBehavior() {
                private static final long serialVersionUID = 1L;

                @Override
                protected String getCssClass() {
                    return ((IStyledColumn<?>) column).getCssClass();
                }
            });
        }

        item.add(header);
        item.setRenderBodyOnly(true);
        header.add(column.getHeader(labelId));
    }
}

From source file:wickettree.table.HeadersToolbar.java

License:Apache License

/**
 * Constructor//from   www. j a  v a2 s.c  o  m
 * 
 * @param tree
 *            tree this toolbar will be attached to
 */
public HeadersToolbar(final TableTree<?> tree, final ISortStateLocator stateLocator) {
    super(tree);

    RepeatingView headers = new RepeatingView("headers");
    add(headers);

    for (final IColumn<?> column : tree.getColumns()) {
        WebMarkupContainer item = new WebMarkupContainer(headers.newChildId());
        headers.add(item);

        WebMarkupContainer header = null;
        if (column.isSortable()) {
            header = newSortableHeader("header", column.getSortProperty(), stateLocator);
        } else {
            header = new WebMarkupContainer("header");
        }

        if (column instanceof IStyledColumn<?>) {
            header.add(
                    new AttributeAppender("class", Model.of(((IStyledColumn<?>) column).getCssClass()), " "));
        }

        item.add(header);
        item.setRenderBodyOnly(true);
        header.add(column.getHeader("label"));

    }
}