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
.TaxEditorPlugin
;
22 import eu
.etaxonomy
.taxeditor
.actions
.TaxonTransfer
;
23 import eu
.etaxonomy
.taxeditor
.actions
.ui
.OpenTaxonEditorAction
;
25 public class FavoritesTableViewer
extends TableViewer
{
27 public FavoritesTableViewer(Composite parent
) {
28 super(parent
, SWT
.H_SCROLL
| SWT
.V_SCROLL
);
29 this.getTable().setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
31 // Add content provider
32 ObservableListContentProvider favoritesContentProviderList
= new ObservableListContentProvider();
33 this.setContentProvider(favoritesContentProviderList
);
35 // Label provider that listens for changes to name cache
36 IObservableMap
[] rnViewerLabelProviderMaps
= BeansObservables
.observeMaps(favoritesContentProviderList
.
37 // getKnownElements(), IFavoritesDraggable.class, new String[]{"label"});
38 getKnownElements(), Taxon
.class, new String
[]{"name"});
39 this.setLabelProvider(new ObservableMapLabelProvider(rnViewerLabelProviderMaps
) {
42 * JFace databinding syntax makes it to difficult to retrieve
43 * Taxon.getName().getNameCache, so override function that returns
47 * @see org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider#getColumnText(java.lang.Object, int)
49 public String
getColumnText(Object element
, int columnIndex
) {
50 return element
.toString();
51 // return ((Taxon) element).getName().getTitleCache();
55 // Listens for new taxa opened for editing
56 this.setInput(TaxEditorPlugin
.getDefault().getObservableFavoritesList());
58 // On double click, open name editor
59 this.addDoubleClickListener(new IDoubleClickListener(){
61 public void doubleClick(DoubleClickEvent event
) {
62 Object element
= ((StructuredSelection
)event
.getSelection()).getFirstElement();
63 if (element
instanceof Taxon
) {
64 new OpenTaxonEditorAction((Taxon
) element
).run();
70 Transfer
[] types
= new Transfer
[] {TaxonTransfer
.getInstance()};
71 // int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT;
72 int operations
= DND
.DROP_COPY
;
73 DropTarget target
= new DropTarget(this.getControl(), operations
);
74 target
.setTransfer(types
);
75 target
.addDropListener(new DropTargetAdapter() {
77 public void dragEnter(DropTargetEvent event
) {
78 // System.out.println("hello");
81 public void drop(DropTargetEvent event
) {
83 // Add event to favorites list
84 TaxEditorPlugin
.getDefault().getObservableFavoritesList().add(event
.data
);