package eu.etaxonomy.taxeditor.editor.view.derivate.searchFilter;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
*
*/
public class DerivateSearchComposite extends Composite {
+
+ public static final int ALL_SPECIMENS = 0;
+ public static final int ASSIGNED_SPECIMENS = 1;
+ public static final int UNASSIGNED_SPECIMENS = 2;
+
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
private final Text searchField;
private final Combo comboDerivateType;
private final Button buttonSearch;
- private final Button btnFilterUndeterminedSpecimen;
private final Text textTaxonName;
private final Button btnBrowseTaxa;
private final Label lblTaxon;
private final Label lblDerivateType;
private final Button btnClearTaxon;
+ private Label lblNewLabel;
+ private Combo comboTaxonAssignment;
/**
* Create the composite.
+ *
* @param parent
* @param style
*/
public DerivateSearchComposite(Composite parent, int style) {
super(parent, style);
- setLayout(new GridLayout(4, false));
+ setLayout(new GridLayout(7, false));
lblTaxon = new Label(this, SWT.NONE);
lblTaxon.setText("Taxon");
textTaxonName.setText("");
btnBrowseTaxa = formToolkit.createButton(this, "", SWT.NONE);
+ btnBrowseTaxa.setAlignment(SWT.RIGHT);
btnBrowseTaxa.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/open.gif"));
btnClearTaxon = formToolkit.createButton(this, "", SWT.NONE);
- btnClearTaxon.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
+ btnClearTaxon.setAlignment(SWT.RIGHT);
+ btnClearTaxon.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false, 1, 1));
btnClearTaxon.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/trash.gif"));
+ lblNewLabel = new Label(this, SWT.NONE);
+ lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ formToolkit.adapt(lblNewLabel, true, true);
+ lblNewLabel.setText("Taxon assignment");
+
+ comboTaxonAssignment = new Combo(this, SWT.NONE);
+ comboTaxonAssignment.setItems(new String[] { "Yes", "No", "All" });
+ comboTaxonAssignment.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ formToolkit.adapt(comboTaxonAssignment);
+ formToolkit.paintBordersFor(comboTaxonAssignment);
+ comboTaxonAssignment.select(ALL_SPECIMENS);
+ new Label(this, SWT.NONE);
+
+ searchField = formToolkit.createText(this, "New Text", SWT.NONE);
+ searchField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
+ searchField.setText("");
+ new Label(this, SWT.NONE);
+ new Label(this, SWT.NONE);
+
lblDerivateType = new Label(this, SWT.NULL);
+ lblDerivateType.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblDerivateType.setText("Derivative Type");
comboDerivateType = new Combo(this, SWT.READ_ONLY);
comboDerivateType.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
formToolkit.paintBordersFor(comboDerivateType);
- btnFilterUndeterminedSpecimen = new Button(this, SWT.CHECK);
- btnFilterUndeterminedSpecimen.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
- btnFilterUndeterminedSpecimen.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- }
- });
- btnFilterUndeterminedSpecimen.setText("Determined");
-
- buttonSearch = new Button(this, SWT.NONE);
- formToolkit.adapt(buttonSearch, true, true);
- buttonSearch.setText("Search");
-
- searchField = formToolkit.createText(this, "New Text", SWT.NONE);
- searchField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
- searchField.setText("");
- new Label(this, SWT.NONE);
- new Label(this, SWT.NONE);
+ buttonSearch = new Button(this, SWT.NONE);
+ formToolkit.adapt(buttonSearch, true, true);
+ buttonSearch.setText("Search");
}
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
+
public Text getSearchField() {
return searchField;
}
+
public Combo getComboDerivateType() {
return comboDerivateType;
}
+
public Button getButtonSearch() {
return buttonSearch;
}
@Override
- public void setEnabled(boolean enabled){
+ public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
searchField.setEnabled(enabled);
comboDerivateType.setEnabled(enabled);
buttonSearch.setEnabled(enabled);
- btnFilterUndeterminedSpecimen.setEnabled(enabled);
btnBrowseTaxa.setEnabled(enabled);
lblTaxon.setEnabled(enabled);
lblDerivateType.setEnabled(enabled);
}
- public Button getBtnFilterUndeterminedSpecimen() {
- return btnFilterUndeterminedSpecimen;
- }
+
+
public Button getBtnBrowseTaxa() {
return btnBrowseTaxa;
}
+
public Text getTextTaxonName() {
return textTaxonName;
}
+
public Button getBtnClearTaxon() {
return btnClearTaxon;
}
+ public Combo getComboTaxonAssignment() {
+ return comboTaxonAssignment;
+ }
}
package eu.etaxonomy.taxeditor.editor.view.derivate.searchFilter;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.UUID;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
import eu.etaxonomy.taxeditor.store.CdmStore;
occurrences = specimensOfCorrectType;
}
- //filter out assigned specimens
- if(derivateSearchComposite.getBtnFilterUndeterminedSpecimen().getSelection()){
- List<SpecimenOrObservationBase> specimensWithNoDetermination = new ArrayList<SpecimenOrObservationBase>();
- for(SpecimenOrObservationBase<?> result:occurrences){
- if(CdmStore.getService(IOccurrenceService.class).countDeterminations(result, null)==0){
- specimensWithNoDetermination.add(result);
+ //filter out (un-)assigned specimens
+ int selectionIndex = derivateSearchComposite.getComboTaxonAssignment().getSelectionIndex();
+ List<SpecimenOrObservationBase> specimensWithAssociations = new ArrayList<SpecimenOrObservationBase>();
+ if(selectionIndex!=DerivateSearchComposite.ALL_SPECIMENS){
+ for (SpecimenOrObservationBase specimenOrObservationBase : occurrences) {
+ Collection<TaxonBase<?>> associatedTaxa = CdmStore.getService(IOccurrenceService.class).listAssociatedTaxa(specimenOrObservationBase, null, null, null, null);
+ if(!associatedTaxa.isEmpty()){
+ specimensWithAssociations.add(specimenOrObservationBase);
}
}
- occurrences = specimensWithNoDetermination;
}
+ if(selectionIndex==DerivateSearchComposite.ASSIGNED_SPECIMENS){
+ occurrences = specimensWithAssociations;
+ }
+ else if(selectionIndex==DerivateSearchComposite.UNASSIGNED_SPECIMENS){
+ occurrences.retainAll(specimensWithAssociations);
+ }
+
List<UUID> derivateUuids = new ArrayList<UUID>();
for (SpecimenOrObservationBase specimenOrObservationBase : occurrences) {
derivateUuids.add(specimenOrObservationBase.getUuid());