Updated filtered selection dialogs to 1) pass up an existing value and 2) create...
authorp.ciardelli <p.ciardelli@localhost>
Tue, 22 Sep 2009 08:33:12 +0000 (08:33 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 22 Sep 2009 08:33:12 +0000 (08:33 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameSelectComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/reference/ReferenceSelectComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/name/ScientificNamePropertySource.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/name/TaxonBasePropertySource.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/ReferencePropertySource.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDescriptor.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseNameTypeWizardPage.java

index 81a8052f6399867017fefa535c446771ee5f1e4f..ac96401cf3308151e2bef3b2f93e09473f2e2caa 100644 (file)
@@ -22,14 +22,11 @@ import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;\r
 import org.eclipse.swt.widgets.Button;\r
 import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Dialog;\r
 import org.eclipse.swt.widgets.Label;\r
 import org.eclipse.swt.widgets.Text;\r
 \r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.taxeditor.dialogs.FilteredNameSelectionDialog;\r
-import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;\r
-import eu.etaxonomy.taxeditor.model.Resources;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 \r
 /**\r
@@ -67,7 +64,7 @@ public class NameSelectComposite extends Composite {
                \r
                Label lblName = new Label(this, SWT.NONE);\r
                lblName.setLayoutData(new GridData());\r
-               lblName.setText("Choose a name either by searching or by entering it as free text:");\r
+               lblName.setText("Choose a name:");\r
                \r
                // Create 3-columned composite for name input\r
                Composite nameComposite = new Composite(this, SWT.NONE);\r
@@ -80,6 +77,7 @@ public class NameSelectComposite extends Composite {
                \r
                // Create name input\r
                txtName = new Text(nameComposite, SWT.BORDER);\r
+               txtName.setEnabled(false);\r
                txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
                txtName.addModifyListener(new ModifyListener() {\r
                        public void modifyText(ModifyEvent e) {\r
@@ -111,13 +109,6 @@ public class NameSelectComposite extends Composite {
                                clearName();\r
                        }\r
                });\r
-               \r
-               // Create message re: editing names\r
-               Label lblNewNameFeedback = new Label(this, SWT.NONE);\r
-               lblNewNameFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
-               lblNewNameFeedback.setFont(\r
-                               Resources.italicizeFont(lblNewNameFeedback.getFont()));\r
-               lblNewNameFeedback.setText("Existing names can not be edited.");\r
        }\r
        \r
        /**\r
@@ -142,15 +133,8 @@ public class NameSelectComposite extends Composite {
        /**\r
         * \r
         */\r
-       protected void popupSearch() {\r
-//             Dialog dialog = new NameSearchDialog(getShell());\r
-//        Object value = ((NameSearchDialog) dialog).open();\r
-//        \r
-//             if (value instanceof TaxonNameBase) {\r
-//                     setSavedName((TaxonNameBase<?, ?>) value);\r
-//             }\r
-               \r
-               TaxonNameBase name = FilteredNameSelectionDialog.selectName(getShell());\r
+       protected void popupSearch() {          \r
+               TaxonNameBase name = FilteredNameSelectionDialog.selectName(getShell(), savedName);\r
                if(name != null){\r
                        setSavedName(name);\r
                }\r
@@ -186,15 +170,6 @@ public class NameSelectComposite extends Composite {
         * @return\r
         */\r
        public TaxonNameBase<?, ?> getName() {\r
-               TaxonNameBase<?, ?> name = null;\r
-           if (savedName != null) {\r
-               name = savedName;\r
-               } else {\r
-                       if (!txtName.getText().equals("")) {\r
-                               name = PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null);\r
-                               name.setTitleCache(txtName.getText());\r
-                       }\r
-               }\r
-               return name;\r
+               return savedName;\r
        }\r
 }
\ No newline at end of file
index ed1a944f2bc4ac2a5ada07d6c4c0c403422a9cc3..e945ab30b4eacf184268b2cee9d5c122073cfa46 100644 (file)
@@ -251,33 +251,18 @@ public class TaxonNameEditor extends EditorPart implements IAdaptable, IConversa
                if (homotypicGroupOfAcceptedTaxon != null) {\r
                        List<Synonym> homotypicSynonyms = homotypicGroupOfAcceptedTaxon.getSynonymsInGroup(taxon.getSec());\r
                        for (Synonym synonym : homotypicSynonyms) {\r
-\r
-                               // Make sure synonym belongs to the taxon\r
-                               // TODO why? doesn't taxon.getHomotypicGroup.getSynonymsInGroup return synonyms of the taxon only? I would think so!\r
-                               if (synonym.getAcceptedTaxa().contains(taxon)) {\r
-                                       createSynonym(synonym);\r
-                               }\r
+                               createSynonym(synonym);\r
                        }\r
                }\r
                \r
                // Draw heterotypic synonym groups\r
                List<HomotypicalGroup> heterotypicSynonymGroups = taxon.getHeterotypicSynonymyGroups();\r
                for (HomotypicalGroup homotypicalGroup : heterotypicSynonymGroups) {\r
-                       \r
-                       // Make sure this is not the taxon's homotypic group\r
-                       // TODO why? doesn't taxon.getHeterotypicSynonymyGroups return only the heterotypic synonymy groups of the taxon and not the homotypic group? I would think so!\r
-                       if (!homotypicalGroup.equals(homotypicGroupOfAcceptedTaxon)) {\r
                                                        \r
-                               List<Synonym> heterotypicSynonyms = homotypicalGroup.\r
-                                               getSynonymsInGroup(taxon.getSec());\r
-                               for (Synonym synonym : heterotypicSynonyms) {\r
-\r
-                                       // Make sure synonym belongs to the taxon \r
-                                       // TODO why? doesn't taxon.getHeterotypicSynonymyGroups return synonyms of the taxon only? I would think so!\r
-                                       if (synonym.getAcceptedTaxa().contains(taxon)) {\r
-                                               createSynonym(synonym);\r
-                                       }\r
-                               }\r
+                       List<Synonym> heterotypicSynonyms = homotypicalGroup.\r
+                                       getSynonymsInGroup(taxon.getSec());\r
+                       for (Synonym synonym : heterotypicSynonyms) {\r
+                                createSynonym(synonym);\r
                        }\r
                }\r
                \r
index 65944483f426b7e48d4c701054101cab848b956a..b1c9342b88fa033db140d6fcd3d5b76de0f93fc2 100644 (file)
@@ -60,7 +60,7 @@ public class ReferenceSelectComposite extends Composite {
                \r
                Label lblReference = new Label(this, SWT.NONE);\r
                lblReference.setLayoutData(new GridData());\r
-               lblReference.setText("Choose a reference either by searching or entering it as free text:");\r
+               lblReference.setText("Choose a reference:");\r
                \r
                // Create 3-columned composite for reference input\r
                Composite refComposite = new Composite(this, SWT.NONE);\r
@@ -74,6 +74,7 @@ public class ReferenceSelectComposite extends Composite {
                // Create reference input\r
                txtReference = new Text(refComposite, SWT.BORDER);\r
                txtReference.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+               txtReference.setEnabled(false);\r
                \r
                // Create reference search button\r
                Button btnSearchReference = new Button(refComposite, SWT.NONE);\r
@@ -99,13 +100,6 @@ public class ReferenceSelectComposite extends Composite {
                                clearReference();\r
                        }\r
                });\r
-               \r
-               // Create message re: editing references\r
-               Label lblNewRefFeedback = new Label(this, SWT.NONE);\r
-               lblNewRefFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
-               lblNewRefFeedback.setFont(\r
-                               Resources.italicizeFont(lblNewRefFeedback.getFont()));\r
-               lblNewRefFeedback.setText("Existing references can only be edited in property sheet.");\r
                                \r
                Label lblMicroref = new Label(this, SWT.NONE);\r
                lblMicroref.setText("Enter reference detail (e.g., page no.):");\r
@@ -131,7 +125,7 @@ public class ReferenceSelectComposite extends Composite {
         * \r
         */\r
        protected void popupSearch() {\r
-        ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(getShell());\r
+        ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(getShell(), savedReference);\r
                if (reference != null) {\r
                        setSavedReference(reference);\r
                }\r
@@ -167,16 +161,7 @@ public class ReferenceSelectComposite extends Composite {
         * @return\r
         */\r
        public ReferenceBase<?> getReference() {\r
-               ReferenceBase<?> reference = null;\r
-           if (savedReference != null) {\r
-               reference = savedReference;\r
-               } else {\r
-                       if (!txtReference.getText().equals("")) {\r
-                               reference = Generic.NewInstance();\r
-                               reference.setTitleCache(txtReference.getText());\r
-                       }\r
-               }\r
-               return reference;\r
+               return savedReference;\r
        }\r
        \r
        public String getMicroReference() {\r
index 49083a661082325e55290baba76db847511e90c3..1b087b7b9b04fef1d68cdcd0c127fb2f38eb5623 100644 (file)
@@ -112,17 +112,7 @@ public class ScientificNamePropertySource implements ICdmBasePropertySource {
        protected Vector<PropertyDescriptor> descriptors = new Vector<PropertyDescriptor>();\r
        \r
        protected void addDescriptor(String id) {\r
-               \r
-               // Reference search\r
-               if (id.equals(P_ID_SEARCH)) {\r
-//                     descriptors.addElement(\r
-//                                     new ReferenceSearchDescriptor(P_ID_SEARCH, P_SEARCH, getSearchType()) {\r
-//                                             protected void saveReference(ReferenceBase reference) {\r
-//                                                     setPropertyValue(P_ID_SEARCH, reference);\r
-//                                             }\r
-//                     });\r
-               }\r
-               \r
+                       \r
                // Editable cache\r
                if (id.equals(P_ID_EDITABLECACHE)) {\r
                        descriptors.addElement(\r
@@ -137,7 +127,6 @@ public class ScientificNamePropertySource implements ICdmBasePropertySource {
                }\r
                \r
                boolean isProtectedCache = name.isProtectedTitleCache();\r
-//             boolean isProtectedCache = false;\r
                \r
                // Uninomial (aka Genus)\r
                if (id.equals(P_ID_UNINOMIAL)) {\r
index 85aa19459bbe60fee74f2a29e6e41a7f35c7bd30..356aa434a11f22e90f3eae208bc533047863b968 100644 (file)
@@ -100,7 +100,7 @@ public class TaxonBasePropertySource implements ICdmBasePropertySource {
                                        new PropertyDescriptor(P_ID_TAXONNAME, P_TAXONNAME));\r
                }               \r
                if (id.equals(P_ID_TAXONSEC)) {\r
-                       descriptors.addElement(new ReferenceSearchDescriptor(P_ID_TAXONSEC, P_TAXONSEC, IReferenceSearch.BIBREF) {\r
+                       descriptors.addElement(new ReferenceSearchDescriptor(P_ID_TAXONSEC, P_TAXONSEC, IReferenceSearch.BIBREF, taxonBase.getSec()) {\r
                                protected void saveReference(ReferenceBase reference) {\r
                                        setPropertyValue(P_ID_TAXONSEC, reference);\r
                                }\r
index eeac94eaedc8e5b36bdc464a1b7c6b631e4fe6ec..5d06b0054d31a2b7bec30398ace007401de69f8d 100644 (file)
@@ -404,7 +404,7 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
                // Reference search\r
                if (id.equals(P_ID_SEARCH)) {\r
                        descriptors.addElement(\r
-                                       new ReferenceSearchDescriptor(P_ID_SEARCH, P_SEARCH, getSearchType()) {\r
+                                       new ReferenceSearchDescriptor(P_ID_SEARCH, P_SEARCH, getSearchType(), reference) {\r
                                                protected void saveReference(ReferenceBase reference) {\r
                                                        setPropertyValue(P_ID_SEARCH, reference);\r
                                                }\r
@@ -421,9 +421,7 @@ public class ReferencePropertySource implements ICdmBasePropertySource {
                if (id.equals(P_ID_PROTECT_CACHE)) {\r
                        descriptors.addElement(\r
                                        new ComboBoxPropertyDescriptor(P_ID_PROTECT_CACHE, P_PROTECT_CACHE, \r
-                                                       new String[] {"no", "yes"}));\r
-//                     descriptors.addElement(\r
-//                                     new CheckboxPropertyDescriptor(P_ID_PROTECT_CACHE, P_PROTECT_CACHE));                   \r
+                                                       new String[] {"no", "yes"}));                   \r
                }\r
                \r
                // Reference type\r
index 239d3b28fe8c524a4f052b346797f662e8ac66e5..279e2f8f4f2bdd7a828d8342ee7765c9d669d7a0 100644 (file)
@@ -26,11 +26,13 @@ import eu.etaxonomy.taxeditor.dialogs.FilteredReferenceSelectionDialog;
 abstract public class ReferenceSearchDescriptor extends PropertyDescriptor {\r
                \r
        int searchType;\r
+       private ReferenceBase existingReference;\r
        \r
-       public ReferenceSearchDescriptor(Object id, String displayName, int searchType) {\r
+       public ReferenceSearchDescriptor(Object id, String displayName, int searchType, ReferenceBase existingReference) {\r
                super(id, displayName);\r
                \r
                this.searchType = searchType;\r
+               this.existingReference = existingReference;\r
        }\r
 \r
     public CellEditor createPropertyEditor(Composite parent) {\r
@@ -39,7 +41,7 @@ abstract public class ReferenceSearchDescriptor extends PropertyDescriptor {
                        protected Object openDialogBox(\r
                                        Control cellEditorWindow) {                     \r
 \r
-                       ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(cellEditorWindow.getShell());\r
+                       ReferenceBase reference = FilteredReferenceSelectionDialog.selectReference(cellEditorWindow.getShell(), existingReference);\r
                                if (reference != null) {\r
                                        saveReference(reference);\r
                                        return new ReferencePropertySource(reference);\r
index 5c953f7b597955e4f39e89a93cdb01f3602450d5..6118ae9cdba6b50b77c77c9a035857d2a5ba070f 100644 (file)
@@ -9,30 +9,26 @@
 \r
 package eu.etaxonomy.taxeditor.propertysheet.type.wizard;\r
 \r
+import java.beans.PropertyChangeEvent;\r
+import java.beans.PropertyChangeListener;\r
+\r
 import org.apache.log4j.Logger;\r
 import org.eclipse.core.databinding.observable.list.WritableList;\r
 import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.wizard.WizardPage;\r
 import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.KeyAdapter;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.layout.GridData;\r
 import org.eclipse.swt.layout.GridLayout;\r
 import org.eclipse.swt.widgets.Button;\r
 import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Label;\r
 import org.eclipse.swt.widgets.Text;\r
 \r
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.taxeditor.dialogs.FilteredNameSelectionDialog;\r
+import eu.etaxonomy.taxeditor.editor.name.NameSelectComposite;\r
 import eu.etaxonomy.taxeditor.editor.reference.ReferenceSelectComposite;\r
-import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;\r
-import eu.etaxonomy.taxeditor.model.Resources;\r
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 \r
 /**\r
@@ -49,7 +45,6 @@ public class ChooseNameTypeWizardPage extends WizardPage {
        private TaxonNameBase<?, ?> savedName;\r
        \r
        private Text txtName;\r
-       private Button btnClearName;\r
        private Button btnRejected;\r
        private Button btnConserved;\r
        private Button btnLecto;\r
@@ -59,6 +54,10 @@ public class ChooseNameTypeWizardPage extends WizardPage {
 \r
        private ReferenceSelectComposite referenceComposite;\r
 \r
+       private NameSelectComposite nameComposite;\r
+\r
+       private boolean nameSelected;\r
+\r
        /**\r
         * @param typeDesignation\r
         * @param name\r
@@ -89,73 +88,18 @@ public class ChooseNameTypeWizardPage extends WizardPage {
                Composite container = new Composite(parent, SWT.NULL);\r
                container.setLayout(new GridLayout());\r
                setControl(container);\r
-               \r
-               // Create name text\r
-               final Label lblName = new Label(container, SWT.NONE);\r
-               lblName.setText("Choose a name either by searching or entering it as free text:");\r
-               \r
-               // Create 3-columned composite for name\r
-               Composite nameComposite = new Composite(container, SWT.NULL);\r
-               nameComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
-               GridLayout gridLayout = new GridLayout();\r
-               gridLayout.numColumns = 3;\r
-               gridLayout.marginHeight = 0;\r
-               gridLayout.marginWidth = 0;\r
-               nameComposite.setLayout(gridLayout);\r
-               \r
-               // Create name input\r
-               // TODO replace w NameSelectComposite\r
-               txtName = new Text(nameComposite, SWT.BORDER);\r
-               txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
-               txtName.addKeyListener(new KeyAdapter() {\r
-                       @Override\r
-                       public void keyReleased(KeyEvent e) {\r
-                               updatePage();\r
-                       }                       \r
-               });\r
-               \r
-               // Create name search button\r
-               Button btnSearchName = new Button(nameComposite, SWT.NONE);\r
-               btnSearchName.setEnabled(true);\r
-               btnSearchName.setLayoutData(new GridData());\r
-               btnSearchName.setText("Search ...");\r
-               btnSearchName.addSelectionListener(new SelectionAdapter() {\r
                        \r
-                       // Popup reference search\r
-                       public void widgetSelected(SelectionEvent e) {\r
-                               popupNameSearch();\r
+               // Create name input composite\r
+               nameComposite = new NameSelectComposite(container);\r
+               nameComposite.addPropertyChangeListener(new PropertyChangeListener() {\r
+                       public void propertyChange(PropertyChangeEvent evt) {\r
+                               setName();\r
                        }\r
                });\r
-\r
-               // Create clear name button\r
-               btnClearName = new Button(nameComposite, SWT.NONE);\r
-               btnClearName.setEnabled(false);\r
-               btnClearName.setText("Clear");\r
-               btnClearName.addSelectionListener(new SelectionAdapter() {\r
-                       \r
-                       // Clear selected reference\r
-                       public void widgetSelected(SelectionEvent e) {\r
-                               clearName();\r
-                       }\r
-               });\r
-\r
-               // Set text to name text if exists, disable ability to edit name\r
-               if (typeDesignation != null && typeDesignation.getTypeName() != null) {\r
-                       \r
-                       savedName = typeDesignation.getTypeName();\r
-                       txtName.setText(savedName.getTitleCache());\r
-                       txtName.setEditable(false);\r
-                                               \r
-                       btnClearName.setEnabled(false);\r
-                       btnSearchName.setEnabled(false);\r
-               }\r
                \r
-               // Tell user when he is entering a new name\r
-               Label lblNewNameFeedback = new Label(container, SWT.NONE);\r
-               lblNewNameFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
-               lblNewNameFeedback.setFont(\r
-                               Resources.italicizeFont(lblNewNameFeedback.getFont()));\r
-               lblNewNameFeedback.setText("Existing names can not be edited.");\r
+               if (typeDesignation != null) {\r
+                       nameComposite.setName(typeDesignation.getTypeName());\r
+               }\r
                \r
                // Create 2-columned composite for name\r
                Composite booleansComposite = new Composite(container, SWT.NULL);\r
@@ -209,47 +153,21 @@ public class ChooseNameTypeWizardPage extends WizardPage {
                        }\r
                }\r
        }\r
-\r
+       \r
        /**\r
-        * \r
         */\r
-       protected void popupNameSearch() {\r
-               // TODO delete this when FilteredSelectionDialog works\r
-//             Dialog dialog = new NameSearchDialog(getShell());\r
-//        Object value = ((NameSearchDialog) dialog).open();\r
-//        \r
-//             if (value instanceof TaxonNameBase) {\r
-//                     setSavedName((TaxonNameBase<?, ?>) value);\r
-//                     updatePage();\r
-//             }\r
-               \r
-               setSavedName(FilteredNameSelectionDialog.selectName(getShell()));\r
+       private void setName() {\r
+               savedName = nameComposite.getName();\r
+               nameSelected = (savedName != null);\r
                updatePage();\r
        }\r
-       \r
-       /**\r
-        * @param value\r
-        */\r
-       private void setSavedName(TaxonNameBase<?, ?> savedName) {\r
                \r
-               this.savedName = savedName;\r
-               \r
-               txtName.setText(savedName.getTitleCache());\r
-               txtName.setEditable(false);\r
-               \r
-               btnClearName.setEnabled(true);\r
-       }\r
-       \r
        /**\r
         * \r
         */\r
        protected void clearName() {\r
                savedName = null;\r
-               \r
-               txtName.setText("");\r
-               txtName.setEditable(true);\r
-               \r
-               btnClearName.setEnabled(false);         \r
+               txtName.setText("");                            \r
        }\r
                \r
        @Override\r
@@ -258,11 +176,10 @@ public class ChooseNameTypeWizardPage extends WizardPage {
        }\r
 \r
        public boolean isPageComplete() {\r
-               return (txtName.getText().length() > 0);\r
+               return nameComposite.getName() != null;\r
        }\r
        \r
        private void updatePage() {\r
-               \r
                getWizard().getContainer().updateButtons();\r
        }\r
        \r