J'essaie de mettre en œuvre un filtre simple avec des listes vernies. Le filtre apparaît et je peux mettre ma chaîne de filtre dans les champs de texte. Jusque là tout fonctionne bien mais en appuyant sur Entrée, rien ne se passe. Pas de filtrage.NatTable: La table ne réagit pas au filtrage
La plupart du temps j'ai suivi l'exemple: [1] https://github.com/eclipse/nebula.widgets.nattable/blob/master/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_603_Filter/_6031_GlazedListsFilterExample.java
Je lis aussi l'article suivant: [2] http://www.eclipse.org/nattable/resources/NatTable_Advanced.pdf
maintenant à ma mise en œuvre:
Comme décrit dans [1] I emballé la liste de données dans un filterList avant qu'il soit passé à DataProvider. Après cela, j'ai construit mon bodyLayerStack avec le GlazedListsEventLayer.
EventList<T> eventList = GlazedLists.eventList(entries);
TransformedList<T, T> rowObjectsGlazedList = GlazedLists.threadSafeList(eventList);
SortedList<T> sortedList = new SortedList<T>(rowObjectsGlazedList, null);
filterList = new FilterList<T>(sortedList);
bodyDataProvider = new LogListDataProvider<>(filterList, columnPropertyAccessor);
DataLayer bodyDataLayer = new DataLayer(getBodyDataProvider());
GlazedListsEventLayer<T> glazedListsEventLayer = new GlazedListsEventLayer<T>(bodyDataLayer, filterList);
ColumnReorderLayer columnReorderLayer = new ColumnReorderLayer(glazedListsEventLayer);
ColumnHideShowLayer columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
selectionLayer = new SelectionLayer(columnHideShowLayer, false);
ViewportLayer viewportLayer = new ViewportLayer(getSelectionLayer());
La classe utilisée « LogListDataProvider » est juste une extension du ListDataProvider, je n'ajouté une méthode setter « Confirmed (liste de la liste) » parce que je rafraîchir la table après avoir créé avec son contenu.
public class LogListDataProvider<T> extends ListDataProvider<T> {
public LogListDataProvider(List<T> list, IColumnAccessor<T> columnAccessor) {
super(list, columnAccessor);
}
public void setList(List<T> list) {
this.list = list;
}
}
Pour le FilterRowHeader j'ai suivi exemple [1] et de construire un FilterRowHeaderComposite. Pour moi, il semble que j'ai suivi correctement [1] et [2], mais cela ne fonctionne pas.
Maintenant ça marche, merci! –
Une autre question (un peu hors-sujet, mais j'espère que c'est bon): Y at-il une possibilité de changer le registerConfigAttribute pour le filtre (par exemple pour la correspondance d'expression régulière ou combobox) sur l'exécution? –
Le TextMatchingMode est déterminé lors de l'exécution, il devrait donc être possible. –