mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 06:17:27 +00:00
newSelectionModel: made RefreshableSelectionModels a Listener of
ListDataProvider
This commit is contained in:
1 parent
707e7bfbbd
commit
cd77f71f88
2 files changed
+217
-23
No files matched your search
+110
-7
@@ -1,33 +1,62 @@
|
||||
package com.sap.sse.gwt.client.celltable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.event.shared.HandlerRegistration;
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.google.gwt.view.client.HasData;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.MultiSelectionModel;
|
||||
import com.google.gwt.view.client.ProvidesKey;
|
||||
import com.google.gwt.view.client.Range;
|
||||
import com.google.gwt.view.client.RangeChangeEvent.Handler;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionModel;
|
||||
|
||||
/**
|
||||
* TODO Lukas: Add Javadoc
|
||||
*
|
||||
* This {@link RefreshableMultiSelectionModel} have the property that it is refreshable. That means if the
|
||||
* {@link CellTable} have new Elements you can call
|
||||
* {@link RefreshableMultiSelectionModel#refreshSelectionModel(Iterable) refreshSelectionModel(Iterable)} and the
|
||||
* elements with {@link EntityIdentityComparator#representSameEntity(Object, Object) the same identity} will be reselected.
|
||||
*
|
||||
* @param <T>
|
||||
* the type of {@link CellTable} entries
|
||||
*/
|
||||
public class RefreshableMultiSelectionModel<T> extends MultiSelectionModel<T> implements RefreshableSelectionModel<T> {
|
||||
public class RefreshableMultiSelectionModel<T> extends MultiSelectionModel<T> implements RefreshableSelectionModel<T>, HasData<T> {
|
||||
private final EntityIdentityComparator<T> comp;
|
||||
private final ListDataProvider<T> provider;
|
||||
|
||||
/**
|
||||
* TODO Lukas: Add Javadoc
|
||||
* @param comp
|
||||
* {@link EntityIdentityComparator} to compare the identity of the objects
|
||||
* @param provider
|
||||
* {@link ListDataProvider} to register this as listener and get the entries
|
||||
*/
|
||||
public RefreshableMultiSelectionModel(EntityIdentityComparator<T> comp) {
|
||||
public RefreshableMultiSelectionModel(EntityIdentityComparator<T> comp, ListDataProvider<T> provider) {
|
||||
super();
|
||||
this.comp = comp;
|
||||
this.provider = provider;
|
||||
if (this.provider != null) {
|
||||
this.provider.addDataDisplay(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO Lukas: Add Javadoc
|
||||
* @param keyProvider
|
||||
* {@link ProvidesKey} for the super class constructor
|
||||
* @param comp
|
||||
* {@link EntityIdentityComparator} to compare the identity of the objects
|
||||
* @param provider
|
||||
* {@link ListDataProvider} to register this as listener and get the entries
|
||||
*/
|
||||
public RefreshableMultiSelectionModel(ProvidesKey<T> keyProvider, EntityIdentityComparator<T> comp) {
|
||||
public RefreshableMultiSelectionModel(ProvidesKey<T> keyProvider, EntityIdentityComparator<T> comp, ListDataProvider<T> provider) {
|
||||
super(keyProvider);
|
||||
this.comp = comp;
|
||||
this.provider = provider;
|
||||
if (this.provider != null) {
|
||||
this.provider.addDataDisplay(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -84,4 +113,78 @@ public class RefreshableMultiSelectionModel<T> extends MultiSelectionModel<T> im
|
||||
SelectionChangeEvent.fire(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRowData(int start, List<? extends T> values) {
|
||||
refreshSelectionModel(provider.getList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Range getVisibleRange() {
|
||||
return new Range(0, Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVisibleItemCount() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerRegistration addRangeChangeHandler(Handler handler) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public HandlerRegistration addRowCountChangeHandler(
|
||||
com.google.gwt.view.client.RowCountChangeEvent.Handler handler) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public boolean isRowCountExact() {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public void setRowCount(int count) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setRowCount(int count, boolean isExact) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setVisibleRange(int start, int length) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setVisibleRange(Range range) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public HandlerRegistration addCellPreviewHandler(com.google.gwt.view.client.CellPreviewEvent.Handler<T> handler) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public SelectionModel<? super T> getSelectionModel() {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public T getVisibleItem(int indexOnPage) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public Iterable<T> getVisibleItems() {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public void setSelectionModel(SelectionModel<? super T> selectionModel) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setVisibleRangeAndClearData(Range range, boolean forceRangeChangeEvent) {
|
||||
clear();
|
||||
}
|
||||
}
|
||||
+107
-16
@@ -1,30 +1,55 @@
|
||||
package com.sap.sse.gwt.client.celltable;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.event.shared.HandlerRegistration;
|
||||
import com.google.gwt.view.client.HasData;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.ProvidesKey;
|
||||
import com.google.gwt.view.client.Range;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionModel;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.google.gwt.view.client.RangeChangeEvent.Handler;
|
||||
|
||||
/**
|
||||
* TODO Lukas: Add Javadoc
|
||||
*/
|
||||
|
||||
public class RefreshableSingleSelectionModel<T> extends SingleSelectionModel<T> implements RefreshableSelectionModel<T> {
|
||||
public class RefreshableSingleSelectionModel<T> extends SingleSelectionModel<T> implements RefreshableSelectionModel<T>, HasData<T> {
|
||||
private final EntityIdentityComparator<T> comp;
|
||||
private final ListDataProvider<T> provider;
|
||||
|
||||
/**
|
||||
* TODO Lukas: Add Javadoc
|
||||
* @param comp
|
||||
* {@link EntityIdentityComparator} to compare the identity of the objects
|
||||
* @param provider
|
||||
* {@link ListDataProvider} to register this as listener and get the entries
|
||||
*/
|
||||
public RefreshableSingleSelectionModel(EntityIdentityComparator<T> comp) {
|
||||
public RefreshableSingleSelectionModel(EntityIdentityComparator<T> comp, ListDataProvider<T> provider) {
|
||||
super();
|
||||
this.comp=comp;
|
||||
this.provider = provider;
|
||||
if (this.provider != null) {
|
||||
this.provider.addDataDisplay(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO Lukas: Add Javadoc
|
||||
* @param keyProvider
|
||||
* {@link ProvidesKey} for the super class constructor
|
||||
* @param comp
|
||||
* {@link EntityIdentityComparator} to compare the identity of the objects
|
||||
* @param provider
|
||||
* {@link ListDataProvider} to register this as listener and get the entries
|
||||
*/
|
||||
public RefreshableSingleSelectionModel(ProvidesKey<T> keyProvider, EntityIdentityComparator<T> comp) {
|
||||
public RefreshableSingleSelectionModel(ProvidesKey<T> keyProvider, EntityIdentityComparator<T> comp, ListDataProvider<T> provider) {
|
||||
super(keyProvider);
|
||||
this.comp =comp;
|
||||
this.provider = provider;
|
||||
if (this.provider != null) {
|
||||
this.provider.addDataDisplay(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,16 +62,8 @@ public class RefreshableSingleSelectionModel<T> extends SingleSelectionModel<T>
|
||||
if (comp == null) {
|
||||
super.setSelected(item, selected);
|
||||
} else {
|
||||
T wasSelectedBefore = null;
|
||||
Set<T> selectedSet = getSelectedSet();
|
||||
for (T it : selectedSet) {
|
||||
if(comp.representSameEntity(it, item)) {
|
||||
wasSelectedBefore = it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(wasSelectedBefore == null) {
|
||||
super.setSelected(wasSelectedBefore, false); //This old version of item will be deleted with the next clear()
|
||||
if(comp.representSameEntity(getSelectedObject(), item)) {
|
||||
super.setSelected(getSelectedObject(), false); //This old version of item will be deleted with the next clear()
|
||||
super.setSelected(item, selected);
|
||||
} else {
|
||||
super.setSelected(item, selected);
|
||||
@@ -69,4 +86,78 @@ public class RefreshableSingleSelectionModel<T> extends SingleSelectionModel<T>
|
||||
}
|
||||
SelectionChangeEvent.fire(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRowData(int start, List<? extends T> values) {
|
||||
refreshSelectionModel(provider.getList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Range getVisibleRange() {
|
||||
return new Range(0, Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getVisibleItemCount() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerRegistration addRangeChangeHandler(Handler handler) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public HandlerRegistration addRowCountChangeHandler(
|
||||
com.google.gwt.view.client.RowCountChangeEvent.Handler handler) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public boolean isRowCountExact() {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public void setRowCount(int count) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setRowCount(int count, boolean isExact) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setVisibleRange(int start, int length) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setVisibleRange(Range range) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public HandlerRegistration addCellPreviewHandler(com.google.gwt.view.client.CellPreviewEvent.Handler<T> handler) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public SelectionModel<? super T> getSelectionModel() {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public T getVisibleItem(int indexOnPage) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public Iterable<T> getVisibleItems() {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public void setSelectionModel(SelectionModel<? super T> selectionModel) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void setVisibleRangeAndClearData(Range range, boolean forceRangeChangeEvent) {
|
||||
clear();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user