import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import eu.etaxonomy.taxeditor.model.ImageResources;
import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.combo.taxon.TaxonNodeCombo;
/**
* Dialog to choose specimens for the character matrix.<br>
private CharacterMatrix matrix;
private Text txtTextFilter;
- private TaxonNodeCombo comboTaxon;
+// private TaxonNodeCombo comboTaxon;
protected SpecimenSelectionDialog(Shell parentShell, CharacterMatrix matrix) {
super(parentShell);
Composite composite_1 = new Composite(composite, SWT.NONE);
composite_1.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
- composite_1.setLayout(new GridLayout(4, false));
+ composite_1.setLayout(new GridLayout(2, false));
Label lblNewLabel = new Label(composite_1, SWT.NONE);
- lblNewLabel.setText("Taxon");
+ lblNewLabel.setText("Refresh");
- comboTaxon = new TaxonNodeCombo(composite_1, SWT.NONE);
- comboTaxon.setInput(matrix.getDescriptiveDataSet().getTaxonSubtreeFilter());
- comboTaxon.addSelectionChangedListener(e->applyFilter());
+ // FIXME temporary disabled taxon filter because of performance issues
+// comboTaxon = new TaxonNodeCombo(composite_1, SWT.NONE);
+// comboTaxon.setInput(matrix.getDescriptiveDataSet().getTaxonSubtreeFilter());
+// comboTaxon.addSelectionChangedListener(e->applyFilter());
txtTextFilter = new Text(composite_1, SWT.BORDER);
txtTextFilter.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
}
private void applyFilter(){
- Collection<SpecimenNodeWrapper> specimenCache = matrix.getSpecimenCache();
List<SpecimenNodeWrapper> result = new ArrayList<>();
- if(comboTaxon.getSelection()!=null){
- result.addAll(specimenCache.stream()
- .filter(wrapper->wrapper.getTaxonNode().equals(comboTaxon.getSelection()))
- .collect(Collectors.toList()));
+ Collection<SpecimenNodeWrapper> specimenCache = matrix.getSpecimenCache();
+ if(CdmUtils.isBlank(txtTextFilter.getText())){
+ result = new ArrayList<>(specimenCache);
}
- if(!txtTextFilter.getForeground().equals(AbstractUtility.getColor(Resources.SEARCH_VIEW_FOREGROUND))
- &&!CdmUtils.isBlank(txtTextFilter.getText())){
- result.addAll(specimenCache.stream()
- .filter(wrapper->wrapper.getUuidAndTitleCache().getTitleCache().toLowerCase().contains(txtTextFilter.getText().toLowerCase()))
- .collect(Collectors.toList()));
+ else{
+ // if(comboTaxon.getSelection()!=null){
+ // result.addAll(specimenCache.stream()
+ // .filter(wrapper->wrapper.getTaxonNode().equals(comboTaxon.getSelection()))
+ // .collect(Collectors.toList()));
+ // }
+ if(!txtTextFilter.getForeground().equals(AbstractUtility.getColor(Resources.SEARCH_VIEW_FOREGROUND))
+ &&!CdmUtils.isBlank(txtTextFilter.getText())){
+ result.addAll(specimenCache.stream()
+ .filter(wrapper->wrapper.getUuidAndTitleCache().getTitleCache().toLowerCase().contains(txtTextFilter.getText().toLowerCase()))
+ .collect(Collectors.toList()));
+ result.addAll(specimenCache.stream()
+ .filter(wrapper->wrapper.getTaxonNode().getTaxon().getTitleCache().toLowerCase().contains(txtTextFilter.getText().toLowerCase()))
+ .collect(Collectors.toList()));
+ }
}
list.setInput(result);
}
private void loadSpecimens(){
- Collection<SpecimenNodeWrapper> specimenCache = CdmStore.getService(IDescriptiveDataSetService.class).loadSpecimens(matrix.getDescriptiveDataSet());
- matrix.setSpecimenCache(specimenCache);
+ ArrayList<SpecimenNodeWrapper> specimenList = new ArrayList<>(CdmStore.getService(IDescriptiveDataSetService.class).loadSpecimens(matrix.getDescriptiveDataSet()));
+ Collections.sort(specimenList, new Comparator<SpecimenNodeWrapper>() {
+
+ @Override
+ public int compare(SpecimenNodeWrapper o1, SpecimenNodeWrapper o2) {
+ if(o1 == null){
+ if(o2 == null){
+ return 0;
+ }
+ return -1;
+ }
+ if(o2==null){
+ return 1;
+ }
+ try{
+ return o1.getTaxonNode().getTaxon().getTitleCache().compareTo(o2.getTaxonNode().getTaxon().getTitleCache());
+ }
+ catch(NullPointerException e){
+ return 0;
+ }
+ }
+ });
+ matrix.setSpecimenCache(specimenList);
}
@Override