Revision 1c9c9562
Added by Patrick Plitzner almost 7 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermContentProvider.java | ||
---|---|---|
1 | 1 |
/** |
2 | 2 |
* Copyright (C) 2009 EDIT |
3 |
* European Distributed Institute of Taxonomy
|
|
3 |
* European Distributed Institute of Taxonomy |
|
4 | 4 |
* http://www.e-taxonomy.eu |
5 |
*
|
|
5 |
* |
|
6 | 6 |
* The contents of this file are subject to the Mozilla Public License Version 1.1 |
7 | 7 |
* See LICENSE.TXT at the top of this package for the full license terms. |
8 | 8 |
*/ |
... | ... | |
50 | 50 |
*/ |
51 | 51 |
@Override |
52 | 52 |
public Object[] getElements(Object inputElement) { |
53 |
|
|
53 |
|
|
54 | 54 |
Collection<TermVocabulary> inputElements = (Collection<TermVocabulary>) inputElement; |
55 | 55 |
return inputElements.toArray(); |
56 | 56 |
|
... | ... | |
61 | 61 |
*/ |
62 | 62 |
@Override |
63 | 63 |
public Object[] getChildren(Object parentElement) { |
64 |
|
|
65 |
if(parentElement instanceof TermVocabulary){
|
|
64 |
|
|
65 |
if(parentElement instanceof TermVocabulary){ |
|
66 | 66 |
return getTopLevelElements((TermVocabulary)parentElement); |
67 | 67 |
} else if (parentElement instanceof DefinedTermBase) { |
68 |
return ((DefinedTermBase) parentElement).getIncludes().toArray(); |
|
68 |
Set<Object> includes = ((DefinedTermBase) parentElement).getIncludes(); |
|
69 |
Set<Object> generalizationOfs = ((DefinedTermBase) parentElement).getGeneralizationOf(); |
|
70 |
generalizationOfs.addAll(includes); |
|
71 |
return generalizationOfs.toArray(); |
|
69 | 72 |
} |
70 | 73 |
return null; |
71 | 74 |
} |
72 |
|
|
75 |
|
|
73 | 76 |
/** |
74 |
*
|
|
77 |
* |
|
75 | 78 |
* @param vocabulary |
76 | 79 |
* @return An array of DefinedTermBase objects that do not have parents |
77 |
*
|
|
80 |
* |
|
78 | 81 |
* TODO: Needs to be implemented in cdmlib |
79 | 82 |
*/ |
80 | 83 |
private Object[] getTopLevelElements(TermVocabulary vocabulary) { |
81 |
|
|
84 |
|
|
82 | 85 |
SortedSet<DefinedTermBase> terms = vocabulary.getTermsOrderedByLabels(CdmStore.getDefaultLanguage()); |
83 |
Set<DefinedTermBase> topLevelTerms = new HashSet<DefinedTermBase>();
|
|
84 |
|
|
86 |
Set<DefinedTermBase> topLevelTerms = new HashSet<DefinedTermBase>(); |
|
87 |
|
|
85 | 88 |
for (DefinedTermBase term : terms){ |
86 |
if (term.getPartOf() == null){ |
|
89 |
if (term.getPartOf() == null && term.getKindOf() == null){
|
|
87 | 90 |
topLevelTerms.add(term); |
88 |
}
|
|
89 |
}
|
|
91 |
} |
|
92 |
} |
|
90 | 93 |
return topLevelTerms.toArray(); |
91 | 94 |
} |
92 | 95 |
|
... | ... | |
98 | 101 |
|
99 | 102 |
if(element instanceof DefinedTermBase){ |
100 | 103 |
DefinedTermBase definedTermBase = (DefinedTermBase)element; |
101 |
if (definedTermBase.getPartOf() == null) { |
|
102 |
return definedTermBase.getVocabulary(); |
|
103 |
} else { |
|
104 |
return definedTermBase.getPartOf(); |
|
105 |
} |
|
104 |
if (definedTermBase.getPartOf() != null) { |
|
105 |
return definedTermBase.getPartOf(); |
|
106 |
}else if (definedTermBase.getKindOf() != null) { |
|
107 |
return definedTermBase.getKindOf(); |
|
108 |
} else { |
|
109 |
return definedTermBase.getVocabulary(); |
|
110 |
} |
|
106 | 111 |
} |
107 | 112 |
return null; |
108 | 113 |
|
... | ... | |
112 | 117 |
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) |
113 | 118 |
*/ |
114 | 119 |
@Override |
115 |
public boolean hasChildren(Object element) {
|
|
116 |
if (getChildren(element) != null){
|
|
120 |
public boolean hasChildren(Object element) { |
|
121 |
if (getChildren(element) != null){ |
|
117 | 122 |
return getChildren(element).length > 0; |
118 | 123 |
} |
119 | 124 |
return false; |
Also available in: Unified diff
ref #6762 Implement option to add kindOf related terms in term editor