import java.util.ArrayList;
import java.util.Collection;
+import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
private Collection<SpecimenNodeWrapper> selectedSpecimens = new ArrayList<>();
private CharacterMatrix matrix;
private Text txtTextFilter;
- private List<String> treeIndex;
+ private List<String> treeIndexList;
+ private List<String> taxonTitleList;
+ private Label l_title;
- public SpecimenSelectionDialog(Shell parentShell, CharacterMatrix matrix, List<String> treeIndex) {
+ public SpecimenSelectionDialog(Shell parentShell, CharacterMatrix matrix, List<String> treeIndex, List<String> taxonTitleList) {
super(parentShell);
this.matrix = matrix;
- this.treeIndex = treeIndex;
+ this.treeIndexList = treeIndex;
+ this.taxonTitleList = taxonTitleList;
}
@Override
GridLayout gl_composite = new GridLayout();
gl_composite.numColumns = 2;
composite.setLayout(gl_composite);
-
+ l_title = new Label(composite, SWT.NULL);
+ if (taxonTitleList != null && !taxonTitleList.isEmpty()){
+ Iterator<String> iterator = taxonTitleList.iterator();
+ String titleString=iterator.next();
+ while(iterator.hasNext() ){
+ titleString += ", "+ iterator.next();
+ }
+ l_title.setText("Taxon Filter: " + titleString);
+ }
Composite composite_1 = new Composite(composite, SWT.NONE);
composite_1.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
composite_1.setLayout(new GridLayout(5, false));
@Override
public void widgetSelected(SelectionEvent e) {
loadSpecimens();
- refreshInput(matrix.getSpecimenCache());
+ refreshInput();
}
});
- Button btnRemoveTaxonFilterButton = new Button(composite_1, SWT.NONE);
- btnRemoveTaxonFilterButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
- btnRemoveTaxonFilterButton.setToolTipText(Messages.SpecimenSelectionDialog_REMOVE_FILTER);
- btnRemoveTaxonFilterButton.setImage(ImageResources.getImage(ImageResources.TRASH_ICON));
- btnRemoveTaxonFilterButton.addSelectionListener(new SelectionAdapter() {
+ Button btnRemoveFilterButton = new Button(composite_1, SWT.NONE);
+ btnRemoveFilterButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ btnRemoveFilterButton.setToolTipText(Messages.SpecimenSelectionDialog_REMOVE_FILTER);
+ btnRemoveFilterButton.setImage(ImageResources.getImage(ImageResources.TRASH_ICON));
+ btnRemoveFilterButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
txtTextFilter.setText("");
- refreshInput(matrix.getSpecimenCache());
+ treeIndexList = null;
+ l_title.setText("");
+ refreshInput();
}
});
if(matrix.getSpecimenCache()==null){
loadSpecimens();
}
- if(treeIndex !=null){
- filterByTaxonNode(treeIndex, null);
+ if(treeIndexList !=null){
+ filterByTaxonNode( null);
}else{
- refreshInput(matrix.getSpecimenCache());
+ refreshInput();
}
columnSpecimen.getColumn().pack();
return composite;
}
- private void refreshInput(Object input){
- list.setInput(input);
+ private void refreshInput(){
+ applyFilter();
}
private void applyFilter(){
Collection<SpecimenNodeWrapper> specimenCache = matrix.getSpecimenCache();
String text = txtTextFilter.getText();
- //filter for treeIndex is missing
+ //filter for treeIndexList is missing
if(CdmUtils.isBlank(text)){
result = new ArrayList<>(specimenCache);
}
.collect(Collectors.toList()));
}
}
- filterByTaxonNode(treeIndex, result);
+ filterByTaxonNode(result);
}
}
}
- private void filterByTaxonNode(List<String> treeIndexList, Collection<SpecimenNodeWrapper> specimenCache){
+ private void filterByTaxonNode( Collection<SpecimenNodeWrapper> specimenCache){
Collection<SpecimenNodeWrapper> result = new ArrayList<>();
if (specimenCache == null){
specimenCache = matrix.getSpecimenCache();
}
- for (String treeIndex: treeIndexList){
- if (StringUtils.isNotBlank(treeIndex)){
- result.addAll(specimenCache.stream()
- .filter(wrapper->wrapper.getTaxonNode().getTreeIndex().startsWith(treeIndex))
- .collect(Collectors.toList()));
+ if (treeIndexList != null){
+ for (String treeIndex: this.treeIndexList){
+ if (StringUtils.isNotBlank(treeIndex)){
+ result.addAll(specimenCache.stream()
+ .filter(wrapper->wrapper.getTaxonNode().getTreeIndex().startsWith(treeIndex))
+ .collect(Collectors.toList()));
+ }
}
+ }else{
+ result.addAll(specimenCache);
}
- refreshInput(result);
+ list.setInput(result);
}
}
CharacterMatrix matrix = matrixPart.getMatrix();
IStructuredSelection selection = matrixPart.getSelection();
List<String> treeIndexList = null;
+ List<String> taxonTitleList = null;
if(selection.size()>0){
treeIndexList = new ArrayList<>();
+ taxonTitleList = new ArrayList<>();
Iterator iterator = selection.iterator();
while (iterator.hasNext()){
Object element = iterator.next();
TaxonNodeDto taxonRow = (TaxonNodeDto) element;
String treeIndex = taxonRow.getTreeIndex();
treeIndexList.add(treeIndex);
+ taxonTitleList.add(taxonRow.getNameCache());
}
}
}
- SpecimenSelectionDialog dialog = new SpecimenSelectionDialog(matrix.getShell(), matrix, treeIndexList);
+ SpecimenSelectionDialog dialog = new SpecimenSelectionDialog(matrix.getShell(), matrix, treeIndexList, taxonTitleList);
if(dialog.open()==Window.OK){
Collection<SpecimenNodeWrapper> wrappers = dialog.getSpecimen();
if(wrappers.stream().anyMatch(wrapper->wrapper.getTaxonDescriptionUuid()==null)