diff options
| author | Dirk Fauth | 2022-11-10 09:00:23 +0000 |
|---|---|---|
| committer | Dirk Fauth | 2022-11-10 09:00:23 +0000 |
| commit | 40eb716758467093ca42409d2fbf5293c4747266 (patch) | |
| tree | 3493eac68a2130e7a9aecd67dc9629529098bd3f | |
| parent | 876e8b3c20b15b4746c91b3c32fa1f09e9189c21 (diff) | |
| download | org.eclipse.nebula.widgets.nattable-40eb716758467093ca42409d2fbf5293c4747266.tar.gz org.eclipse.nebula.widgets.nattable-40eb716758467093ca42409d2fbf5293c4747266.tar.xz org.eclipse.nebula.widgets.nattable-40eb716758467093ca42409d2fbf5293c4747266.zip | |
Bug 581023 - Not possible to simply clear filter of "Excel-like" filters
Signed-off-by: Dirk Fauth <dirk.fauth@googlemail.com>
Change-Id: Ifee36b863ff60266258e46c6f9175f828c745323
2 files changed, 33 insertions, 2 deletions
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowPainter.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowPainter.java index 2ee38b2e..2c44a742 100644 --- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowPainter.java +++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowPainter.java @@ -54,6 +54,15 @@ public class FilterRowPainter extends CellPainterWrapper { new CellPainterDecorator(new TextPainter(), CellEdgeEnum.RIGHT, filterIconPainter)); } + // TODO 2.1 add constructor to also pass the base painter + // public FilterRowPainter(ICellPainter basePainter, ImagePainter + // filterIconPainter) { + // this.filterIconPainter = filterIconPainter; + // setWrappedPainter( + // new CellPainterDecorator(basePainter, CellEdgeEnum.RIGHT, + // filterIconPainter)); + // } + /** * * @return The {@link ImagePainter} that is used to paint the icon in the diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/ComboBoxFilterRowConfiguration.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/ComboBoxFilterRowConfiguration.java index e04daad5..931ff9e5 100644 --- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/ComboBoxFilterRowConfiguration.java +++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/ComboBoxFilterRowConfiguration.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013, 2020 Dirk Fauth and others. + * Copyright (c) 2013, 2022 Dirk Fauth and others. * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -18,8 +18,11 @@ import org.eclipse.nebula.widgets.nattable.config.IConfigRegistry; import org.eclipse.nebula.widgets.nattable.edit.EditConfigAttributes; import org.eclipse.nebula.widgets.nattable.edit.editor.ICellEditor; import org.eclipse.nebula.widgets.nattable.edit.editor.IComboBoxDataProvider; +import org.eclipse.nebula.widgets.nattable.filterrow.FilterRowPainter; import org.eclipse.nebula.widgets.nattable.filterrow.TextMatchingMode; +import org.eclipse.nebula.widgets.nattable.filterrow.action.ClearFilterAction; import org.eclipse.nebula.widgets.nattable.filterrow.config.FilterRowConfigAttributes; +import org.eclipse.nebula.widgets.nattable.filterrow.event.ClearFilterIconMouseEventMatcher; import org.eclipse.nebula.widgets.nattable.grid.GridRegion; import org.eclipse.nebula.widgets.nattable.layer.cell.ILayerCell; import org.eclipse.nebula.widgets.nattable.painter.cell.ICellPainter; @@ -27,6 +30,7 @@ import org.eclipse.nebula.widgets.nattable.painter.cell.ImagePainter; import org.eclipse.nebula.widgets.nattable.painter.cell.TextPainter; import org.eclipse.nebula.widgets.nattable.painter.cell.decorator.CellPainterDecorator; import org.eclipse.nebula.widgets.nattable.style.DisplayMode; +import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry; import org.eclipse.nebula.widgets.nattable.ui.util.CellEdgeEnum; import org.eclipse.swt.graphics.GC; @@ -49,6 +53,14 @@ public class ComboBoxFilterRowConfiguration extends AbstractRegistryConfiguratio */ protected ImagePainter filterIconPainter; + // TODO 2.1 change visibility to protected + /** + * The {@link FilterRowPainter} used for painting cells in the filter row. + * Supports rendering of additional filter state based icons and is needed + * to support specific actions based on the filter states. + */ + private FilterRowPainter filterRowPainter; + /** * The empty default constructor needed for specialising. * <p> @@ -123,11 +135,21 @@ public class ComboBoxFilterRowConfiguration extends AbstractRegistryConfiguratio } }, CellEdgeEnum.RIGHT, this.filterIconPainter); + // TODO 2.1 use new constructor after update + this.filterRowPainter = new FilterRowPainter(this.filterIconPainter); + this.filterRowPainter.setWrappedPainter(cellPainter); + configRegistry.registerConfigAttribute( CellConfigAttributes.CELL_PAINTER, - cellPainter, + this.filterRowPainter, DisplayMode.NORMAL, GridRegion.FILTER_ROW); } + @Override + public void configureUiBindings(UiBindingRegistry uiBindingRegistry) { + uiBindingRegistry.registerFirstSingleClickBinding( + new ClearFilterIconMouseEventMatcher(this.filterRowPainter), + new ClearFilterAction()); + } } |
