2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.ui
.element
;
12 import java
.util
.ArrayList
;
13 import java
.util
.Arrays
;
14 import java
.util
.Collections
;
15 import java
.util
.List
;
18 import org
.eclipse
.jface
.util
.PropertyChangeEvent
;
19 import org
.eclipse
.jface
.window
.Window
;
20 import org
.eclipse
.jface
.wizard
.WizardDialog
;
21 import org
.eclipse
.swt
.SWT
;
22 import org
.eclipse
.swt
.events
.SelectionAdapter
;
23 import org
.eclipse
.swt
.events
.SelectionEvent
;
24 import org
.eclipse
.swt
.events
.SelectionListener
;
25 import org
.eclipse
.swt
.widgets
.Button
;
27 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
28 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
29 import eu
.etaxonomy
.cdm
.model
.common
.MultilanguageTextHelper
;
30 import eu
.etaxonomy
.cdm
.model
.common
.TermType
;
31 import eu
.etaxonomy
.taxeditor
.model
.DefaultTermComparator
;
32 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
33 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
34 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
35 import eu
.etaxonomy
.taxeditor
.ui
.combo
.TermComboElement
;
36 import eu
.etaxonomy
.taxeditor
.ui
.translation
.TranslationWizard
;
40 * MultilanguageTextElement class.
44 * @created Sep 29, 2010
47 public class MultilanguageTextElement
extends AbstractCdmFormElement
implements
50 private class OpenTranslationWizard
extends SelectionAdapter
{
52 public OpenTranslationWizard() {
60 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
61 * .swt.events.SelectionEvent)
64 public void widgetSelected(SelectionEvent e
) {
65 Map
<Language
, LanguageString
> multilanguageText
= getMultilanguageText();
67 if (multilanguageText
.isEmpty()){
68 MessagingUtils
.warningDialog("No text to translate", getClass(), "The text is empty and therefore can not be translated");
72 TranslationWizard wizard
= new TranslationWizard(multilanguageText
);
73 WizardDialog dialog
= new WizardDialog(getLayoutComposite()
76 if (dialog
.open() == Window
.OK
) {
77 combo_language
.setTerms(getLanguages());
84 private TermComboElement
<Language
> combo_language
;
86 protected LanguageStringWithLabelElement element_languageString
;
88 private Button button
;
90 // private Button removeRepresentation;
92 private Map
<Language
, LanguageString
> multilanguageText
;
96 * Constructor for MultilanguageTextElement.
100 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
103 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
106 * a {@link java.lang.String} object.
107 * @param multilanguageText
108 * a {@link java.util.Map} object.
110 * a {@link java.lang.Integer} object.
114 public MultilanguageTextElement(CdmFormFactory formFactory
,
115 ICdmFormElement formElement
, String labelString
,
116 Map
<Language
, LanguageString
> multilanguageText
,
117 Integer textHeight
, int style
) {
118 super(formFactory
, formElement
);
120 formFactory
.addPropertyChangeListener(this);
122 element_languageString
= this.formFactory
123 .createLanguageStringWithLabelElement(formElement
, labelString
,
124 null, textHeight
, true, style
);
126 if (PreferencesUtil
.isMultilanguageTextEditingCapability()) {
127 createMultilanguageTextEditingElements(formElement
,
128 multilanguageText
, style
);
130 setMultilanguageText(multilanguageText
);
133 private void createMultilanguageTextEditingElements(
134 ICdmFormElement formElement
,
135 Map
<Language
, LanguageString
> multilanguageText
, int style
) {
136 combo_language
= formFactory
.createDefinedTermComboElement(TermType
.Language
, formElement
,
138 combo_language
.addSelectionListener(this);
139 // removeRepresentation = formFactory.createButton(getLayoutComposite(), null,
141 // removeRepresentation.setImage(ImageResources
142 // .getImage(ImageResources.TRASH_ICON));
143 // removeRepresentation.setToolTipText("Remove representation");
144 // addControl(removeRepresentation);
145 // removeRepresentation.addSelectionListener(new DeleteListener(this));
146 addControl(formFactory
.createLabel(getLayoutComposite(), ""));
147 button
= formFactory
.createButton(getLayoutComposite(),
148 "Open In Translation Editor", SWT
.PUSH
);
150 button
.setLayoutData(LayoutConstants
.RIGHT());
151 button
.addSelectionListener(new OpenTranslationWizard());
154 private List
<Language
> getLanguages() {
156 ArrayList
<Language
> languageList
= new ArrayList
<Language
>(
157 getMultilanguageText().keySet());
159 Collections
.sort(languageList
, new DefaultTermComparator
<Language
>());
168 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
169 * .events.SelectionEvent)
173 public void widgetSelected(SelectionEvent e
) {
174 Language selectedLanguage
= combo_language
.getSelection();
175 if (selectedLanguage
!= null) {
176 LanguageString selectedLanguageString
= getMultilanguageText().get(
179 element_languageString
.setLanguageString(selectedLanguageString
);
187 * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
188 * .swt.events.SelectionEvent)
192 public void widgetDefaultSelected(SelectionEvent e
) {
197 * Setter for the field <code>multilanguageText</code>.
200 * @param multilanguageText
201 * the multilanguageText to set
203 public void setMultilanguageText(
204 Map
<Language
, LanguageString
> multilanguageText
) {
205 this.multilanguageText
= multilanguageText
;
207 if (multilanguageText
!= null) {
208 if (PreferencesUtil
.isMultilanguageTextEditingCapability()) {
209 combo_language
.setTerms(getLanguages());
210 button
.setEnabled(false);
219 private void updateControls() {
220 LanguageString preferredLanguageString
= MultilanguageTextHelper
221 .getPreferredLanguageString(getMultilanguageText(),
222 Arrays
.asList(new Language
[] { CdmStore
223 .getDefaultLanguage() }));
225 element_languageString
.setLanguageString(preferredLanguageString
);
227 if (PreferencesUtil
.isMultilanguageTextEditingCapability()) {
228 combo_language
.setSelection(preferredLanguageString
== null?CdmStore
.getDefaultLanguage():preferredLanguageString
.getLanguage());
229 button
.setEnabled(true);
235 * Getter for the field <code>multilanguageText</code>.
238 * @return the multilanguageText
240 public Map
<Language
, LanguageString
> getMultilanguageText() {
241 return multilanguageText
;
248 * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
249 * .eclipse.jface.util.PropertyChangeEvent)
253 public void propertyChange(PropertyChangeEvent event
) {
257 Object eventSource
= event
.getSource();
258 if (eventSource
== element_languageString
) {
259 LanguageString languageString
= ((LanguageStringWithLabelElement
) eventSource
)
260 .getLanguageString();
261 multilanguageText
.put(languageString
.getLanguage(), languageString
);
262 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event
));
266 public void setEnabled(boolean enabled
){
268 button
.setEnabled(enabled
);
270 if(combo_language
!=null){
271 combo_language
.setEnabled(enabled
);
273 element_languageString
.setEnabled(enabled
);