1 package eu
.etaxonomy
.taxeditor
.editor
.view
.derivate
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Collections
;
8 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
9 import org
.eclipse
.jface
.viewers
.Viewer
;
11 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
12 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
13 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
14 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
15 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
17 public class DerivateContentProvider
implements ITreeContentProvider
{
20 public void dispose() {
21 // TODO Auto-generated method stub
26 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
30 public Object
[] getElements(Object inputElement
) {
31 SpecimenOrObservationBase
<?
> specimen
= null;
32 if(inputElement
instanceof DerivateViewEditorInput
){
33 inputElement
= ((DerivateViewEditorInput
) inputElement
).getDerivate();
36 // return the parent FieldUnit if element is a DerivedUnit
37 if(inputElement
instanceof DerivedUnit
){
38 specimen
= EditorUtil
.getFieldUnit((DerivedUnit
)inputElement
);
40 else if(inputElement
instanceof FieldUnit
){
41 specimen
= (FieldUnit
) inputElement
;
44 return Collections
.singleton(specimen
).toArray();
47 return Collections
.EMPTY_LIST
.toArray();
52 public Object
[] getChildren(Object parentElement
) {
53 if(parentElement
instanceof DerivateViewEditorInput
){
54 parentElement
= ((DerivateViewEditorInput
) parentElement
).getDerivate();
57 if(parentElement
instanceof SpecimenOrObservationBase
){
58 return getDerivates((SpecimenOrObservationBase
) parentElement
).toArray();
64 public Object
getParent(Object element
) {
65 if(element
instanceof DerivateViewEditorInput
){
66 element
= ((DerivateViewEditorInput
) element
).getDerivate();
69 if(element
instanceof FieldUnit
){
72 else if(element
instanceof DerivedUnit
){
73 DerivedUnit derivedUnit
= (DerivedUnit
)element
;
74 return derivedUnit
.getOriginalUnit();
80 public boolean hasChildren(Object element
) {
81 if(element
instanceof DerivateViewEditorInput
){
82 element
= ((DerivateViewEditorInput
) element
).getDerivate();
85 if(element
instanceof SpecimenOrObservationBase
){
86 SpecimenOrObservationBase specimenOrObservation
= (SpecimenOrObservationBase
)element
;
87 for(DerivationEvent event
:(Set
<DerivationEvent
>)specimenOrObservation
.getDerivationEvents()){
88 if(!event
.getDerivatives().isEmpty()){
96 private List
<DerivedUnit
> getDerivates(SpecimenOrObservationBase specimenOrObservation
){
97 List
<DerivedUnit
> derivates
= new ArrayList
<DerivedUnit
>();
98 for(DerivationEvent derivationEvent
:(Set
<DerivationEvent
>)specimenOrObservation
.getDerivationEvents()){
99 derivates
.addAll(derivationEvent
.getDerivatives());