3 * Copyright (C) 2017 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
.navigation
.navigator
.e4
;
12 import java
.util
.List
;
14 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
16 import eu
.etaxonomy
.cdm
.hibernate
.HHH_9751_Util
;
17 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.ITaxonTreeNode
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
21 import eu
.etaxonomy
.taxeditor
.navigation
.navigator
.Root
;
28 public class TaxonNavigatorContentProviderE4
implements ITreeContentProvider
{
30 private static final Object
[] NO_CHILDREN
= new Object
[0];
36 public Object
[] getElements(Object inputElement
) {
37 return this.getChildren(inputElement
);
44 public Object
[] getChildren(Object parentElement
) {
45 Object
[] children
= null;
47 if (parentElement
instanceof Root
) {
48 children
= ((Root
) parentElement
).getParentBeans().toArray();
49 }else if(parentElement
instanceof Classification
){
50 children
= ((Classification
) parentElement
).getChildNodes().toArray();
52 //FIXME E4 show synonym in navigator?
54 // if (parentElement instanceof Synonym) {
55 // children = NO_CHILDREN;
56 // } else if (parentElement instanceof TaxonNode) {
57 // List<TaxonBase> list = new ArrayList<TaxonBase>();
59 // Taxon taxon = ((TaxonNode) parentElement).getTaxon();
61 // for (TaxonBase taxonBase : new IterableSynonymyList(taxon)) {
62 // if (taxonBase instanceof Synonym) {
63 // list.add(taxonBase);
66 // children = list.toArray();
69 if(parentElement
instanceof ITaxonTreeNode
){
70 ITaxonTreeNode treeNode
= (ITaxonTreeNode
) HibernateProxyHelper
.deproxy(parentElement
);
71 List
<TaxonNode
> childrenSet
= treeNode
.getChildNodes();
72 HHH_9751_Util
.removeAllNull(childrenSet
);
73 children
= childrenSet
.toArray();
75 return children
!= null ? children
: NO_CHILDREN
;
82 public Object
getParent(Object element
) {
83 if(element
instanceof TaxonNode
){
84 return ((TaxonNode
) element
).getParent();
93 public boolean hasChildren(Object element
) {
94 if(element
instanceof TaxonNode
){
95 return ((TaxonNode
) element
).getCountChildren() > 0;
97 return this.getChildren(element
).length
> 0;