Project

General

Profile

Download (10.4 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2016 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
package eu.etaxonomy.taxeditor.ui.element;
11

    
12
/**
13
 * @author k.luther
14
 * @date 22.06.2016
15
 *
16
 */
17

    
18
import java.util.ArrayList;
19
import java.util.Arrays;
20
import java.util.Collections;
21
import java.util.List;
22

    
23
import org.eclipse.jface.util.PropertyChangeEvent;
24
import org.eclipse.swt.events.SelectionEvent;
25
import org.eclipse.swt.events.SelectionListener;
26
import org.eclipse.swt.widgets.Button;
27

    
28
import eu.etaxonomy.cdm.model.common.Language;
29
import eu.etaxonomy.cdm.model.common.Representation;
30
import eu.etaxonomy.cdm.model.common.TermBase;
31
import eu.etaxonomy.cdm.model.common.TermType;
32
import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
33
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
34
import eu.etaxonomy.taxeditor.store.CdmStore;
35
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
36

    
37
public class RepresentationElement  extends AbstractCdmFormElement implements
38
SelectionListener{
39

    
40
        protected TermComboElement<Language> combo_language;
41

    
42
        protected TextWithLabelElement element_Label;
43
        protected TextWithLabelElement element_abbrevLabel;
44
        protected TextWithLabelElement element_text;
45

    
46
        protected Button button;
47

    
48
        protected Representation selectedRepresentation;
49
        protected TermBase term;
50

    
51
       // protected final boolean isTranslationWizard;
52

    
53

    
54
        /**
55
         * <p>
56
         * Constructor for MultilanguageTextElement.
57
         * </p>
58
         *
59
         * @param formFactory
60
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
61
         *            object.
62
         * @param formElement
63
         *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
64
         *            object.
65
         *
66
         * @param term
67
         *            a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
68
         * @param textHeight
69
         *            a {@link java.lang.Integer} object.
70
         * @param style
71
         *            a int.
72
         */
73
        public RepresentationElement(CdmFormFactory formFactory,
74
                ICdmFormElement formElement, TermBase term,
75
                Integer textHeight, int style, boolean fill) {
76
            super(formFactory, formElement);
77

    
78
            formFactory.addPropertyChangeListener(this);
79

    
80
            element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
81
            element_abbrevLabel = this.formFactory
82
                    .createTextWithLabelElement(formElement, "abbrev. Label",
83
                            null, style);
84
            element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
85
            if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
86
                createRepresentationEditingElements(formElement, style);
87
            }
88
            setTerm(term, fill);
89

    
90
        }
91

    
92
        /**
93
         * <p>
94
         * Constructor for MultilanguageTextElement.
95
         * </p>
96
         *
97
         * @param formFactory
98
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
99
         *            object.
100
         * @param formElement
101
         *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
102
         *            object.
103
         * @param representation
104
         *            a {@link eu.etaxonomy.cdm.model.common.Representation} object.
105
         * @param term
106
         *            a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
107
         * @param textHeight
108
         *            a {@link java.lang.Integer} object.
109
         * @param style
110
         *            a int.
111
         */
112
        public RepresentationElement(CdmFormFactory formFactory,
113
                ICdmFormElement formElement, Representation representation, TermBase term,
114
                Integer textHeight, int style, boolean fill) {
115
            super(formFactory, formElement);
116

    
117
            formFactory.addPropertyChangeListener(this);
118

    
119
            element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
120
            element_abbrevLabel = this.formFactory
121
                    .createTextWithLabelElement(formElement, "abbrev. Label",
122
                            null, style);
123
            element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
124
            if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
125
                createRepresentationEditingElements(formElement, style);
126
            }
127
            setTerm(term, fill);
128
            setSelectedRepresentation(representation);
129

    
130

    
131
        }
132

    
133
        protected void createRepresentationEditingElements(
134
                ICdmFormElement formElement, int style) {
135

    
136
            combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
137
                            "", null, true, style);
138

    
139
            combo_language.addSelectionListener(this);
140

    
141
            addControl(formFactory.createLabel(getLayoutComposite(), ""));
142

    
143

    
144
        }
145

    
146
        public List<Language> getLanguages() {
147

    
148
            ArrayList<Language> languageList = new ArrayList<Language>();
149
            for (Representation rep: term.getRepresentations()){
150
                languageList.add(rep.getLanguage());
151
            }
152

    
153
            Collections.sort(languageList, new DefaultTermComparator<Language>());
154

    
155
            return languageList;
156
        }
