summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorPatrik Lindström <patrik@vaadin.com>2014-08-18 16:04:28 +0300
committerHenrik Paul <henrik@vaadin.com>2014-08-21 07:11:58 +0000
commit32842a06a64d4351018ffb720d12aa8cd6011743 (patch)
tree17f321757982040661e927c7a12d6514565d681d /server
parentc532e42ec703079eb024ca8e1f03442d493a40e7 (diff)
downloadvaadin-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.java21
-rw-r--r--server/src/com/vaadin/ui/components/grid/SortOrderChangeEvent.java21
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;
+ }
+
}