Skip to content

Commit eec6844

Browse files
jcgueriaud1javier-godoy
authored andcommitted
Add isFromClient flag
1 parent 74edbf7 commit eec6844

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/main/java/com/flowingcode/vaadin/addons/twincolgrid/TwinColGrid.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,9 @@ public enum Orientation {
151151

152152
private Orientation orientation = Orientation.HORIZONTAL;
153153

154-
private boolean autoResize = false;
154+
private boolean autoResize = false;
155+
156+
private boolean isFromClient = false;
155157

156158
private static <T> ListDataProvider<T> emptyDataProvider() {
157159
return DataProvider.ofCollection(new LinkedHashSet<>());
@@ -233,21 +235,21 @@ public TwinColGrid(String caption, @NonNull Grid<T> availableGrid,
233235
e -> {
234236
List<T> filteredItems = available.getDataProvider().withConfigurableFilter()
235237
.fetch(new Query<>()).collect(Collectors.toList());
236-
updateSelection(new LinkedHashSet<>(filteredItems), new HashSet<>());
238+
updateSelection(new LinkedHashSet<>(filteredItems), new HashSet<>(), true);
237239
});
238240

239241
addButton.addClickListener(
240242
e ->
241243
updateSelection(
242-
new LinkedHashSet<>(getAvailableGrid().getSelectedItems()), new HashSet<>()));
244+
new LinkedHashSet<>(getAvailableGrid().getSelectedItems()), new HashSet<>(), true));
243245

244246
removeButton.addClickListener(
245-
e -> updateSelection(new HashSet<>(), getSelectionGrid().getSelectedItems()));
247+
e -> updateSelection(new HashSet<>(), getSelectionGrid().getSelectedItems(), true));
246248

247249
removeAllButton.addClickListener(
248250
e -> {
249251
List<T> filteredItems= selection.getDataProvider().withConfigurableFilter().fetch(new Query<>()).collect(Collectors.toList());
250-
updateSelection(new HashSet<>(), new HashSet<>(filteredItems));
252+
updateSelection(new HashSet<>(), new HashSet<>(filteredItems), true);
251253
});
252254

253255
getElement().getStyle().set("display", "flex");
@@ -460,7 +462,7 @@ public void removeRightGridClassName(String classname) {
460462
}
461463

462464
public void clearAll() {
463-
updateSelection(new HashSet<>(), new HashSet<>(selection.getItems()));
465+
updateSelection(new HashSet<>(), new HashSet<>(selection.getItems()), false);
464466
}
465467

466468
private void setDataProvider(ListDataProvider<T> dataProvider) {
@@ -710,7 +712,7 @@ public void setValue(final Set<T> value) {
710712
.collect(Collectors.toCollection(LinkedHashSet::new));
711713
final Set<T> oldValues = new LinkedHashSet<>(selection.getItems());
712714
oldValues.removeAll(newValues);
713-
updateSelection(newValues, oldValues);
715+
updateSelection(newValues, oldValues, false);
714716
}
715717

716718
/**
@@ -762,7 +764,7 @@ public Registration addValueChangeListener(
762764
.addDataProviderListener(
763765
e -> {
764766
ComponentValueChangeEvent<TwinColGrid<T>, Set<T>> e2 =
765-
new ComponentValueChangeEvent<>(TwinColGrid.this, TwinColGrid.this, null, true);
767+
new ComponentValueChangeEvent<>(TwinColGrid.this, TwinColGrid.this, null, isFromClient);
766768
listener.valueChanged(e2);
767769
});
768770
}
@@ -792,7 +794,8 @@ public void setRequiredIndicatorVisible(boolean requiredIndicatorVisible) {
792794
getElement().setAttribute("required", requiredIndicatorVisible);
793795
}
794796

795-
private void updateSelection(final Set<T> addedItems, final Set<T> removedItems) {
797+
private void updateSelection(final Set<T> addedItems, final Set<T> removedItems, boolean isFromClient) {
798+
this.isFromClient = isFromClient;
796799
available.getItems().addAll(removedItems);
797800
available.getItems().removeAll(addedItems);
798801

@@ -850,6 +853,7 @@ private void configDragAndDrop(
850853
targetModel.grid.addDropListener(
851854
event -> {
852855
if (!draggedItems.isEmpty()) {
856+
isFromClient = true;
853857
targetModel.droppedInsideGrid = true;
854858
T dropOverItem = event.getDropTargetItem().orElse(null);
855859
addItems(targetModel, draggedItems, dropOverItem, event.getDropLocation());
@@ -862,6 +866,7 @@ private void configDragAndDrop(
862866
&& event.getSource() == draggedGrid
863867
&& !draggedItems.contains(dropOverItem)
864868
&& !draggedItems.isEmpty()) {
869+
isFromClient = true;
865870
sourceModel.getItems().removeAll(draggedItems);
866871
addItems(sourceModel, draggedItems, dropOverItem, event.getDropLocation());
867872
draggedItems.clear();

0 commit comments

Comments
 (0)