Project

General

Profile

Download (3.34 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
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.
8
*/
9
package eu.etaxonomy.taxeditor.termtree;
10

    
11
import java.util.HashMap;
12
import java.util.List;
13
import java.util.Map;
14
import java.util.UUID;
15

    
16
import org.eclipse.jface.viewers.ITreeContentProvider;
17
import org.eclipse.jface.viewers.Viewer;
18

    
19
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
20
import eu.etaxonomy.cdm.model.term.TermNode;
21
import eu.etaxonomy.cdm.model.term.TermTree;
22
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
23
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
24

    
25
/**
26
 * <p>TermTreeContentProvider class.</p>
27
 *
28
 * @author n.hoffmann
29
 * @created Aug 5, 2010
30
 */
31
public class TermTreeContentProvider<T extends DefinedTermBase> implements ITreeContentProvider {
32

    
33
    private Viewer viewer;
34
    private TermNodeDto oldInput;
35
    private TermNodeDto newInput;
36
    private Map<UUID, TermNodeDto> uuidTermMap = new HashMap<>();
37

    
38
	@Override
39
	public void dispose() {}
40

    
41
	@Override
42
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
43
	    this.viewer = viewer;
44
	    if (oldInput instanceof TermNodeDto){
45
	        this.oldInput = (TermNodeDto)oldInput;
46
	    }
47
	    if (newInput instanceof TermNodeDto){
48
	        this.newInput = (TermNodeDto)newInput;
49
	    }
50
	    if (oldInput instanceof TermTreeDto){
51
	        this.oldInput = ((TermTreeDto)oldInput).getRoot();
52
	    }
53
	    if (newInput instanceof TermTreeDto){
54
            this.newInput = ((TermTreeDto)newInput).getRoot();
55
        }
56
	}
57

    
58
	@Override
59
	public Object[] getElements(Object inputElement) {
60
		return this.getChildren(inputElement);
61
	}
62

    
63
	@Override
64
	public Object[] getChildren(Object parentElement) {
65
	    if(parentElement instanceof TermTree){
66
            List<TermNode<?>> children = ((TermTree) parentElement).getRootChildren();
67
            return children.toArray();
68
        }else if(parentElement instanceof TermNode){
69
            List<TermNode<?>> children = ((TermNode) parentElement).getChildNodes();
70
            return children.toArray();
71
        }
72
		if(parentElement instanceof TermTreeDto){
73
		    if (((TermTreeDto) parentElement).getRoot() != null){
74
		        List<TermNodeDto> children = ((TermTreeDto) parentElement).getRoot().getChildren();
75
		        return children.toArray();
76
		    }
77
			return new Object[]{};
78
		}else if(parentElement instanceof TermNodeDto){
79
			List<TermNodeDto> children = ((TermNodeDto) parentElement).getChildren();
80
			return children.toArray();
81
		}else if(parentElement instanceof List){
82
			return ((List<TermNodeDto>) parentElement).toArray();
83
		}else{
84
			return new Object[]{};
85
		}
86
	}
87

    
88
	@Override
89
	public Object getParent(Object element) {
90
	    if(element instanceof TermNode){
91
            return ((TermNode<?>) element).getParent();
92
        }
93
	    if(element instanceof TermNodeDto){
94
	        TermNodeDto parent = uuidTermMap.get(((TermNodeDto) element).getParentUuid());
95
	        return parent;
96
	    }
97
		return null;
98
	}
99

    
100
	public Map<UUID, TermNodeDto> getUuidTermMap() {
101
        return uuidTermMap;
102
    }
103

    
104
	public void setUuidTermMap(Map<UUID, TermNodeDto> uuidTermMap) {
105
        this.uuidTermMap = uuidTermMap;
106
    }
107

    
108
	@Override
109
	public boolean hasChildren(Object element) {
110
		return getChildren(element).length != 0;
111
	}
112
}
(9-9/11)