Project

General

Profile

« Previous | Next » 

Revision 340162f2

Added by Niels Hoffmann about 13 years ago

Link in PolytomousKeyListEditor is recognizable as such; Added a menu

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListLabelProvider.java
10 10

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

  
13
import org.eclipse.jface.viewers.ITableLabelProvider;
14 13
import org.eclipse.jface.viewers.StyledCellLabelProvider;
15
import org.eclipse.swt.graphics.Image;
14
import org.eclipse.jface.viewers.StyledString;
15
import org.eclipse.jface.viewers.StyledString.Styler;
16
import org.eclipse.jface.viewers.ViewerCell;
17
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.custom.StyleRange;
19
import org.eclipse.swt.graphics.Color;
20
import org.eclipse.swt.graphics.TextStyle;
21
import org.eclipse.swt.widgets.Display;
16 22

  
17 23
import eu.etaxonomy.cdm.common.CdmUtils;
18 24
import eu.etaxonomy.cdm.model.description.KeyStatement;
......
24 30
 * @created Apr 18, 2011
25 31
 * @version 1.0
26 32
 */
27
public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider
28
		implements ITableLabelProvider {
33
public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider {
29 34

  
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
	}
35
	private static Color colorLink = Display.getCurrent().getSystemColor(
36
			SWT.COLOR_BLUE);
37
	private Styler styler;
38

  
39
	private static final String EMPTY = "";
40
	// TODO make this configurable via preferences
41
	private static final String INCREMENTOR_CHARACTER = "'";
41 42

  
42 43
	/*
43 44
	 * (non-Javadoc)
44 45
	 * 
45 46
	 * @see
46
	 * org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang
47
	 * .Object, int)
47
	 * org.eclipse.jface.viewers.StyledCellLabelProvider#update(org.eclipse.
48
	 * jface.viewers.ViewerCell)
48 49
	 */
49 50
	@Override
50
	public String getColumnText(Object element, int columnIndex) {
51
	public void update(ViewerCell cell) {
52
		Object element = cell.getElement();
53
		int columnIndex = cell.getColumnIndex();
54

  
51 55
		if (element instanceof PolytomousKeyNode) {
52 56

  
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);
57
			String text = getTextForColumnIndex((PolytomousKeyNode) element,
58
					columnIndex);
59
			cell.setText(text);
60

  
61
			if (columnIndex == 3) {
62
				StyledString styledString = new StyledString(text, getStyler());
63
				StyleRange[] styleRanges;
64
				styleRanges = styledString.getStyleRanges();
65
				cell.setStyleRanges(styleRanges);
64 66
			}
65 67
		}
66
		return null;
68

  
69
		super.update(cell);
70
	}
71

  
72
	private String getTextForColumnIndex(PolytomousKeyNode node, int columnIndex) {
73
		switch (columnIndex) {
74
		case 0:
75
			return getItemNumber(node);
76
		case 1:
77
			return getItemQuestion(node);
78
		case 2:
79
			return getItemStatement(node);
80
		case 3:
81
			return getItemLink(node);
82
		}
83
		return EMPTY;
84
	}
85

  
86
	/**
87
	 * @return
88
	 */
89
	private Styler getStyler() {
90
		if (styler == null) {
91
			styler = new Styler() {
92
				@Override
93
				public void applyStyles(TextStyle textStyle) {
94
					textStyle.underline = true;
95
					textStyle.underlineColor = colorLink;
96
					textStyle.foreground = colorLink;
97
					textStyle.underlineStyle = SWT.UNDERLINE_SINGLE;
98
				}
99
			};
100
		}
101
		return styler;
67 102
	}
68 103

  
69 104
	private String getItemNumber(PolytomousKeyNode node) {
......
72 107
		} else {
73 108
			PolytomousKeyNode parent = getParent(node);
74 109
			String itemNumber = parent.getNodeNumber() != null ? parent
75
					.getNodeNumber().toString() : "NaN";
110
					.getNodeNumber().toString() : EMPTY;
76 111

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

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

  
83 118
			return itemNumber;
......
90 125
		} else {
91 126
			KeyStatement question = getParent(node).getQuestion();
92 127
			return question != null ? question.getLabelText(CdmStore
93
					.getDefaultLanguage()) : "";
128
					.getDefaultLanguage()) : EMPTY;
94 129
		}
95 130

  
96 131
	}
......
98 133
	private String getItemStatement(PolytomousKeyNode node) {
99 134
		KeyStatement statement = node.getStatement();
100 135
		return statement != null ? CdmUtils.Nz(statement.getLabelText(CdmStore
101
				.getDefaultLanguage())) : "No statement";
136
				.getDefaultLanguage())) : EMPTY;
102 137
	}
103 138

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

  
108 143
		return node.getChildren().isEmpty() ? taxonString : node
109 144
				.getNodeNumber().toString();

Also available in: Unified diff