diff --git a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java index 191e071..ebc7619 100644 --- a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java +++ b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java @@ -260,7 +260,6 @@ private Filter generateNumberFilter(Property field, Object propertyId, Object String gtValue = interval.getGreaterThanValue(); String eqValue = interval.getEqualsValue(); Class typeClass = owner.getContainerDataSource().getType(propertyId); - ; if (!eqValue.isEmpty()) { return new Compare.Equal(propertyId, parseNumberValue(typeClass, eqValue)); diff --git a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java index a7d7924..09e2db1 100644 --- a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java +++ b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java @@ -75,9 +75,9 @@ public FilterTable(String caption) { java.lang.reflect.Field field = com.vaadin.v7.ui.Table.class.getDeclaredField("columnIdMap"); field.setAccessible(true); _columnIdMap = (KeyMapper) field.get(this); - field = com.vaadin.v7.ui.Table.class.getDeclaredField("visibleComponents"); - field.setAccessible(true); - _visibleComponents = (HashSet) field.get(this); + //field = Table.class.getDeclaredField("visibleComponents"); // In Table constructor "visibleComponents" is always null ! + //field.setAccessible(true); + //_visibleComponents = (HashSet) field.get(this); } catch (Exception exception) { throw new IllegalArgumentException("Unable to get columnIdMap or visibleComponents", exception); } @@ -85,6 +85,21 @@ public FilterTable(String caption) { initDone = true; } + @Override + protected void refreshRenderedCells() { + super.refreshRenderedCells(); + + // NOTE: 'visibleComponents' HashSet is (re)created by method getVisibleCellsNoCache(...) + // But only when method refreshRenderedCells() calls it. + try { + java.lang.reflect.Field field = com.vaadin.v7.ui.Table.class.getDeclaredField("visibleComponents"); + field.setAccessible(true); + _visibleComponents = (HashSet) field.get(this); + } catch (Exception exception) { + throw new IllegalArgumentException("Unable to get visibleComponents", exception); + } + } + @Override public void paintContent(PaintTarget target) throws PaintException { super.paintContent(target); @@ -363,7 +378,7 @@ public void setVisibleColumns(Object... visibleColumns) { /* Set this as parent to visible columns */ for (Object key : visibleColumns) { Component filter = columnIdToFilterMap.get(key); - if (filter != null) { + if (filter != null && isFilterBarVisible()) { filter.setParent(this); } } diff --git a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTreeTable.java b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTreeTable.java index 6e95392..4e2c12c 100644 --- a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTreeTable.java +++ b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTreeTable.java @@ -79,9 +79,9 @@ public FilterTreeTable(String caption) { java.lang.reflect.Field field = com.vaadin.v7.ui.Table.class.getDeclaredField("columnIdMap"); field.setAccessible(true); _columnIdMap = (KeyMapper) field.get(this); - field = com.vaadin.v7.ui.Table.class.getDeclaredField("visibleComponents"); - field.setAccessible(true); - _visibleComponents = (HashSet) field.get(this); + //field = Table.class.getDeclaredField("visibleComponents"); // In Table constructor "visibleComponents" is always null ! + //field.setAccessible(true); + //_visibleComponents = (HashSet) field.get(this); } catch (Exception exception) { throw new IllegalArgumentException("Unable to get columnIdMap or visibleComponents", exception); } @@ -89,6 +89,21 @@ public FilterTreeTable(String caption) { initDone = true; } + @Override + protected void refreshRenderedCells() { + super.refreshRenderedCells(); + + // NOTE: 'visibleComponents' HashSet is (re)created by method getVisibleCellsNoCache(...) + // But only when method refreshRenderedCells() calls it. + try { + java.lang.reflect.Field field = com.vaadin.v7.ui.Table.class.getDeclaredField("visibleComponents"); + field.setAccessible(true); + _visibleComponents = (HashSet) field.get(this); + } catch (Exception exception) { + throw new IllegalArgumentException("Unable to get visibleComponents", exception); + } + } + @Override public void paintContent(PaintTarget target) throws PaintException { super.paintContent(target);