2 * Copyright (C) 2009 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
.editor
.definedterm
;
11 import java
.util
.Collection
;
12 import java
.util
.HashSet
;
14 import java
.util
.SortedSet
;
16 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
17 import org
.eclipse
.jface
.viewers
.Viewer
;
19 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
20 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
21 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
28 public class TermContentProvider
implements ITreeContentProvider
{
31 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
34 public void dispose() {
35 // TODO Auto-generated method stub
40 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
43 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
44 // TODO Auto-generated method stub
49 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
52 public Object
[] getElements(Object inputElement
) {
54 Collection
<TermVocabulary
> inputElements
= (Collection
<TermVocabulary
>) inputElement
;
55 return inputElements
.toArray();
60 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
63 public Object
[] getChildren(Object parentElement
) {
65 if(parentElement
instanceof TermVocabulary
){
66 return getTopLevelElements((TermVocabulary
)parentElement
);
67 } else if (parentElement
instanceof DefinedTermBase
) {
68 return ((DefinedTermBase
) parentElement
).getIncludes().toArray();
76 * @return An array of DefinedTermBase objects that do not have parents
78 * TODO: Needs to be implemented in cdmlib
80 private Object
[] getTopLevelElements(TermVocabulary vocabulary
) {
82 SortedSet
<DefinedTermBase
> terms
= vocabulary
.getTermsOrderedByLabels(CdmStore
.getDefaultLanguage());
83 Set
<DefinedTermBase
> topLevelTerms
= new HashSet
<DefinedTermBase
>();
85 for (DefinedTermBase term
: terms
){
86 if (term
.getPartOf() == null){
87 topLevelTerms
.add(term
);
90 return topLevelTerms
.toArray();
94 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
97 public Object
getParent(Object element
) {
99 if(element
instanceof DefinedTermBase
){
100 DefinedTermBase definedTermBase
= (DefinedTermBase
)element
;
101 if (definedTermBase
.getPartOf() == null) {
102 return definedTermBase
.getVocabulary();
104 return definedTermBase
.getPartOf();
112 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
115 public boolean hasChildren(Object element
) {
116 if (getChildren(element
) != null){
117 return getChildren(element
).length
> 0;