import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.layout.GridDataFactory;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
+import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.taxon.Taxon;
txtTextFilter = new Text(composite_1, SWT.BORDER);
txtTextFilter.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ txtTextFilter.addModifyListener(e->applyFilter());
comboTaxon = new TaxonNodeCombo(composite_1, SWT.NONE);
comboTaxon.setInput(matrix.getWorkingSet().getTaxonSubtreeFilter());
- comboTaxon.addSelectionChangedListener(e->
- list.setInput(
- matrix.getSpecimenCache()
- .stream()
- .filter(wrapper->wrapper.getTaxonNode().equals(comboTaxon.getSelection()))
- .collect(Collectors.toList()))
- );
+ comboTaxon.addSelectionChangedListener(e->applyFilter());
Button btnRefreshButton = new Button(composite_1, SWT.NONE);
btnRefreshButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
//table
list = new TableViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
Table table = list.getTable();
- table.setLayoutData(GridDataFactory.fillDefaults().create());
+ GridData gd_table = GridDataFactory.fillDefaults().create();
+ gd_table.grabExcessHorizontalSpace = true;
+ gd_table.grabExcessVerticalSpace = true;
+ table.setLayoutData(gd_table);
//table columns
TableViewerColumn columnTaxon = new TableViewerColumn(list, SWT.NONE);
columnTaxon.getColumn().setText("Taxon");
return composite;
}
+ private void applyFilter(){
+ Stream<SpecimenWrapper> filteredWrappers =matrix.getSpecimenCache().stream();
+ if(comboTaxon.getSelection()!=null){
+ filteredWrappers =
+ filteredWrappers
+ .filter(wrapper->wrapper.getTaxonNode().equals(comboTaxon.getSelection()));
+ }
+ if(!CdmUtils.isBlank(txtTextFilter.getText())){
+ filteredWrappers =
+ filteredWrappers
+ .filter(wrapper->wrapper.getLabel().toLowerCase().contains(txtTextFilter.getText().toLowerCase()));
+ }
+ list.setInput(filteredWrappers.collect(Collectors.toList()));
+ }
+
private void loadSpecimens(){
List<SpecimenWrapper> specimenCache = new ArrayList<>();
//set filter parameters