3 * Copyright (C) 2016 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.taxeditor
.ui
.element
;
18 import java
.util
.ArrayList
;
19 import java
.util
.Arrays
;
20 import java
.util
.Collections
;
21 import java
.util
.List
;
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
;
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
;
37 public class RepresentationElement
extends AbstractCdmFormElement
implements
40 protected TermComboElement
<Language
> combo_language
;
42 protected TextWithLabelElement element_Label
;
43 protected TextWithLabelElement element_abbrevLabel
;
44 protected TextWithLabelElement element_text
;
46 protected Button button
;
47 //protected Button deleteButton;
49 protected Representation selectedRepresentation
;
50 protected TermBase term
;
52 // protected final boolean isTranslationWizard;
57 * Constructor for MultilanguageTextElement.
61 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
64 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
68 * a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
70 * a {@link java.lang.Integer} object.
74 public RepresentationElement(CdmFormFactory formFactory
,
75 ICdmFormElement formElement
, TermBase term
,
76 Integer textHeight
, int style
, boolean fill
) {
77 super(formFactory
, formElement
);
79 formFactory
.addPropertyChangeListener(this);
81 element_Label
= this.formFactory
.createTextWithLabelElement(formElement
, "Label", null, style
);
82 element_abbrevLabel
= this.formFactory
83 .createTextWithLabelElement(formElement
, "abbrev. Label",
85 element_text
= this.formFactory
.createMultiLineTextWithLabel(formElement
, "Description", textHeight
, style
);
86 if (PreferencesUtil
.isMultilanguageTextEditingCapability()) {
87 createRepresentationEditingElements(formElement
, style
);
95 * Constructor for MultilanguageTextElement.
99 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
102 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
104 * @param representation
105 * a {@link eu.etaxonomy.cdm.model.common.Representation} object.
107 * a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
109 * a {@link java.lang.Integer} object.
113 public RepresentationElement(CdmFormFactory formFactory
,
114 ICdmFormElement formElement
, Representation representation
, TermBase term
,
115 Integer textHeight
, int style
, boolean fill
) {
116 super(formFactory
, formElement
);
118 formFactory
.addPropertyChangeListener(this);
120 element_Label
= this.formFactory
.createTextWithLabelElement(formElement
, "Label", null, style
);
121 element_abbrevLabel
= this.formFactory
122 .createTextWithLabelElement(formElement
, "abbrev. Label",
124 element_text
= this.formFactory
.createMultiLineTextWithLabel(formElement
, "Description", textHeight
, style
);
125 if (PreferencesUtil
.isMultilanguageTextEditingCapability()) {
126 createRepresentationEditingElements(formElement
, style
);
129 setSelectedRepresentation(representation
);
134 protected void createRepresentationEditingElements(
135 ICdmFormElement formElement
, int style
) {
137 combo_language
= formFactory
.createDefinedTermComboElement(TermType
.Language
, formElement
,
138 "", null, true, style
);
140 combo_language
.addSelectionListener(this);
142 addControl(formFactory
.createLabel(getLayoutComposite(), ""));
145 public List
<Language
> getLanguages() {
147 ArrayList
<Language
> languageList
= new ArrayList
<Language
>();
148 for (Representation rep
: term
.getRepresentations()){
149 languageList
.add(rep
.getLanguage());
152 Collections
.sort(languageList
, new DefaultTermComparator
<Language
>());
161 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
162 * .events.SelectionEvent)
166 public void widgetSelected(SelectionEvent e
) {
167 Language selectedLanguage
= combo_language
.getSelection();
168 if (selectedLanguage
!= null) {
169 selectedRepresentation
= getTerm().getRepresentation(
171 if (selectedRepresentation
== null){
172 selectedRepresentation
= Representation
.NewInstance("", "", "", selectedLanguage
);
174 element_Label
.setText(selectedRepresentation
.getLabel());
175 element_abbrevLabel
.setText(selectedRepresentation
.getAbbreviatedLabel());
176 element_text
.setText(selectedRepresentation
.getDescription());
179 element_Label
.setEnabled(false);
180 element_abbrevLabel
.setEnabled(false);
181 element_text
.setEnabled(false);
190 * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
191 * .swt.events.SelectionEvent)
195 public void widgetDefaultSelected(SelectionEvent e
) {
200 * Setter for the field <code>multilanguageText</code>.
203 * @param multilanguageText
204 * the multilanguageText to set
207 TermBase term
, boolean update
) {
209 if (term
.getRepresentations().isEmpty()){
210 //if the term has no representation at all, create a default one.
211 Representation rep
= Representation
.NewInstance("", "empty representation", "", PreferencesUtil
.getGlobalLanguage());
212 term
.addRepresentation(rep
);
215 if (selectedRepresentation
!= null) {
216 combo_language
.setTerms(getLanguages());
218 element_Label
.setEnabled(false);
219 element_abbrevLabel
.setEnabled(false);
220 element_text
.setEnabled(false);
230 protected void updateControls() {
231 Representation preferredRepresentation
= term
232 .getPreferredRepresentation(PreferencesUtil
.getGlobalLanguage() );
234 element_Label
.setText(preferredRepresentation
.getLabel());
235 element_abbrevLabel
.setText(preferredRepresentation
.getAbbreviatedLabel());
236 element_text
.setText(preferredRepresentation
.getDescription());
237 selectedRepresentation
= preferredRepresentation
;
238 if (PreferencesUtil
.isMultilanguageTextEditingCapability()) {
239 combo_language
.setSelection(preferredRepresentation
== null?CdmStore
.getDefaultLanguage():preferredRepresentation
.getLanguage());
245 * Getter for the field <code>multilanguageText</code>.
248 * @return the multilanguageText
250 public TermBase
getTerm() {
258 * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
259 * .eclipse.jface.util.PropertyChangeEvent)
263 public void propertyChange(PropertyChangeEvent event
) {
267 Object eventSource
= event
.getSource();
269 if (eventSource
== element_abbrevLabel
) {
270 String abbrevLabel
= ((TextWithLabelElement
) eventSource
)
272 selectedRepresentation
.setAbbreviatedLabel(abbrevLabel
);
273 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event
));
274 } else if (eventSource
== element_Label
){
275 String label
= ((TextWithLabelElement
) eventSource
)
277 selectedRepresentation
.setLabel(label
);
278 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event
));
279 } else if (eventSource
== element_text
){
280 String text
= ((TextWithLabelElement
) eventSource
)
282 selectedRepresentation
.setText(text
);
283 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event
));
284 } else if (eventSource
== button
){
285 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event
));
286 } else if (eventSource
== combo_language
){
287 if (combo_language
.getSelection() != null){
288 element_Label
.setEnabled(true);
289 element_abbrevLabel
.setEnabled(true);
290 element_text
.setEnabled(true);
292 element_Label
.setEnabled(false);
293 element_abbrevLabel
.setEnabled(false);
294 element_text
.setEnabled(false);
296 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event
));
301 * @return the selectedRepresentation
303 public Representation
getSelectedRepresentation() {
304 return selectedRepresentation
;
308 * @param selectedRepresentation the selectedRepresentation to set
310 public void setSelectedRepresentation(Representation selectedRepresentation
) {
311 if (selectedRepresentation
== null){
312 selectedRepresentation
= Representation
.NewInstance("", "", "", null);
314 this.selectedRepresentation
= selectedRepresentation
;