<CR> in name relation - select name now the same as clicking the "Search" button.
authorp.ciardelli <p.ciardelli@localhost>
Fri, 21 Nov 2008 15:08:16 +0000 (15:08 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Fri, 21 Nov 2008 15:08:16 +0000 (15:08 +0000)
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelationswizard/ChooseRelatedNameWizardPage.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDialog.java

index 50c1e7ee61960b21de132dbaf951a73552a3160c..4c0889d0c1a9fbb7accf9eec85cde0af102a24be 100644 (file)
@@ -25,6 +25,8 @@ import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.ViewerComparator;\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.ModifyEvent;\r
 import org.eclipse.swt.events.ModifyListener;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
@@ -72,6 +74,8 @@ public class ChooseRelatedNameWizardPage extends WizardPage {
        private WritableList observableSearchResultsList = new WritableList();\r
        private NonViralName noResultsDummyName = NonViralName.NewInstance(null);\r
 \r
+       private Button btnSearch;\r
+\r
        public ChooseRelatedNameWizardPage(NameRelationWizardModel relationModel) {\r
                super("");\r
 \r
@@ -82,53 +86,64 @@ public class ChooseRelatedNameWizardPage extends WizardPage {
        }\r
 \r
        public void createControl(Composite parent) {\r
+               \r
+               // Create composite for popup dialog    \r
                Composite container = new Composite(parent, SWT.NULL);\r
                final GridLayout gridLayout = new GridLayout();\r
                gridLayout.numColumns = 3;\r
                container.setLayout(gridLayout);\r
-\r
                setControl(container);\r
 \r
+               // Create search text\r
                final Label lblChooseName = new Label(container, SWT.NONE);\r
                lblChooseName.setText("Choose name for relation:");\r
                new Label(container, SWT.NONE);\r
                new Label(container, SWT.NONE);\r
 \r
+               // Create input field for search term\r
                txtName = new Text(container, SWT.BORDER);\r
                txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+               \r
+               // Listen for user hitting <CR> in input field\r
+               txtName.addKeyListener(new KeyAdapter() {\r
+                       public void keyReleased(KeyEvent e) {\r
+                               int key = e.keyCode;\r
+                               if (key == SWT.CR) {\r
+                                       populateSearchResults();\r
+                               }\r
+                       }\r
+               });\r
 \r
-               final Button btnSearch = new Button(container, SWT.NONE);\r
+               // Create "Search" button\r
+               btnSearch = new Button(container, SWT.NONE);\r
                btnSearch.setEnabled(false);\r
                btnSearch.setLayoutData(new GridData());\r
                btnSearch.setText("Search");\r
                btnSearch.addSelectionListener(new SelectionAdapter() {\r
+                       \r
+                       // Populate search results resultsTable after clicking button\r
                        public void widgetSelected(SelectionEvent e) {\r
-                               String searchText = txtName.getText();\r
-                               btnSearch.setEnabled(false);\r
-                               Set<TaxonNameBase> results = CdmUtil.getNameByName(searchText);\r
-\r
-                               observableSearchResultsList.clear();\r
-                               if (results.size() == 0) {\r
-                                       // Populate observable list with dummy name\r
-                                       observableSearchResultsList.add(noResultsDummyName);\r
-                               } else {\r
-                                       observableSearchResultsList.addAll(results);\r
-                               }\r
-                               btnSearch.setEnabled(true);\r
+                               populateSearchResults();\r
                        }\r
                });\r
 \r
+               // Create "Create New Name" button\r
                final Button btnNewName = new Button(container, SWT.NONE);\r
                btnNewName.setEnabled(false);\r
                btnNewName.setText("Create New Name");\r
                btnNewName.addSelectionListener(new SelectionAdapter() {\r
+                       \r
+                       // Use input field text to create and select a new name\r
                        public void widgetSelected(SelectionEvent e) {\r
                                setRawNewName(txtName.getText());\r
                                btnNewName.setEnabled(false);\r
                        }\r
                });\r
+               \r
+               // Create results viewer\r
                createSearchResultsViewer(container);\r
 \r
+               // Enable / disable buttons according to whether there is input text or not\r
                txtName.addModifyListener(new ModifyListener() {\r
                        public void modifyText(ModifyEvent e) {\r
                                if (txtName.getText().length() > 0) {\r
@@ -141,6 +156,7 @@ public class ChooseRelatedNameWizardPage extends WizardPage {
                        }\r
                });\r
 \r
+               // Create text field to display selected name\r
                txtNewName = new Text(container, SWT.BORDER);\r
                final GridData gd_txtNewName = new GridData(SWT.FILL, SWT.CENTER, true,\r
                                false, 3, 1);\r
@@ -151,12 +167,28 @@ public class ChooseRelatedNameWizardPage extends WizardPage {
                                SWT.COLOR_WHITE));\r
                txtNewName.setEditable(false);\r
                \r
+               // If editing an existing relation, show the related name\r
                if (relationModel.getRelatedName() != null) {\r
                        txtNewName.setText(CdmUtil.getDisplayName(relationModel.getRelatedName()));\r
                        nameSelected = true;\r
                }\r
        }\r
 \r
+       protected void populateSearchResults() {\r
+               String searchText = txtName.getText();\r
+               btnSearch.setEnabled(false);\r
+               Set<TaxonNameBase> results = CdmUtil.getNameByName(searchText);\r
+\r
+               observableSearchResultsList.clear();\r
+               if (results.size() == 0) {\r
+                       // Populate observable list with dummy name\r
+                       observableSearchResultsList.add(noResultsDummyName);\r
+               } else {\r
+                       observableSearchResultsList.addAll(results);\r
+               }\r
+               btnSearch.setEnabled(true);\r
+       }\r
+\r
        private void createSearchResultsViewer(Composite parent) {\r
                // TODO no reason to use observable lists and all that nonsense\r
                // implement à la propertysheet.reference.ReferenceSearchDialog instead\r
index 71ee9c709ee59978aacd74ea1833a5f281c5d397..71d88bbd54e30f4c20048ca40489936f7ede7db3 100644 (file)
@@ -141,7 +141,7 @@ public class ReferenceSearchDialog extends Dialog {
                        }\r
                });\r
 \r
-               // Create composite for results resultsTable\r
+               // Create composite for results table\r
                final Composite resultsComposite = new Composite(composite, SWT.NONE);\r
                resultsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
                resultsComposite.setLayout(new GridLayout());\r