diff options
author | Patrik Lindström <patrik@vaadin.com> | 2014-08-18 16:04:28 +0300 |
---|---|---|
committer | Henrik Paul <henrik@vaadin.com> | 2014-08-21 07:11:58 +0000 |
commit | 32842a06a64d4351018ffb720d12aa8cd6011743 (patch) | |
tree | 17f321757982040661e927c7a12d6514565d681d /server | |
parent | c532e42ec703079eb024ca8e1f03442d493a40e7 (diff) | |
download | vaadin-framework-32842a06a64d4351018ffb720d12aa8cd6011743.tar.gz vaadin-framework-32842a06a64d4351018ffb720d12aa8cd6011743.zip |
Add event originator information to Sort Events (#13334)
Change-Id: I9f8a295d6944807ccf89ea535d5500fac013e127
Diffstat (limited to 'server')
-rw-r--r-- | server/src/com/vaadin/ui/components/grid/Grid.java | 21 | ||||
-rw-r--r-- | server/src/com/vaadin/ui/components/grid/SortOrderChangeEvent.java | 21 |
2 files changed, 34 insertions, 8 deletions
diff --git a/server/src/com/vaadin/ui/components/grid/Grid.java b/server/src/com/vaadin/ui/components/grid/Grid.java index fba6eed462..3c115f9241 100644 --- a/server/src/com/vaadin/ui/components/grid/Grid.java +++ b/server/src/com/vaadin/ui/components/grid/Grid.java @@ -49,6 +49,7 @@ import com.vaadin.shared.ui.grid.GridStaticCellType; import com.vaadin.shared.ui.grid.HeightMode; import com.vaadin.shared.ui.grid.ScrollDestination; import com.vaadin.shared.ui.grid.SortDirection; +import com.vaadin.shared.ui.grid.SortEventOriginator; import com.vaadin.ui.AbstractComponent; import com.vaadin.ui.Component; import com.vaadin.ui.HasComponents; @@ -373,7 +374,8 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, } @Override - public void sort(String[] columnIds, SortDirection[] directions) { + public void sort(String[] columnIds, SortDirection[] directions, + SortEventOriginator originator) { assert columnIds.length == directions.length; List<SortOrder> order = new ArrayList<SortOrder>( @@ -383,7 +385,7 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, order.add(new SortOrder(propertyId, directions[i])); } - setSortOrder(order); + setSortOrder(order, originator); } }); } @@ -439,7 +441,7 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, } } - sort(); + sort(SortEventOriginator.INTERNAL); } else { // If the new container is not sortable, we'll just re-set the sort @@ -1126,7 +1128,7 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, */ public void clearSortOrder() { sortOrder.clear(); - sort(); + sort(false); } /** @@ -1140,6 +1142,11 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, * a sort order list. */ public void setSortOrder(List<SortOrder> order) { + setSortOrder(order, SortEventOriginator.API); + } + + private void setSortOrder(List<SortOrder> order, + SortEventOriginator originator) { if (!(getContainerDatasource() instanceof Container.Sortable)) { throw new IllegalStateException( "Attached container is not sortable (does not implement Container.Sortable)"); @@ -1164,7 +1171,7 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, } sortOrder.addAll(order); - sort(); + sort(originator); } /** @@ -1179,7 +1186,7 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, /** * Apply sorting to data source. */ - private void sort() { + private void sort(SortEventOriginator originator) { Container c = getContainerDatasource(); if (c instanceof Container.Sortable) { @@ -1215,7 +1222,7 @@ public class Grid extends AbstractComponent implements SelectionChangeNotifier, cs.sort(propertyIds, directions); fireEvent(new SortOrderChangeEvent(this, new ArrayList<SortOrder>( - sortOrder))); + sortOrder), originator)); getState().sortColumns = columnKeys; getState(false).sortDirs = stateDirs; diff --git a/server/src/com/vaadin/ui/components/grid/SortOrderChangeEvent.java b/server/src/com/vaadin/ui/components/grid/SortOrderChangeEvent.java index 71afa10a9b..690fcdf1c4 100644 --- a/server/src/com/vaadin/ui/components/grid/SortOrderChangeEvent.java +++ b/server/src/com/vaadin/ui/components/grid/SortOrderChangeEvent.java @@ -17,6 +17,7 @@ package com.vaadin.ui.components.grid; import java.util.List; +import com.vaadin.shared.ui.grid.SortEventOriginator; import com.vaadin.ui.Component; import com.vaadin.ui.components.grid.sort.SortOrder; @@ -31,6 +32,7 @@ import com.vaadin.ui.components.grid.sort.SortOrder; public class SortOrderChangeEvent extends Component.Event { private final List<SortOrder> sortOrder; + private final SortEventOriginator originator; /** * Creates a new sort order change event for a grid and a sort order list. @@ -39,10 +41,15 @@ public class SortOrderChangeEvent extends Component.Event { * the grid from which the event originates * @param sortOrder * the new sort order list + * @param wasInitiatedByUser + * should be set to true if this event results from end-user + * interaction instead of an API call or side effect */ - public SortOrderChangeEvent(Grid grid, List<SortOrder> sortOrder) { + public SortOrderChangeEvent(Grid grid, List<SortOrder> sortOrder, + SortEventOriginator originator) { super(grid); this.sortOrder = sortOrder; + this.originator = originator; } /** @@ -54,4 +61,16 @@ public class SortOrderChangeEvent extends Component.Event { return sortOrder; } + /** + * Gets a value describing the originator of this event, i.e. what actions + * resulted in this event being fired. + * + * @return a sort event originator value + * + * @see SortEventOriginator + */ + public SortEventOriginator getOriginator() { + return originator; + } + } |