Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / checklist / edit / RankEditingSupport.java
1 package eu.etaxonomy.taxeditor.editor.view.checklist.edit;
2
3 import java.util.List;
4
5 import org.apache.log4j.Logger;
6 import org.eclipse.jface.viewers.ArrayContentProvider;
7 import org.eclipse.jface.viewers.CellEditor;
8 import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
9 import org.eclipse.jface.viewers.EditingSupport;
10 import org.eclipse.jface.viewers.LabelProvider;
11 import org.eclipse.jface.viewers.TableViewer;
12 import org.eclipse.swt.SWT;
13 import org.eclipse.swt.widgets.Composite;
14
15 import eu.etaxonomy.cdm.model.name.Rank;
16 import eu.etaxonomy.cdm.model.taxon.Taxon;
17 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
18 import eu.etaxonomy.taxeditor.store.CdmStore;
19
20 public final class RankEditingSupport extends EditingSupport{
21
22 private ComboBoxViewerCellEditor cellEditor = null;
23 private final TableViewer viewer;
24 private final ChecklistEditor editor;
25
26
27 private static final Logger logger = Logger.getLogger(RankEditingSupport.class);
28
29 public RankEditingSupport(TableViewer viewer, ChecklistEditor checklistEditor) {
30 super(viewer);
31 this.viewer = viewer;
32 editor = checklistEditor;
33 cellEditor = new ComboBoxViewerCellEditor((Composite) viewer.getControl(), SWT.READ_ONLY);
34 cellEditor.setLabelProvider(new LabelProvider());
35 cellEditor.setContentProvider(new ArrayContentProvider());
36 //TODO set input
37 List<Rank> input = CdmStore.getTermManager().getPreferredTerms(Rank.class);
38 cellEditor.setInput(input);
39 }
40
41 @Override
42 protected CellEditor getCellEditor(Object element) {
43 return cellEditor;
44 }
45
46 @Override
47 protected boolean canEdit(Object element) {
48 return true;
49 }
50
51 @Override
52 protected Object getValue(Object element) {
53 if (element instanceof Taxon) {
54 Taxon taxon = (Taxon)element;
55 Rank rank = (taxon.getName().getRank() != null)?taxon.getName().getRank() : null;
56 return rank;
57 }
58 return null;
59 }
60
61 @Override
62 protected void setValue(Object element, Object value) {
63 if (element instanceof Taxon && value instanceof Rank) {
64 Taxon taxon = (Taxon)element;
65 Rank rank = (Rank) value;
66 taxon.getName().setRank(rank);
67 viewer.update(element, null);
68 viewer.refresh();
69 editor.setDirty(true);
70 editor.changed(element);
71 }
72 }
73
74 }