Started this with an ObservableList in the results list, realized it could be much...
authorp.ciardelli <p.ciardelli@localhost>
Thu, 13 Nov 2008 16:24:11 +0000 (16:24 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Thu, 13 Nov 2008 16:24:11 +0000 (16:24 +0000)
.gitattributes
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDialog.java [new file with mode: 0644]

index f2ce1e9d592dc6736000e380f7f7d9a92fc15f42..e38c2d113c929ae3228d4d8e17b99f2573631267 100644 (file)
@@ -540,3 +540,4 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/namerelationswizard/NameRelationsListWizard.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/NomenclaturalReferencePropertySource.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferencePropertySource.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDialog.java -text
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDialog.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/reference/ReferenceSearchDialog.java
new file mode 100644 (file)
index 0000000..716804f
--- /dev/null
@@ -0,0 +1,221 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.propertysheet.reference;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.databinding.beans.BeansObservables;\r
+import org.eclipse.core.databinding.observable.list.WritableList;\r
+import org.eclipse.core.databinding.observable.map.IObservableMap;\r
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
+import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;\r
+import org.eclipse.jface.viewers.TableViewer;\r
+import org.eclipse.jface.viewers.ViewerComparator;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.MouseAdapter;\r
+import org.eclipse.swt.events.MouseEvent;\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.Dialog;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.eclipse.swt.widgets.Table;\r
+import org.eclipse.swt.widgets.Text;\r
+\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 13.11.2008\r
+ * @version 1.0\r
+ */\r
+public class ReferenceSearchDialog extends Dialog {\r
+       private Table table;\r
+       private Text searchTermText;\r
+       private static final Logger logger = Logger\r
+                       .getLogger(ReferenceSearchDialog.class);\r
+       \r
+       public static final int NOMREF = 1;\r
+       \r
+       protected Object result;\r
+       private Shell shell;\r
+       private WritableList searchResultsList;\r
+       private Button okButton;\r
+       \r
+       public ReferenceSearchDialog(Shell parent, int searchType) {\r
+               super(parent, SWT.NONE);\r
+       }\r
+\r
+       /**\r
+        * Open the dialog\r
+        * @return the result\r
+        */\r
+       public Object open() {\r
+               createContents();\r
+               shell.open();\r
+               shell.layout();\r
+               Display display = getParent().getDisplay();\r
+               while (!shell.isDisposed()) {\r
+                       if (!display.readAndDispatch())\r
+                               display.sleep();\r
+               }\r
+               return result;\r
+       }\r
+       \r
+       /**\r
+        * Create contents of the dialog\r
+        */\r
+       protected void createContents() {\r
+               \r
+               // Create shell for popup dialog                \r
+               shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);\r
+               shell.setLayout(new GridLayout());\r
+               shell.setSize(500, 375);\r
+               shell.setText("Search for a reference in datasource");\r
+               \r
+               // Create composite for entire shell            \r
+               final Composite composite = new Composite(shell, SWT.NONE);\r
+               composite.setLayout(new GridLayout());\r
+               composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
+\r
+               // Create composite for search text, search term input, and "Search" button\r
+               final Composite searchComposite = new Composite(composite, SWT.NONE);\r
+               searchComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+               final GridLayout gridLayout = new GridLayout();\r
+               gridLayout.numColumns = 2;\r
+               searchComposite.setLayout(gridLayout);\r
+\r
+               // Create search text\r
+               final Label label = new Label(searchComposite, SWT.NONE);\r
+               label.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));\r
+               label.setText("Enter a search term for a full reference, using '*' as a wildcard.");\r
+\r
+               // Create input field for search term\r
+               searchTermText = new Text(searchComposite, SWT.BORDER);\r
+               final GridData gd_searchTermText = new GridData(SWT.FILL, SWT.CENTER, true, false);\r
+               searchTermText.setLayoutData(gd_searchTermText);\r
+\r
+               // Create "Search" button\r
+               final Button searchButton = new Button(searchComposite, SWT.NONE);\r
+               searchButton.setLayoutData(new GridData());\r
+               searchButton.setText("Search");\r
+               searchButton.addMouseListener(new MouseAdapter() {\r
+                       \r
+                       // Populate search results table after clicking button\r
+                       public void mouseUp(MouseEvent e) {\r
+                               searchResultsList.clear();\r
+                               searchResultsList.addAll(CdmUtil.getReferencesByTitle(searchTermText.getText()));\r
+                               \r
+                               // Disable OK button\r
+                               okButton.setEnabled(false);\r
+                       }\r
+               });\r
+\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
+\r
+               // Create results table\r
+               final TableViewer resultsTableViewer = new TableViewer(resultsComposite, SWT.BORDER);\r
+               table = resultsTableViewer.getTable();\r
+               table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
+\r
+               // Init results list\r
+               searchResultsList = new WritableList();\r
+               \r
+               // Create \r
+               ObservableListContentProvider provider = new ObservableListContentProvider();\r
+               resultsTableViewer.setContentProvider(provider);\r
+               \r
+               IObservableMap[] providerMaps = BeansObservables.observeMaps(\r
+                               provider.getKnownElements(), ReferenceBase.class, new String[]{"titleCache"});\r
+               resultsTableViewer.setLabelProvider(new ObservableMapLabelProvider(providerMaps));\r
+               \r
+               resultsTableViewer.setInput(searchResultsList);\r
+       \r
+               // Sort results alphabetically\r
+               resultsTableViewer.setComparator(new ViewerComparator());\r
+               \r
+               // Create composite for "OK" and "Cancel" buttons\r
+               final Composite okCancelComposite = new Composite(composite, SWT.NONE);\r
+               okCancelComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
+               final GridLayout gridLayout_1 = new GridLayout();\r
+               gridLayout_1.numColumns = 2;\r
+               okCancelComposite.setLayout(gridLayout_1);\r
+\r
+               // Create "Cancel" button\r
+               final Button cancelButton = new Button(okCancelComposite, SWT.NONE);\r
+               cancelButton.setText("Cancel");\r
+               cancelButton.addMouseListener(new MouseAdapter() {\r
+                       \r
+                       // Close dialog popup after clicking button                     \r
+                       public void mouseUp(MouseEvent e) {\r
+                               shell.dispose();\r
+                       }\r
+               });\r
+\r
+               okButton = new Button(okCancelComposite, SWT.NONE);\r
+               okButton.setEnabled(false);\r
+               final GridData gd_okButton = new GridData();\r
+               okButton.setLayoutData(gd_okButton);\r
+               okButton.setText("OK");\r
+               okButton.addMouseListener(new MouseAdapter() {\r
+                       \r
+                       // Populate result and close dialog popup after clicking button\r
+                       public void mouseUp(MouseEvent e) {\r
+                               result = getSelectedReference();\r
+                               shell.dispose();\r
+                       }\r
+               });\r
+\r
+       }\r
+\r
+       protected ReferenceBase getSelectedReference() {\r
+               return null;\r
+       }\r
+       \r
+//     private void createSearchResultsViewer(Composite parent) {\r
+//             TableViewer searchResultsViewer = new TableViewer(parent, SWT.BORDER);\r
+//\r
+//             // Add content provider\r
+//             ObservableListContentProvider searchResultsProviderList = new ObservableListContentProvider();\r
+//             searchResultsViewer.setContentProvider(searchResultsProviderList);\r
+//\r
+//             // Label provider that listens for changes to name cache\r
+//             IObservableMap[] searchResultsLabelProviderMaps = BeansObservables\r
+//                             .observeMaps(searchResultsProviderList.getKnownElements(),\r
+//                                             TaxonNameBase.class, new String[] { "titleCache" });\r
+//             searchResultsViewer.setLabelProvider(new ObservableMapLabelProvider(\r
+//                             searchResultsLabelProviderMaps));\r
+//\r
+//             // Listens for new taxa opened for editing\r
+//             searchResultsViewer.setInput(observableSearchResultsList);\r
+//\r
+//             // Sort alphabetically\r
+//             searchResultsViewer.setComparator(new ViewerComparator());\r
+//             \r
+//             // On double click, open name editor\r
+//             searchResultsViewer.addDoubleClickListener(new IDoubleClickListener() {\r
+//\r
+//                     public void doubleClick(DoubleClickEvent event) {\r
+//                             IStructuredSelection selection = (StructuredSelection) event\r
+//                                             .getSelection();\r
+//                             Object element = selection.getFirstElement();\r
+//                             if (element instanceof TaxonNameBase) {\r
+//                                     setNewName((TaxonNameBase) element);\r
+//                             }\r
+//                     }\r
+//             });\r
+\r
+}\r