*/
package eu.etaxonomy.taxeditor.ui.dialog.selection;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.UUID;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.IClassificationService;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
- * <p>FilteredTaxonNodeSelectionDialog class.</p>
- *
* @author p.ciardelli
* @version $Id: $
*/
public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<TaxonNode> implements SelectionListener{
- /**
- * <p>select</p>
- *
- * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
- * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- * @param title a {@link java.lang.String} object.
- * @param excludeTaxa a {@link java.util.List} object.
- * @param node a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
- * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
- */
- public static TaxonNode select(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, TaxonNode node, Classification classification) {
+ public static TaxonNode select(Shell shell, //ConversationHolder conversation,
+ String title, List<UUID> excludeTaxa, TaxonNode node, Classification classification) {
TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
- conversation,
+ //conversation,
title,
excludeTaxa,
false,
private List<Classification> classifications;
private Classification selectedClassification;
+ private final List<UUID> excludeTaxa;
- /**
- * <p>Constructor for FilteredTaxonNodeSelectionDialog.</p>
- *
- * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
- * @param title a {@link java.lang.String} object.
- * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- * @param excludeTaxa a {@link java.util.List} object.
- * @param multi a boolean.
- * @param node a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
- */
- protected TaxonNodeSelectionDialog(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
- super(shell, conversation, title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
+ protected TaxonNodeSelectionDialog(Shell shell, //ConversationHolder conversation,
+ String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
+ super(shell, //conversation,
+ title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
setListLabelProvider(labelProvider);
- setDetailsLabelProvider(labelProvider);
-
+// setDetailsLabelProvider(labelProvider);
+ this.excludeTaxa = excludeTaxa;
if(classification != null){
selectedClassification = classification;
}
- }
+ fillClassifications();
+ createClassificationSelectionCombo(shell);
+ }
- /* (non-Javadoc)
- * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite)
- */
/** {@inheritDoc} */
@Override
- protected Control createExtendedContentArea(Composite parent) {
- return createClassificationSelectionCombo(parent);
+ protected Control createDialogArea(Composite parent) {
+ Composite container = (Composite) super.createDialogArea(parent);
+ return createClassificationSelectionCombo(container);
}
/*
return "";
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
- */
/** {@inheritDoc} */
@Override
protected TaxonNode getPersistentObject(UUID uuid) {
return CdmStore.getService(IClassificationService.class).getTaxonNodeByUuid(uuid);
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
- */
/** {@inheritDoc} */
@Override
- protected void initModel() {
- // default to first tree
- // TODO this will be problematic and can only be seen as workaround
-
+ protected void callService(String pattern) {
+ model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification.getUuid(), limitOfInitialElements, pattern);
+ }
- if(classifications == null){
+ private void fillClassifications() {
+ if(classifications == null){
classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
- selectedClassification = classifications.iterator().next();
+ Collections.sort(classifications, new Comparator<Classification>() {
+
+ @Override
+ public int compare(Classification o1, Classification o2) {
+ if (o1.equals(o2)){
+ return 0;
+ }
+ int result = o1.getTitleCache().compareTo(o2.getTitleCache());
+ if (result == 0){
+ return o1.getUuid().compareTo(o2.getUuid());
+ }
+ return result;
+ }
+ });
+ if (selectedClassification == null){
+ if (this.cdmBaseToBeFiltered == null){
+ selectedClassification = classifications.iterator().next();
+ } else {
+ selectedClassification = this.cdmBaseToBeFiltered.getClassification();
+ }
+ }
}
-
- model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification);
- }
+ }
/** {@inheritDoc} */
@Override
/** {@inheritDoc} */
@Override
- protected String getNewWizardLinkText() {
+ protected String[] getNewWizardText() {
return null;
}
selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
// refresh();
- setPattern(null);
+ if (getSearchField().getText() != null){
+ search();
+ }
}
/** {@inheritDoc} */