Project

General

Profile

Download (3.32 KB) Statistics
| Branch: | Tag: | Revision:
1
// $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
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
21
import eu.etaxonomy.cdm.model.common.TermVocabulary;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23

    
24
/**
25
 * @author l.morris
26
 * @date 8 Dec 2011
27
 *
28
 */
29
public class TermContentProvider implements ITreeContentProvider {
30

    
31
	/* (non-Javadoc)
32
	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
33
	 */
34
	@Override
35
	public void dispose() {
36
		// TODO Auto-generated method stub
37

    
38
	}
39

    
40
	/* (non-Javadoc)
41
	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
42
	 */
43
	@Override
44
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
45
		// TODO Auto-generated method stub
46

    
47
	}
48

    
49
	/* (non-Javadoc)
50
	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
51
	 */
52
	@Override
53
	public Object[] getElements(Object inputElement) {
54
	
55
		Collection<TermVocabulary> inputElements = (Collection<TermVocabulary>) inputElement;
56
		return inputElements.toArray();
57

    
58
	}
59

    
60
	/* (non-Javadoc)
61
	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
62
	 */
63
	@Override
64
	public Object[] getChildren(Object parentElement) {
65
		
66
		if(parentElement instanceof TermVocabulary){			
67
			return getTopLevelElements((TermVocabulary)parentElement);
68
		} else if (parentElement instanceof DefinedTermBase) {
69
			return ((DefinedTermBase) parentElement).getIncludes().toArray();
70
		}
71
		return null;
72
	}
73
	
74
	/**
75
	 *  
76
	 * @param vocabulary
77
	 * @return An array of DefinedTermBase objects that do not have parents
78
	 * 
79
	 * TODO: Needs to be implemented in cdmlib
80
	 */
81
	private Object[] getTopLevelElements(TermVocabulary vocabulary) {
82
		
83
		SortedSet<DefinedTermBase> terms = vocabulary.getTermsOrderedByLabels(CdmStore.getDefaultLanguage());
84
		Set<DefinedTermBase> topLevelTerms = new HashSet<DefinedTermBase>(); 
85
	 
86
		for (DefinedTermBase term : terms){
87
			 if (term.getPartOf() == null){
88
				 topLevelTerms.add(term);
89
			 }				
90
		}	 
91
	 	return topLevelTerms.toArray();
92
	}
93

    
94
	/* (non-Javadoc)
95
	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
96
	 */
97
	@Override
98
	public Object getParent(Object element) {
99

    
100
		if(element instanceof DefinedTermBase){
101
			DefinedTermBase definedTermBase = (DefinedTermBase)element;
102
			if (definedTermBase.getPartOf() == null) {
103
				return definedTermBase.getVocabulary();
104
			} else {
105
				return definedTermBase.getPartOf();
106
			}			
107
		}
108
		return null;
109

    
110
	}
111

    
112
	/* (non-Javadoc)
113
	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
114
	 */
115
	@Override
116
	public boolean hasChildren(Object element) {		
117
		if (getChildren(element) != null){			
118
			return getChildren(element).length > 0;
119
		}
120
		return false;
121
	}
122

    
123
}
(6-6/8)