2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.navigation
.taxonomictree
;
11 import java
.util
.List
;
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
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
22 * TODO maybe we want to implement ILazyTreeContentProvider
29 public class TaxonomicTreeContentProvider
implements ITreeContentProvider
{
30 private static final Logger logger
= Logger
31 .getLogger(TaxonomicTreeContentProvider
.class);
36 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
38 public Object
[] getChildren(Object parentElement
) {
40 String errorMessage
= "getChildren(parentElement) called with non-Taxon element.";
42 // Make sure we are dealing with taxon objects
43 Assert
.isTrue(parentElement
instanceof Taxon
, errorMessage
);
45 if (parentElement
instanceof Taxon
) {
46 return ((Taxon
) parentElement
).getTaxonomicChildren().toArray();
52 private Set
<Taxon
> getTaxonChildren(Taxon parentTaxon
) {
53 return parentTaxon
.getTaxonomicChildren();
59 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
61 public Object
getParent(Object element
) {
63 Assert
.isTrue(element
instanceof Taxon
,
64 "getParent(element) called with non-Taxon element.");
66 return ((Taxon
) element
).getTaxonomicParent();
72 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
74 public boolean hasChildren(Object element
) {
75 Assert
.isTrue(element
instanceof Taxon
,
76 "hasChildren(element) called with non-Taxon element.");
78 return ((Taxon
) element
).getTaxonomicChildrenCount() > 0;
85 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
87 @SuppressWarnings("unchecked")
88 public Object
[] getElements(Object inputElement
) {
89 List
<Taxon
> rootTaxa
= (List
<Taxon
>) inputElement
;
90 return rootTaxa
.toArray();
96 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
98 public void dispose() {}
103 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
104 * java.lang.Object, java.lang.Object)
106 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {