Example usage for org.apache.wicket.extensions.markup.html.repeater.data.sort ISortState getPropertySortOrder

List of usage examples for org.apache.wicket.extensions.markup.html.repeater.data.sort ISortState getPropertySortOrder

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.markup.html.repeater.data.sort ISortState getPropertySortOrder.

Prototype

SortOrder getPropertySortOrder(S property);

Source Link

Document

Gets the sort order of a property

Usage

From source file:com.wiquery.plugin.antilia.grid.DefaultHeaderCell.java

License:Apache License

/**
 * @param id//from  w ww .j a  v  a2  s .  c  om
 * @param model
 */
public DefaultHeaderCell(String id, int column, Table<E> table, IModel<String> titleModel,
        final IColumn<E> columnModel) {
    super(id, columnModel);
    this.table = table;
    this.column = column;
    setRenderBodyOnly(true);
    add(new HiddenField<Integer>("colWidth", new Model<Integer>() {

        private static final long serialVersionUID = 1L;

        @Override
        public Integer getObject() {
            return DefaultHeaderCell.this.getColumnModel().getWidth();
        }

        @Override
        public void setObject(Integer object) {
            if (object instanceof Integer) {
                DefaultHeaderCell.this.getColumnModel().setWidth(((Integer) object).intValue());
            }
        }

    }, Integer.class));

    DraggableTitle<E> draggableTarget = new DraggableTitle<E>("dragger", column) {

        private static final long serialVersionUID = 1L;

        @Override
        protected Table<E> getTable() {
            return DefaultHeaderCell.this.getTable();
        }
    };

    if (columnModel.isSortable()) {
        draggableTarget.add(new AjaxEventBehavior("ondblclick") {

            private static final long serialVersionUID = 1L;

            @Override
            protected void onEvent(AjaxRequestTarget target) {
                if (target != null) {
                    IColumn<E> columnModel = DefaultHeaderCell.this.getColumnModel();
                    if (!columnModel.isSortable()) {
                        return;
                    }
                    IPageableComponent<E> component = getTable();
                    IDataProvider<E> dataProvider = component.getDataProvider();
                    if (dataProvider instanceof ISortStateLocator) {
                        ISortStateLocator locator = (ISortStateLocator) dataProvider;
                        ISortState sortState = locator.getSortState();
                        if (sortState != null) {
                            int sortOrder = sortState.getPropertySortOrder(columnModel.getSortProperty());
                            if (sortOrder == ISortState.DESCENDING)
                                sortState.setPropertySortOrder(columnModel.getSortProperty(),
                                        ISortState.ASCENDING);
                            else if (sortOrder == ISortState.ASCENDING)
                                sortState.setPropertySortOrder(columnModel.getSortProperty(),
                                        ISortState.DESCENDING);
                            else
                                sortState.setPropertySortOrder(columnModel.getSortProperty(),
                                        ISortState.ASCENDING);
                        }
                        component.reset();
                    }
                    target.addComponent((Component) component);
                }
            }
        });
    }

    draggableTarget.setOutputMarkupId(true);

    add(draggableTarget);

    Label title = new Label("title", titleModel);
    title.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            IColumn<E> columnModel = DefaultHeaderCell.this.getColumnModel();
            if (!columnModel.isSortable()) {
                return "headerTitle";
            }
            IPageableComponent<E> component = getTable();

            IDataProvider<E> dataProvider = component.getDataProvider();
            if (dataProvider instanceof ISortStateLocator) {
                ISortStateLocator locator = (ISortStateLocator) dataProvider;
                ISortState sortState = locator.getSortState();
                if (sortState != null) {
                    int sortOrder = sortState.getPropertySortOrder(columnModel.getSortProperty());
                    if (sortOrder == ISortState.DESCENDING)
                        return "headerTitleDesc";
                    else if (sortOrder == ISortState.ASCENDING)
                        return "headerTitleAsc";
                }
            }
            return "headerTitle";
        }
    }));
    draggableTarget.add(title);

    WebMarkupContainer dragTd = new WebMarkupContainer("dragTd");
    dragTd.add(new AttributeModifier("id", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            if (!DefaultHeaderCell.this.getTable().isColumnsResizable())
                return DefaultHeaderCell.this.getTable().getMarkupId() + "_cND_"
                        + DefaultHeaderCell.this.getColumn();
            if (columnModel.isResizable())
                return DefaultHeaderCell.this.getTable().getMarkupId() + "_c_"
                        + DefaultHeaderCell.this.getColumn();
            // this naming does the trick of making the column non re-sizable
            return DefaultHeaderCell.this.getTable().getMarkupId() + "_cND_"
                    + DefaultHeaderCell.this.getColumn();
        }
    }));
    dragTd.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {

        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            if (!DefaultHeaderCell.this.getTable().isColumnsResizable())
                return "noResCol";
            if (columnModel.isResizable())
                return "resCol";
            return "noResCol";
        }
    }));

    add(dragTd);

    WebMarkupContainer sortInfo = new WebMarkupContainer("sortInfo");
    sortInfo.add(new AttributeModifier("class", new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            IColumn<E> columnModel = DefaultHeaderCell.this.getColumnModel();
            if (!columnModel.isSortable()) {
                return "";
            }
            IPageableComponent<E> component = getTable();

            IDataProvider<E> dataProvider = component.getDataProvider();
            if (dataProvider instanceof ISortStateLocator) {
                ISortStateLocator locator = (ISortStateLocator) dataProvider;
                ISortState sortState = locator.getSortState();
                if (sortState != null) {
                    int sortOrder = sortState.getPropertySortOrder(columnModel.getSortProperty());
                    if (sortOrder == ISortState.DESCENDING)
                        return "ui-icon ui-icon-triangle-1-s";
                    else if (sortOrder == ISortState.ASCENDING)
                        return "ui-icon ui-icon-triangle-1-n";
                }
            }
            return "";
        }
    }));
    draggableTarget.add(sortInfo);

}

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

