/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package com.smartgwt.client.data; import com.smartgwt.client.widgets.DataBoundComponent; /** * A dialog that allows the user to set up complex sorting arrangements by defining a group of {@link SortSpecifier}s. * <p> * Each SortSpecifier applies to a single property and direction - so, for instance, in a grid with two columns, * year and monthNumber, you could sort first by year in descending order and then by monthNumber in ascending order. T * his would producing a grid sorted by year from largest (most recent) to smallest (least recent) and, within each year, * by monthNumber from smallest (January) to largest (December). */ public class MultiSortDialog { /** * Set the title of the MultiSortDialog. * * @param title the title */ public static native void setTitle(String title)/*-{ $wnd.isc.MultiSortDialog.addProperties({title: title}); }-*/; /** * Launches a MultiSortDialog and obtains a sort-definition from the user. * * @param dataBoundComponent the databound component to apply the sort to * @param initialSort The initial sort definition. * @param callback Called when the user defines and accepts one or more SortSpecifiers. Single parameter sortLevels is an Array * of SortSpecifier or null if the user cancelled the dialog. */ public static native void askForSort(DataBoundComponent dataBoundComponent, SortSpecifier[] initialSort, MultiSortCallback callback) /*-{ var dbcJS = dataBoundComponent.@com.smartgwt.client.widgets.DataBoundComponent::getOrCreateJsObj()(); var initialSortJS = @com.smartgwt.client.util.JSOHelper::convertToJavaScriptArray([Ljava/lang/Object;)(initialSort); $wnd.isc.MultiSortDialog.askForSort(dbcJS, initialSortJS, callback == null ? null : function(sortLevels) { var sortLevelsJ = sortLevels == null || sortLevels == undefined ? null : @com.smartgwt.client.data.SortSpecifier::convertToArray(Lcom/google/gwt/core/client/JavaScriptObject;)(sortLevels); callback.@com.smartgwt.client.data.MultiSortCallback::execute([Lcom/smartgwt/client/data/SortSpecifier;)(sortLevelsJ); } ); }-*/; }