Cleaned up / renamed.
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor / src / eu / etaxonomy / taxeditor / view / RecentNamesTableViewer.java
1 package eu.etaxonomy.taxeditor.view;
2
3 import org.eclipse.core.databinding.beans.BeansObservables;
4 import org.eclipse.core.databinding.observable.map.IObservableMap;
5 import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
6 import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
7 import org.eclipse.jface.viewers.DoubleClickEvent;
8 import org.eclipse.jface.viewers.IDoubleClickListener;
9 import org.eclipse.jface.viewers.StructuredSelection;
10 import org.eclipse.jface.viewers.TableViewer;
11 import org.eclipse.swt.SWT;
12 import org.eclipse.swt.layout.GridData;
13 import org.eclipse.swt.widgets.Composite;
14
15 import eu.etaxonomy.cdm.model.taxon.Taxon;
16 import eu.etaxonomy.taxeditor.Activator;
17 import eu.etaxonomy.taxeditor.controller.ActionOpenNameEditor;
18
19 public class RecentNamesTableViewer extends TableViewer {
20
21 public RecentNamesTableViewer(Composite parent) {
22 super(parent, SWT.H_SCROLL | SWT.V_SCROLL);
23 this.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
24
25 // Add content provider
26 ObservableListContentProvider rnViewerContentProviderList = new ObservableListContentProvider();
27 this.setContentProvider(rnViewerContentProviderList);
28
29 // Label provider that listens for changes to name cache
30 IObservableMap[] rnViewerLabelProviderMaps = BeansObservables.observeMaps(rnViewerContentProviderList.
31 getKnownElements(), Taxon.class, new String[]{"name"});
32 this.setLabelProvider(new ObservableMapLabelProvider(rnViewerLabelProviderMaps) {
33
34 /*
35 * JFace databinding syntax makes it to difficult to retrieve
36 * Taxon.getName().getNameCache, so override function that returns
37 * label
38 *
39 * (non-Javadoc)
40 * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int)
41 */
42 public String getColumnText(Object element, int columnIndex) {
43 return ((Taxon) element).getName().getTitleCache();
44 }
45 });
46
47 // Listens for new taxa opened for editing
48 this.setInput(Activator.getDefault().getObservableRecentNamesList());
49
50 // On double click, open name editor
51 this.addDoubleClickListener(new IDoubleClickListener(){
52
53 public void doubleClick(DoubleClickEvent event) {
54 Taxon taxon = null;
55 try {
56 taxon = (Taxon) ((StructuredSelection)event.getSelection()).getFirstElement();
57 }catch (Exception e){
58 e.printStackTrace();
59 taxon = null;
60 }
61 new ActionOpenNameEditor(taxon).run();
62 }
63 });
64 }
65 }