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
.editor
.key
.polytomous
;
12 import java
.util
.ArrayList
;
13 import java
.util
.List
;
15 import org
.eclipse
.jface
.viewers
.Viewer
;
16 import org
.eclipse
.zest
.core
.viewers
.IGraphContentProvider
;
18 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKey
;
19 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKeyNode
;
20 import eu
.etaxonomy
.taxeditor
.editor
.l10n
.Messages
;
21 import eu
.etaxonomy
.taxeditor
.model
.PolytomousKeyRelationship
;
26 * @created Mar 30, 2011
29 class PolytomousKeyGraphContentProvider
implements IGraphContentProvider
{
31 private List
<PolytomousKeyRelationship
> relations
;
34 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
39 public void dispose() {
44 public Object
[] getElements(Object inputElement
) {
45 relations
= new ArrayList
<PolytomousKeyRelationship
>();
47 if (inputElement
instanceof PolytomousKey
) {
48 getTreeRecursively(relations
, inputElement
);
50 return relations
.toArray();
53 private void getTreeRecursively(List
<PolytomousKeyRelationship
> relations
,
55 List
<PolytomousKeyNode
> children
;
57 if (parent
instanceof PolytomousKeyNode
) {
58 ((PolytomousKeyNode
) parent
).removeNullValueFromChildren();
59 children
= ((PolytomousKeyNode
) parent
).getChildren();
60 } else if (parent
instanceof PolytomousKey
) {
61 children
= new ArrayList
<PolytomousKeyNode
>();
62 children
.add(((PolytomousKey
) parent
).getRoot());
64 throw new RuntimeException(
65 Messages
.PolytomousKeyGraphContentProvider_WRONG_PARENT
69 for (PolytomousKeyNode childNode
: children
) {
70 relations
.add(new PolytomousKeyRelationship(parent
, childNode
));
71 getTreeRecursively(relations
, childNode
);
76 public Object
getSource(Object relationship
) {
77 return ((PolytomousKeyRelationship
) relationship
).getSource();
81 public Object
getDestination(Object relationship
) {
82 return ((PolytomousKeyRelationship
) relationship
).getDestination();