157

    
158
        /*
159
         * (non-Javadoc)
160
         *
161
         * @see
162
         * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
163
         * .events.SelectionEvent)
164
         */
165
        /** {@inheritDoc} */
166
        @Override
167
        public void widgetSelected(SelectionEvent e) {
168
            Language selectedLanguage = combo_language.getSelection();
169
            if (selectedLanguage != null) {
170
                selectedRepresentation = getTerm().getRepresentation(
171
                        selectedLanguage);
172
                if (selectedRepresentation == null){
173
                    selectedRepresentation = Representation.NewInstance("", "", "", selectedLanguage);
174
                }
175
                element_Label.setText(selectedRepresentation.getLabel());
176
                element_abbrevLabel.setText(selectedRepresentation.getAbbreviatedLabel());
177
                element_text.setText(selectedRepresentation.getDescription());
178

    
179
            }
180

    
181
        }
182

    
183
        /*
184
         * (non-Javadoc)
185
         *
186
         * @see
187
         * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
188
         * .swt.events.SelectionEvent)
189
         */
190
        /** {@inheritDoc} */
191
        @Override
192
        public void widgetDefaultSelected(SelectionEvent e) {
193
        }
194

    
195
        /**
196
         * <p>
197
         * Setter for the field <code>multilanguageText</code>.
198
         * </p>
199
         *
200
         * @param multilanguageText
201
         *            the multilanguageText to set
202
         */
203
        public void setTerm(
204
                TermBase term, boolean update) {
205
            this.term = term;
206

    
207
            if (selectedRepresentation != null) {
208
               combo_language.setTerms(getLanguages());
209
            }
210
            if (update){
211
            	updateControls();
212
            }
213
        }
214

    
215
        /**
216
         *
217
         */
218
        protected void updateControls() {
219
            Representation preferredRepresentation = term
220
                    .getPreferredRepresentation(PreferencesUtil.getGlobalLanguage() );
221

    
222
            element_Label.setText(preferredRepresentation.getLabel());
223
            element_abbrevLabel.setText(preferredRepresentation.getAbbreviatedLabel());
224
            element_text.setText(preferredRepresentation.getDescription());
225
            selectedRepresentation = preferredRepresentation;
226
            if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
227
                combo_language.setSelection(preferredRepresentation == null?CdmStore.getDefaultLanguage():preferredRepresentation.getLanguage());
228
            }
229
        }
230

    
231
        /**
232
         * <p>
233
         * Getter for the field <code>multilanguageText</code>.
234
         * </p>
235
         *
236
         * @return the multilanguageText
237
         */
238
        public TermBase getTerm() {
239
            return term;
240
        }
241

    
242
        /*
243
         * (non-Javadoc)
244
         *
245
         * @see
246
         * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
247
         * .eclipse.jface.util.PropertyChangeEvent)
248
         */
249
        /** {@inheritDoc} */
250
        @Override
251
        public void propertyChange(PropertyChangeEvent event) {
252
            if (event == null) {
253
                return;
254
            }
255
            Object eventSource = event.getSource();
256

    
257
            if (eventSource == element_abbrevLabel) {
258
                String abbrevLabel = ((TextWithLabelElement) eventSource)
259
                        .getText();
260
                selectedRepresentation.setAbbreviatedLabel(abbrevLabel);
261
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
262
            } else if (eventSource == element_Label){
263
                String label = ((TextWithLabelElement) eventSource)
264
                        .getText();
265
                selectedRepresentation.setLabel(label);
266
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
267
            } else if (eventSource == element_text){
268
                String text = ((TextWithLabelElement) eventSource)
269
                        .getText();
270
                selectedRepresentation.setText(text);
271
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
272
            } else if (eventSource == button){
273
            	firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
274
            }
275
        }
276

    
277
        /**
278
         * @return the selectedRepresentation
279
         */
280
        public Representation getSelectedRepresentation() {
281
            return selectedRepresentation;
282
        }
283

    
284
        /**
285
         * @param selectedRepresentation the selectedRepresentation to set
286
         */
287
        public void setSelectedRepresentation(Representation selectedRepresentation) {
288
            if (selectedRepresentation == null){
289
                selectedRepresentation = Representation.NewInstance("", "", "", null);
290
            }
291
            this.selectedRepresentation = selectedRepresentation;
292
        }
293
    }
294

    
295

    
(36-36/44)