3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.editor
.definedterm
;
12 import java
.util
.Collection
;
13 import java
.util
.HashSet
;
15 import java
.util
.SortedSet
;
17 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
18 import org
.eclipse
.jface
.viewers
.Viewer
;
20 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
21 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
22 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
29 public class TermContentProvider
implements ITreeContentProvider
{
32 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
35 public void dispose() {
36 // TODO Auto-generated method stub
41 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
44 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
45 // TODO Auto-generated method stub
50 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
53 public Object
[] getElements(Object inputElement
) {
55 Collection
<TermVocabulary
> inputElements
= (Collection
<TermVocabulary
>) inputElement
;
56 return inputElements
.toArray();
61 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
64 public Object
[] getChildren(Object parentElement
) {
66 if(parentElement
instanceof TermVocabulary
){
67 return getTopLevelElements((TermVocabulary
) parentElement
);
68 } else if (parentElement
instanceof DefinedTermBase
) {
69 return ((DefinedTermBase
) parentElement
).getIncludes().toArray();
77 * @return An array of DefinedTermBase objects that do not have parents
79 * TODO: Needs to be implemented in cdmlib
81 private Object
[] getTopLevelElements(TermVocabulary vocabulary
) {
83 SortedSet
<DefinedTermBase
> terms
= vocabulary
.getTermsOrderedByLabels(CdmStore
.getDefaultLanguage());
84 Set
<DefinedTermBase
> topLevelTerms
= new HashSet
<DefinedTermBase
>();
86 for (DefinedTermBase term
: terms
){
87 if (term
.getPartOf() == null){
88 topLevelTerms
.add(term
);
93 return topLevelTerms
.toArray();
97 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
100 public Object
getParent(Object element
) {
102 if(element
instanceof DefinedTermBase
){
104 DefinedTermBase definedTerm
= (DefinedTermBase
)element
;
105 if (definedTerm
.getPartOf() == null) {
106 return definedTerm
.getVocabulary();
108 return definedTerm
.getPartOf();
115 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
118 public boolean hasChildren(Object element
) {
120 if (getChildren(element
) != null){
122 return getChildren(element
).length
> 0;