Project

General

Profile

Download (2.94 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
 * Copyright (C) 2007 EDIT
4
 * European Distributed Institute of Taxonomy 
5
 * http://www.e-taxonomy.eu
6
 * 
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.
9
 */
10

    
11
package eu.etaxonomy.taxeditor.editor.key.polytomous;
12

    
13
import org.eclipse.jface.viewers.ITableLabelProvider;
14
import org.eclipse.jface.viewers.StyledCellLabelProvider;
15
import org.eclipse.swt.graphics.Image;
16

    
17
import eu.etaxonomy.cdm.common.CdmUtils;
18
import eu.etaxonomy.cdm.model.description.KeyStatement;
19
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
20
import eu.etaxonomy.taxeditor.store.CdmStore;
21

    
22
/**
23
 * @author n.hoffmann
24
 * @created Apr 18, 2011
25
 * @version 1.0
26
 */
27
public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider
28
		implements ITableLabelProvider {
29

    
30
	/*
31
	 * (non-Javadoc)
32
	 * 
33
	 * @see
34
	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang
35
	 * .Object, int)
36
	 */
37
	@Override
38
	public Image getColumnImage(Object element, int columnIndex) {
39
		return null;
40
	}
41

    
42
	/*
43
	 * (non-Javadoc)
44
	 * 
45
	 * @see
46
	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
47
	 * .Object, int)
48
	 */
49
	@Override
50
	public String getColumnText(Object element, int columnIndex) {
51
		if (element instanceof PolytomousKeyNode) {
52

    
53
			PolytomousKeyNode node = (PolytomousKeyNode) element;
54

    
55
			switch (columnIndex) {
56
			case 0:
57
				return getItemNumber(node);
58
			case 1:
59
				return getItemQuestion(node);
60
			case 2:
61
				return getItemStatement(node);
62
			case 3:
63
				return getItemLink(node);
64
			}
65
		}
66
		return null;
67
	}
68

    
69
	private String getItemNumber(PolytomousKeyNode node) {
70
		if (isParentRoot(node)) {
71
			return "root";
72
		} else {
73
			PolytomousKeyNode parent = getParent(node);
74
			String itemNumber = parent.getNodeNumber() != null ? parent
75
					.getNodeNumber().toString() : "NaN";
76

    
77
			int index = parent.getChildren().indexOf(node);
78

    
79
			for (int i = 0; i < index; i++) {
80
				itemNumber += "'";
81
			}
82

    
83
			return itemNumber;
84
		}
85
	}
86

    
87
	private String getItemQuestion(PolytomousKeyNode node) {
88
		if (isParentRoot(node)) {
89
			return "";
90
		} else {
91
			KeyStatement question = getParent(node).getQuestion();
92
			return question != null ? question.getLabelText(CdmStore
93
					.getDefaultLanguage()) : "";
94
		}
95

    
96
	}
97

    
98
	private String getItemStatement(PolytomousKeyNode node) {
99
		KeyStatement statement = node.getStatement();
100
		return statement != null ? CdmUtils.Nz(statement.getLabelText(CdmStore
101
				.getDefaultLanguage())) : "No statement";
102
	}
103

    
104
	private String getItemLink(PolytomousKeyNode node) {
105
		String taxonString = node.getTaxon() != null ? node.getTaxon()
106
				.getName().getTitleCache() : "Taxon empty";
107

    
108
		return node.getChildren().isEmpty() ? taxonString : node
109
				.getNodeNumber().toString();
110
	}
111

    
112
	private PolytomousKeyNode getParent(PolytomousKeyNode node) {
113
		return node.getParent();
114
	}
115

    
116
	private boolean isParentRoot(PolytomousKeyNode node) {
117
		return getParent(node) == null;
118
	}
119

    
120
}
(8-8/8)