License:Apache License

@Override
protected void onAjaxClick(final AjaxRequestTarget target) {
    target.add(dataTable);/*from w w w.j a  va2 s .  c om*/

    final UiHintContainer uiHintContainer = getUiHintContainer();
    if (uiHintContainer == null) {
        return;
    }

    final ISortState<T> state = stateLocator.getSortState();
    final SortOrder order = state.getPropertySortOrder(sortProperty);

    dataTable.setSortOrderHintAndBroadcast(order, sortProperty.toString(), target);
    dataTable.setPageNumberHintAndBroadcast(target);
}

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

License:Apache License

/**
 * Factory method for the sort icon// w  w w . j a v  a 2 s .  c om
 *
 * @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.artifactory.common.wicket.component.table.groupable.header.AjaxGroupableHeadersToolbar.java

License:Open Source License

private void switchGroupState(IGroupStateLocator groupStateLocator, String groupProperty) {
    SortParam groupParam = groupStateLocator.getGroupParam();
    if (groupParam == null || !groupProperty.equals(groupParam.getProperty())) {
        groupParam = new SortParam(groupProperty, true);
    } else {//from  w ww .j  ava2 s . c om
        groupParam = null;
    }
    groupStateLocator.setGroupParam(groupParam);

    // reset sort state
    ISortState sortState = groupStateLocator.getSortState();
    if (!SortOrder.NONE.equals(sortState.getPropertySortOrder(groupProperty))) {
        if (sortState instanceof SingleSortState) {
            ((SingleSortState) sortState).setSort(null);
        }
    }
}

From source file:org.hippoecm.frontend.plugins.standards.list.AbstractListingPlugin.java

License:Apache License

@Override
@SuppressWarnings("unchecked")
public void onModelChanged() {
    if (dataTable == null) {
        return;//from  w  w  w.  ja  va 2 s . c  om
    }

    final ISortState<String> sortState = provider.getSortState();

    clean();

    final TableDefinition<Node> tableDefinition = getTableDefinition();
    final ISortableDataProvider<Node, String> dataProvider = getDataProvider();

    ISortState<String> newSortState = dataProvider.getSortState();
    for (ListColumn<Node> column : tableDefinition.getColumns()) {
        String sortProperty = column.getSortProperty();
        SortOrder propertySortOrder = sortState.getPropertySortOrder(sortProperty);
        if (propertySortOrder != newSortState.getPropertySortOrder(sortProperty)) {
            newSortState.setPropertySortOrder(sortProperty, propertySortOrder);
        }
    }

    dataTable = getListDataTable("table", tableDefinition, dataProvider, this, isOrderable(), pagingDefinition);
    replace(dataTable);
    dataTable.init(getPluginContext());

    IPluginConfig config = getPluginConfig();
    if (config.getString("model.document") != null) {
        IModelReference<IModel> documentService = getPluginContext()
                .getService(config.getString("model.document"), IModelReference.class);
        if (documentService != null) {
            dataTable.setDefaultModel(documentService.getModel());
        }
    }
    redraw();
}

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  a2 s  .com

    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"));

    }
}