Project

General

Profile

Download (3.42 KB) Statistics
| Branch: | Tag: | Revision:
1 b9a0d300 l.morris
// $Id$
2
/**
3
* Copyright (C) 2009 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
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.
9
*/
10
package eu.etaxonomy.taxeditor.editor.definedterm;
11
12
import java.util.Collection;
13
import java.util.HashSet;
14
import java.util.Set;
15
import java.util.SortedSet;
16
17
import org.eclipse.jface.viewers.ITreeContentProvider;
18
import org.eclipse.jface.viewers.Viewer;
19
20 e717eb17 Cherian Mathew
import eu.etaxonomy.cdm.model.common.DefinedTerm;
21 b9a0d300 l.morris
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
22 e717eb17 Cherian Mathew
import eu.etaxonomy.cdm.model.common.TermBase;
23 b9a0d300 l.morris
import eu.etaxonomy.cdm.model.common.TermVocabulary;
24
import eu.etaxonomy.taxeditor.store.CdmStore;
25
26
/**
27
 * @author l.morris
28
 * @date 8 Dec 2011
29
 *
30
 */
31
public class TermContentProvider implements ITreeContentProvider {
32
33
	/* (non-Javadoc)
34
	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
35
	 */
36
	@Override
37
	public void dispose() {
38
		// TODO Auto-generated method stub
39
40
	}
41
42
	/* (non-Javadoc)
43
	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
44
	 */
45
	@Override
46
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
47
		// TODO Auto-generated method stub
48
49
	}
50
51
	/* (non-Javadoc)
52
	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
53
	 */
54
	@Override
55
	public Object[] getElements(Object inputElement) {
56
	
57
		Collection<TermVocabulary> inputElements = (Collection<TermVocabulary>) inputElement;
58
		return inputElements.toArray();
59 e717eb17 Cherian Mathew
60 b9a0d300 l.morris
	}
61
62
	/* (non-Javadoc)
63
	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
64
	 */
65
	@Override
66
	public Object[] getChildren(Object parentElement) {
67
		
68 e717eb17 Cherian Mathew
		if(parentElement instanceof TermVocabulary){			
69
			return getTopLevelElements((TermVocabulary)parentElement);
70 b9a0d300 l.morris
		} else if (parentElement instanceof DefinedTermBase) {
71
			return ((DefinedTermBase) parentElement).getIncludes().toArray();
72
		}
73
		return null;
74
	}
75
	
76
	/**
77
	 *  
78
	 * @param vocabulary
79
	 * @return An array of DefinedTermBase objects that do not have parents
80
	 * 
81
	 * TODO: Needs to be implemented in cdmlib
82
	 */
83
	private Object[] getTopLevelElements(TermVocabulary vocabulary) {
84
		
85
		SortedSet<DefinedTermBase> terms = vocabulary.getTermsOrderedByLabels(CdmStore.getDefaultLanguage());
86
		Set<DefinedTermBase> topLevelTerms = new HashSet<DefinedTermBase>(); 
87
	 
88
		for (DefinedTermBase term : terms){
89
			 if (term.getPartOf() == null){
90
				 topLevelTerms.add(term);
91 e717eb17 Cherian Mathew
			 }				
92
		}	 
93 b9a0d300 l.morris
	 	return topLevelTerms.toArray();
94
	}
95
96
	/* (non-Javadoc)
97
	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
98
	 */
99
	@Override
100
	public Object getParent(Object element) {
101 e717eb17 Cherian Mathew
102 b9a0d300 l.morris
		if(element instanceof DefinedTermBase){
103 e717eb17 Cherian Mathew
			DefinedTermBase definedTermBase = (DefinedTermBase)element;
104
			if (definedTermBase.getPartOf() == null) {
105
				return definedTermBase.getVocabulary();
106 b9a0d300 l.morris
			} else {
107 e717eb17 Cherian Mathew
				return definedTermBase.getPartOf();
108
			}			
109
		}
110 b9a0d300 l.morris
		return null;
111 e717eb17 Cherian Mathew
112 b9a0d300 l.morris
	}
113
114
	/* (non-Javadoc)
115
	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
116
	 */
117
	@Override
118 e717eb17 Cherian Mathew
	public boolean hasChildren(Object element) {		
119
		if (getChildren(element) != null){			
120 b9a0d300 l.morris
			return getChildren(element).length > 0;
121
		}
122
		return false;
123
	}
124
125
}