Project

General

Profile

Download (5.45 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.ui.element;
2

    
3
	import javax.persistence.GenerationType;
4

    
5
import org.apache.commons.lang.StringUtils;
6
import org.eclipse.swt.SWT;
7
	import org.eclipse.swt.events.ModifyEvent;
8
import org.eclipse.swt.graphics.Point;
9
import org.eclipse.ui.forms.widgets.ExpandableComposite;
10

    
11
	import eu.etaxonomy.cdm.model.common.LanguageString;
12
	import eu.etaxonomy.taxeditor.store.CdmStore;
13
	import eu.etaxonomy.taxeditor.ui.section.description.IntextReferenceSection;
14

    
15
public class LanguageRichTextWithLabel extends RichTextWithLabelElement implements ILanguageStringProvider{
16

    
17
	//private LanguageString languageString;
18
	IntextReferenceSection intextRefernces;
19

    
20
	/**
21
	 * <p>Constructor for LanguageStringWithLabelElement.</p>
22
	 *
23
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
24
	 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
25
	 * @param labelString a {@link java.lang.String} object.
26
	 * @param languageString a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
27
	 * @param style a int.
28
	 */
29
	protected LanguageRichTextWithLabel(CdmFormFactory formFactory,
30
			ICdmFormElement parentElement, String labelString,
31
			LanguageString languageString, int style) {
32
		this(formFactory, parentElement, labelString, languageString, null, style);
33
	}
34

    
35
	/**
36
	 * <p>Constructor for LanguageStringWithLabelElement.</p>
37
	 *
38
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
39
	 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
40
	 * @param labelString a {@link java.lang.String} object.
41
	 * @param languageString a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
42
	 * @param height a int.
43
	 * @param style a int.
44
	 */
45
	protected LanguageRichTextWithLabel(CdmFormFactory formFactory,
46
			ICdmFormElement parentElement, String labelString,
47
			LanguageString languageString, Integer height, int style) {
48
		this(formFactory, parentElement, labelString, languageString, height, true, style);
49
	}
50

    
51
	protected LanguageRichTextWithLabel(CdmFormFactory formFactory,
52
	        ICdmFormElement parentElement, String labelString,
53
	        LanguageString languageString, Integer height, boolean isMultiLine, int style) {
54
	    super(formFactory, parentElement, labelString, null, height, isMultiLine, style);
55

    
56
	    setLanguageString(languageString);
57
	   
58

    
59
	}
60

    
61
	
62

    
63
	public LanguageString updateLanguageString(LanguageString ls) {
64
	    if(ls == null){
65
            ls = LanguageString.NewInstance("", CdmStore.getDefaultLanguage());
66
           
67
        }
68
	    ls.setText(text.getText());
69
	    intextRefernces.setEntity(ls);
70
	    return ls;
71
	}
72

    
73
	/** {@inheritDoc} */
74
	@Override
75
	public void modifyText(ModifyEvent e) {
76
		if(getLanguageString() == null){
77
			setLanguageString(LanguageString.NewInstance("", CdmStore.getDefaultLanguage()));
78
			intextRefernces.setEntity(getLanguageString());
79
		}
80
		
81
		getLanguageString().setText(getText());
82
		
83
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
84
	}
85

    
86
	
87
	
88
	
89

    
90
	/**
91
	 * <p>Setter for the field <code>languageString</code>.</p>
92
	 *
93
	 * @param languageString a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
94
	 */
95
	public void setLanguageString(LanguageString languageString) {
96
		super.setLanguageString(languageString);
97
		super.setText();
98
		if (this.intextRefernces == null){
99
			this.intextRefernces = formFactory.createIntextReferenceSection(null, this, ExpandableComposite.TWISTIE);
100
		}
101
		
102
		this.intextRefernces.setEntity(languageString);
103
	}
104

    
105
	@Override
106
	public Point getSelection() {
107
		if (StringUtils.isBlank(text.getText())){
108
			return null;
109
		}
110
		
111
		String test = text.getText();
112
		String test2 = getLanguageString().getText();
113
		String selectedText = text.getSelectedText();
114
		String selectedhtml =(String) text.evaluateJavascript(SCRIPT01); 
115
		
116
		
117
		int posStart = getLanguageString().getText().indexOf(selectedText);
118
		Point point = new Point (posStart, posStart+ selectedText.length());
119
		return point;
120
	}
121
	
122
	static String SCRIPT01 = "var html = \"\";"+
123
			"if (typeof window.getSelection != \"undefined\") {"+
124
			    "var sel = window.getSelection();"+
125
			    "if (sel.rangeCount) {"+
126
			        "var container = document.createElement(\"div\");"+
127
			        "for (var i = 0, len = sel.rangeCount; i < len; ++i) {"+
128
			            "container.appendChild(sel.getRangeAt(i).cloneContents());"+
129
			        "}"+
130
			        "html = container.innerHTML;"+
131
			    "}"+
132
			"} else if (typeof document.selection != \"undefined\") {"+
133
			    "if (document.selection.type == \"Text\") {"+
134
			        "html = document.selection.createRange().htmlText;"+
135
			    "}" +
136
			"}" +
137
			"return html";
138
	
139
	static String SCRIPT02 = "var html = \"\";"+
140
			"if (typeof window.getSelection != \"undefined\") {"+
141
			    "var sel = window.getSelection();"+
142
			    
143
			"return sel";
144
	
145
	
146
	static String SCRIPT03 = "var html = \"\";"+
147
			"if (typeof window.getSelection != \"undefined\") {"+
148
			    "var sel = window.getSelection();"+
149
			    "if (sel.rangeCount) {"+
150
			        "var container = document.createElement(\"div\");"+
151
			        "for (var i = 0, len = sel.rangeCount; i < len; ++i) {"+
152
			            "container.appendChild(sel.getRangeAt(i).cloneContents());"+
153
			        "}"+
154
			        "html = container.innerHTML;"+
155
			    "}"+
156
			"} else if (typeof document.selection != \"undefined\") {"+
157
			    "if (document.selection.type == \"Text\") {"+
158
			        "html = document.selection.createRange().htmlText;"+
159
			    "}" +
160
			"}" +
161
			"return html";
162
}
163

    
164

    
(28-28/47)