Moving editor sources back into trunk
[taxeditor.git] / taxeditor-navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / taxonomictree / TaxonomicTreeContentProvider.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.navigation.taxonomictree;
10
11 import java.util.List;
12 import java.util.Set;
13
14 import org.apache.log4j.Logger;
15 import org.eclipse.core.runtime.Assert;
16 import org.eclipse.jface.viewers.ITreeContentProvider;
17 import org.eclipse.jface.viewers.Viewer;
18
19 import eu.etaxonomy.cdm.model.taxon.Taxon;
20
21 /**
22 * TODO maybe we want to implement ILazyTreeContentProvider
23 *
24 * @author p.ciardelli
25 * @created 27.06.2008
26 * @version 1.0
27 * @author n.hoffmann
28 */
29 public class TaxonomicTreeContentProvider implements ITreeContentProvider {
30 private static final Logger logger = Logger
31 .getLogger(TaxonomicTreeContentProvider.class);
32
33 /*
34 * (non-Javadoc)
35 *
36 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
37 */
38 public Object[] getChildren(Object parentElement) {
39
40 String errorMessage = "getChildren(parentElement) called with non-Taxon element.";
41
42 // Make sure we are dealing with taxon objects
43 Assert.isTrue(parentElement instanceof Taxon, errorMessage);
44
45 if (parentElement instanceof Taxon) {
46 return ((Taxon) parentElement).getTaxonomicChildren().toArray();
47 }
48
49 return null;
50 }
51
52 private Set<Taxon> getTaxonChildren(Taxon parentTaxon) {
53 return parentTaxon.getTaxonomicChildren();
54 }
55
56 /*
57 * (non-Javadoc)
58 *
59 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
60 */
61 public Object getParent(Object element) {
62
63 Assert.isTrue(element instanceof Taxon,
64 "getParent(element) called with non-Taxon element.");
65
66 return ((Taxon) element).getTaxonomicParent();
67 }
68
69 /*
70 * (non-Javadoc)
71 *
72 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
73 */
74 public boolean hasChildren(Object element) {
75 Assert.isTrue(element instanceof Taxon,
76 "hasChildren(element) called with non-Taxon element.");
77
78 return ((Taxon) element).getTaxonomicChildrenCount() > 0;
79 }
80
81
82 /*
83 * (non-Javadoc)
84 *
85 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
86 */
87 @SuppressWarnings("unchecked")
88 public Object[] getElements(Object inputElement) {
89 List<Taxon> rootTaxa = (List<Taxon>) inputElement;
90 return rootTaxa.toArray();
91 }
92
93 /*
94 * (non-Javadoc)
95 *
96 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
97 */
98 public void dispose() {}
99
100 /*
101 * (non-Javadoc)
102 *
103 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
104 * java.lang.Object, java.lang.Object)
105 */
106 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
107 }
108 }