ref #5837 add new NomenclaturalReferenceSelectionDialog
authorKatja Luther <k.luther@bgbm.org>
Thu, 25 Aug 2016 08:22:38 +0000 (10:22 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 25 Aug 2016 08:23:33 +0000 (10:23 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientReferenceService.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java

index 888ae989ed201de58ca6b60ce9fae72d1e58a08c..1d8e04cb579df1d3064bab52b59d0c397527def3 100644 (file)
@@ -771,4 +771,11 @@ public class TransientReferenceService implements IReferenceService {
                return defaultService.loadByIds(idSet, propertyPaths);
        }
 
+       @Override
+       public List<UuidAndTitleCache<Reference>> getUuidAndAbbrevTitleCache(
+                       Integer limit, String pattern) {
+               
+               return defaultService.getUuidAndAbbrevTitleCache(limit, pattern);
+       }
+
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalReferenceSelectionDialog.java
new file mode 100755 (executable)
index 0000000..82bbf34
--- /dev/null
@@ -0,0 +1,91 @@
+package eu.etaxonomy.taxeditor.ui.dialog.selection;
+
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.CdmFilteredItemsSelectionDialog.ItemsFilter;
+
+public class NomenclaturalReferenceSelectionDialog extends
+               ReferenceSelectionDialog {
+
+       protected NomenclaturalReferenceSelectionDialog(Shell shell,
+                       ConversationHolder conversation, String title, boolean multi,
+                       Reference reference) {
+               super(shell, conversation, title, multi, reference);
+               // TODO Auto-generated constructor stub
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#initModel()
+        */
+       /** {@inheritDoc} */
+       @Override
+       protected void initModel() {
+           Control control = getPatternControl();
+        String pattern = null;
+        if (control != null){
+            pattern = ((Text)control).getText();
+        }
+
+
+               model = CdmStore.getService(IReferenceService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern);
+       }
+       
+       /**
+        * <p>select</p>
+        *
+        * @param reference a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
+        * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
+        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+        * @return a {@link eu.etaxonomy.cdm.model.reference.ReferenceBase} object.
+        */
+       
+       public static Reference select(Shell shell, ConversationHolder conversation, Reference reference) {
+               NomenclaturalReferenceSelectionDialog dialog = new NomenclaturalReferenceSelectionDialog(shell, conversation,
+                               "Choose a reference", false, reference);
+               return getSelectionFromDialog(dialog);
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createFilter()
+        */
+       /** {@inheritDoc} */
+       @Override
+       protected ItemsFilter createFilter() {
+               return new ItemsFilter() {
+
+                       /**
+                        * Always returns false to enforce refiltering even if the pattern is equal
+                        */
+                       @Override
+                       public boolean equalsFilter(ItemsFilter filter) {
+                               return false;
+                       }
+
+                       @Override
+                       public boolean isConsistentItem(Object item) {
+                               return false;
+                       }
+
+                       @Override
+                       public boolean matchItem(Object item) {
+                               String text = null;
+                               if(item instanceof UuidAndTitleCache){
+                                       text = ((UuidAndTitleCache) item).getAbbrevTitleCache();
+                               }else if(item instanceof String){
+                                       text = (String) item;
+                               }
+                               return text != null ? matches(text) : false;
+                       }
+
+               };
+       }
+
+
+}
index 9d207d1531dcee2ff2c9927074ae8a4389219a14..f45adb155aa90406699a326606c3b69de21ca977 100644 (file)
@@ -47,6 +47,7 @@ import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberElement;
 import eu.etaxonomy.taxeditor.ui.section.description.detail.DistributionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
 
 /**
  * @author n.hoffmann
@@ -76,9 +77,13 @@ public class SelectionDialogFactory {
                if(clazz.equals(TaxonNode.class)){
                        return (T) TaxonNodeSelectionDialog.select(shell, conversation, null, null, (TaxonNode) currentSelection, ((TaxonNode) currentSelection).getClassification());
                }
+               if(clazz.equals(Reference.class) && parentElement instanceof NomenclaturalReferenceDetailElement){
+                       return (T) NomenclaturalReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection);
+               }
                if(clazz.equals(Reference.class)){
                        return (T) ReferenceSelectionDialog.select(shell, conversation, (Reference) currentSelection);
                }
+               
                if(clazz.equals(TaxonNameBase.class)){
                        return (T) NameSelectionDialog.select(shell, conversation, (TaxonNameBase) currentSelection);
                }
index b04c73d4d50137a543d024706ac06d20fa39b280..c86f2c08eeaae874a24b473502aad518de747dec 100644 (file)
@@ -8,7 +8,7 @@ import java.util.Observable;
 import java.util.Observer;
 
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.dialogs.MessageDialog;
+
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;