1 package eu
.etaxonomy
.taxeditor
.navigation
;
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
.dnd
.DND
;
13 import org
.eclipse
.swt
.dnd
.DropTarget
;
14 import org
.eclipse
.swt
.dnd
.DropTargetAdapter
;
15 import org
.eclipse
.swt
.dnd
.DropTargetEvent
;
16 import org
.eclipse
.swt
.dnd
.Transfer
;
17 import org
.eclipse
.swt
.layout
.GridData
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
21 import eu
.etaxonomy
.taxeditor
.actions
.TaxonTransfer
;
22 import eu
.etaxonomy
.taxeditor
.actions
.ui
.OpenTaxonEditorAction
;
24 public class FavoritesTableViewer
extends TableViewer
{
26 public FavoritesTableViewer(Composite parent
) {
27 super(parent
, SWT
.H_SCROLL
| SWT
.V_SCROLL
);
28 this.getTable().setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
30 // Add content provider
31 ObservableListContentProvider favoritesContentProviderList
= new ObservableListContentProvider();
32 this.setContentProvider(favoritesContentProviderList
);
34 // Label provider that listens for changes to name cache
35 IObservableMap
[] rnViewerLabelProviderMaps
= BeansObservables
.observeMaps(favoritesContentProviderList
.
36 // getKnownElements(), IFavoritesDraggable.class, new String[]{"label"});
37 getKnownElements(), Taxon
.class, new String
[]{"name"});
38 this.setLabelProvider(new ObservableMapLabelProvider(rnViewerLabelProviderMaps
) {
41 * JFace databinding syntax makes it to difficult to retrieve
42 * Taxon.getName().getNameCache, so override function that returns
46 * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int)
48 public String
getColumnText(Object element
, int columnIndex
) {
49 return element
.toString();
50 // return ((Taxon) element).getName().getTitleCache();
54 // Listens for new taxa opened for editing
55 this.setInput(FavoritesView
.getObservableFavorites());
57 // On double click, open name editor
58 this.addDoubleClickListener(new IDoubleClickListener(){
60 public void doubleClick(DoubleClickEvent event
) {
61 Object element
= ((StructuredSelection
)event
.getSelection()).getFirstElement();
62 if (element
instanceof Taxon
) {
63 new OpenTaxonEditorAction((Taxon
) element
).run();
69 Transfer
[] types
= new Transfer
[] {TaxonTransfer
.getInstance()};
70 // int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT;
71 int operations
= DND
.DROP_COPY
;
72 DropTarget target
= new DropTarget(this.getControl(), operations
);
73 target
.setTransfer(types
);
74 target
.addDropListener(new DropTargetAdapter() {
76 public void dragEnter(DropTargetEvent event
) {
79 public void drop(DropTargetEvent event
) {
81 // Add event to favorites list
82 FavoritesView
.addFavorite(event
.data
);