1 package eu
.etaxonomy
.taxeditor
.view
;
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
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
16 import eu
.etaxonomy
.taxeditor
.Activator
;
17 import eu
.etaxonomy
.taxeditor
.controller
.ActionOpenNameEditor
;
19 public class RecentNamesTableViewer
extends TableViewer
{
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));
25 // Add content provider
26 ObservableListContentProvider rnViewerContentProviderList
= new ObservableListContentProvider();
27 this.setContentProvider(rnViewerContentProviderList
);
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
) {
35 * JFace databinding syntax makes it to difficult to retrieve
36 * Taxon.getName().getNameCache, so override function that returns
40 * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int)
42 public String
getColumnText(Object element
, int columnIndex
) {
43 return ((Taxon
) element
).getName().getTitleCache();
47 // Listens for new taxa opened for editing
48 this.setInput(Activator
.getDefault().getObservableRecentNamesList());
50 // On double click, open name editor
51 this.addDoubleClickListener(new IDoubleClickListener(){
53 public void doubleClick(DoubleClickEvent event
) {
56 taxon
= (Taxon
) ((StructuredSelection
)event
.getSelection()).getFirstElement();
61 new ActionOpenNameEditor(taxon
).run();