2 * Copyright (C) 2007 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.
10 package eu
.etaxonomy
.taxeditor
.featuretree
;
12 import java
.util
.HashMap
;
13 import java
.util
.List
;
15 import java
.util
.UUID
;
17 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
18 import org
.eclipse
.jface
.viewers
.Viewer
;
20 import eu
.etaxonomy
.cdm
.model
.term
.DefinedTermBase
;
21 import eu
.etaxonomy
.cdm
.model
.term
.TermNode
;
22 import eu
.etaxonomy
.cdm
.model
.term
.TermTree
;
23 import eu
.etaxonomy
.cdm
.persistence
.dto
.TermNodeDto
;
24 import eu
.etaxonomy
.cdm
.persistence
.dto
.TermTreeDto
;
27 * <p>TermTreeContentProvider class.</p>
30 * @created Aug 5, 2010
33 public class TermTreeContentProvider
<T
extends DefinedTermBase
> implements ITreeContentProvider
{
38 Map
<UUID
, TermNodeDto
> uuidTermMap
= new HashMap
<>();
41 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
45 public void dispose() {
50 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
54 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
56 if (oldInput
instanceof TermNodeDto
){
57 this.oldInput
= (TermNodeDto
)oldInput
;
59 if (newInput
instanceof TermNodeDto
){
60 this.newInput
= (TermNodeDto
)newInput
;
62 if (oldInput
instanceof TermTreeDto
){
63 this.oldInput
= ((TermTreeDto
)oldInput
).getRoot();
65 if (newInput
instanceof TermTreeDto
){
66 this.newInput
= ((TermTreeDto
)newInput
).getRoot();
73 public Object
[] getElements(Object inputElement
) {
74 return this.getChildren(inputElement
);
79 public Object
[] getChildren(Object parentElement
) {
80 if(parentElement
instanceof TermTree
){
81 List
<TermNode
> children
= ((TermTree
) parentElement
).getRootChildren();
82 return children
.toArray();
83 }else if(parentElement
instanceof TermNode
){
84 List
<TermNode
> children
= ((TermNode
) parentElement
).getChildNodes();
85 return children
.toArray();
87 if(parentElement
instanceof TermTreeDto
){
88 if (((TermTreeDto
) parentElement
).getRoot() != null){
89 List
<TermNodeDto
> children
= ((TermTreeDto
) parentElement
).getRoot().getChildren();
90 return children
.toArray();
92 return new Object
[]{};
93 }else if(parentElement
instanceof TermNodeDto
){
94 List
<TermNodeDto
> children
= ((TermNodeDto
) parentElement
).getChildren();
95 return children
.toArray();
96 }else if(parentElement
instanceof List
){
97 return ((List
<TermNodeDto
>) parentElement
).toArray();
99 return new Object
[]{};
105 public Object
getParent(Object element
) {
106 if(element
instanceof TermNode
){
107 return ((TermNode
) element
).getParent();
109 if(element
instanceof TermNodeDto
){
110 TermNodeDto parent
= uuidTermMap
.get(((TermNodeDto
) element
).getParentUuid());
116 public Map
<UUID
, TermNodeDto
> getUuidTermMap() {
120 public void setUuidTermMap(Map
<UUID
, TermNodeDto
> uuidTermMap
) {
121 this.uuidTermMap
= uuidTermMap
;
127 public boolean hasChildren(Object element
) {
128 return getChildren(element
).length
!= 0;