Changes in details view get propagated to editor. Fixed a bug in MultilanguageTextEle...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / forms / MultilanguageTextElement.java
index 89fbe24f0717baf77f93834ff9ba495ac7b2922a..43c1cedc69b8ef465f35e5e4a0e1c603fff9910b 100644 (file)
@@ -1,12 +1,12 @@
 // $Id$
 /**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
-* http://www.e-taxonomy.eu
-* 
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
+ * Copyright (C) 2007 EDIT
+ * European Distributed Institute of Taxonomy 
+ * http://www.e-taxonomy.eu
+ 
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
 
 package eu.etaxonomy.taxeditor.ui.forms;
 
@@ -34,67 +34,87 @@ import eu.etaxonomy.taxeditor.ui.term.EmptyComboElement;
 import eu.etaxonomy.taxeditor.ui.translation.TranslationWizard;
 
 /**
- * <p>MultilanguageTextElement class.</p>
- *
+ * <p>
+ * MultilanguageTextElement class.
+ * </p>
+ * 
  * @author n.hoffmann
  * @created Sep 29, 2010
  * @version 1.0
  */
-public class MultilanguageTextElement extends AbstractCdmFormElement implements SelectionListener{
+public class MultilanguageTextElement extends AbstractCdmFormElement implements
+               SelectionListener {
 
        private class OpenTranslationWizard extends SelectionAdapter {
-               private Map<Language, LanguageString> multilanguageText;
+               private final Map<Language, LanguageString> multilanguageText;
 
-               public OpenTranslationWizard(Map<Language, LanguageString> multilanguageText){
+               public OpenTranslationWizard(
+                               Map<Language, LanguageString> multilanguageText) {
                        super();
                        this.multilanguageText = multilanguageText;
                }
-               
-               /* (non-Javadoc)
-                * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+
+               /*
+                * (non-Javadoc)
+                * 
+                * @see
+                * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+                * .swt.events.SelectionEvent)
                 */
                @Override
                public void widgetSelected(SelectionEvent e) {
                        TranslationWizard wizard = new TranslationWizard(multilanguageText);
-                       WizardDialog dialog = new WizardDialog(getLayoutComposite().getShell(), wizard);
-                       
-                       if (dialog.open() == IStatus.OK){
+                       WizardDialog dialog = new WizardDialog(getLayoutComposite()
+                                       .getShell(), wizard);
+
+                       if (dialog.open() == IStatus.OK) {
                                combo_language.setTerms(getLanguages());
                                updateControls();
                        }
-                       
+
                }
        }
-       
-       
-       private EmptyComboElement<Language> combo_language;
-       
-       private LanguageStringWithLabelElement element_languageString;
 
-       private Button button;
+       private EmptyComboElement<Language> combo_language;
 
+       protected LanguageStringWithLabelElement element_languageString;
 
+       private Button button;
 
        private Map<Language, LanguageString> multilanguageText;
-       
+
        /**
-        * <p>Constructor for MultilanguageTextElement.</p>
-        *
-        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory} object.
-        * @param formElement a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement} object.
-        * @param labelString a {@link java.lang.String} object.
-        * @param multilanguageText a {@link java.util.Map} object.
-        * @param textHeight a {@link java.lang.Integer} object.
-        * @param style a int.
+        * <p>
+        * Constructor for MultilanguageTextElement.
+        * </p>
+        * 
+        * @param formFactory
+        *            a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory}
+        *            object.
+        * @param formElement
+        *            a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
+        *            object.
+        * @param labelString
+        *            a {@link java.lang.String} object.
+        * @param multilanguageText
+        *            a {@link java.util.Map} object.
+        * @param textHeight
+        *            a {@link java.lang.Integer} object.
+        * @param style
+        *            a int.
         */
        public MultilanguageTextElement(CdmFormFactory formFactory,
-                       ICdmFormElement formElement, String labelString, Map<Language, LanguageString> multilanguageText, Integer textHeight, int style) {
+                       ICdmFormElement formElement, String labelString,
+                       Map<Language, LanguageString> multilanguageText,
+                       Integer textHeight, int style) {
                super(formFactory, formElement);
-                               
+
                formFactory.addPropertyChangeListener(this);
-               
-               element_languageString = formFactory.createLanguageStringWithLabelElement(formElement, labelString, null, textHeight, style);
-                                               
+
+               element_languageString = formFactory
+                               .createLanguageStringWithLabelElement(formElement, labelString,
+                                               null, textHeight, style);
+
                if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                        combo_language = (EmptyComboElement<Language>) formFactory
                                        .createTermComboElement(TermComboType.EMPTY, formElement,
@@ -110,71 +130,94 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                }
                setMultilanguageText(multilanguageText);
        }
-       
-       /* (non-Javadoc)
+
+       /*
+        * (non-Javadoc)
+        * 
         * @see eu.etaxonomy.taxeditor.forms.ISelectable#setSelected(boolean)
         */
        /** {@inheritDoc} */
        @Override
        public void setSelected(boolean selected) {
-               // 
+               //
        }
-       
-       private List<Language> getLanguages(){
-               
-               ArrayList<Language> languageList = new ArrayList<Language>(getMultilanguageText().keySet());
-               
+
+       private List<Language> getLanguages() {
+
+               ArrayList<Language> languageList = new ArrayList<Language>(
+                               getMultilanguageText().keySet());
+
                // TODO sort
-               
+
                return languageList;
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
+        * .events.SelectionEvent)
         */
        /** {@inheritDoc} */
        @Override
        public void widgetSelected(SelectionEvent e) {
                Language selectedLanguage = combo_language.getSelection();
-               if(selectedLanguage != null){
-                       LanguageString selectedLanguageString = getMultilanguageText().get(selectedLanguage);
-       
+               if (selectedLanguage != null) {
+                       LanguageString selectedLanguageString = getMultilanguageText().get(
+                                       selectedLanguage);
+
                        element_languageString.setLanguageString(selectedLanguageString);
                }
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
+        * .swt.events.SelectionEvent)
         */
        /** {@inheritDoc} */
        @Override
-       public void widgetDefaultSelected(SelectionEvent e) {}
+       public void widgetDefaultSelected(SelectionEvent e) {
+       }
 
        /**
-        * <p>Setter for the field <code>multilanguageText</code>.</p>
-        *
-        * @param multilanguageText the multilanguageText to set
+        * <p>
+        * Setter for the field <code>multilanguageText</code>.
+        * </p>
+        * 
+        * @param multilanguageText
+        *            the multilanguageText to set
         */
-       public void setMultilanguageText(Map<Language, LanguageString> multilanguageText) {
+       public void setMultilanguageText(
+                       Map<Language, LanguageString> multilanguageText) {
                this.multilanguageText = multilanguageText;
-               
-               if(multilanguageText != null){
-                       if(multilanguageText.isEmpty()){
-                               multilanguageText.put(CdmStore.getDefaultLanguage(), LanguageString.NewInstance("", CdmStore.getDefaultLanguage()));
+
+               if (multilanguageText != null) {
+                       if (multilanguageText.isEmpty()) {
+                               multilanguageText.put(
+                                               CdmStore.getDefaultLanguage(),
+                                               LanguageString.NewInstance("",
+                                                               CdmStore.getDefaultLanguage()));
                        }
                        if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                                combo_language.setTerms(getLanguages());
                        }
                        updateControls();
-               }               
+               }
        }
 
        /**
         * 
         */
        private void updateControls() {
-               LanguageString preferredLanguageString = MultilanguageTextHelper.getPreferredLanguageString(getMultilanguageText(), Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()}));
-                       
+               LanguageString preferredLanguageString = MultilanguageTextHelper
+                               .getPreferredLanguageString(getMultilanguageText(),
+                                               Arrays.asList(new Language[] { CdmStore
+                                                               .getDefaultLanguage() }));
+
                element_languageString.setLanguageString(preferredLanguageString);
                if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                        combo_language.setSelection(preferredLanguageString.getLanguage());
@@ -182,27 +225,35 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
        }
 
        /**
-        * <p>Getter for the field <code>multilanguageText</code>.</p>
-        *
+        * <p>
+        * Getter for the field <code>multilanguageText</code>.
+        * </p>
+        * 
         * @return the multilanguageText
         */
        public Map<Language, LanguageString> getMultilanguageText() {
                return multilanguageText;
        }
-       
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see
+        * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
+        * .eclipse.jface.util.PropertyChangeEvent)
         */
        /** {@inheritDoc} */
        @Override
        public void propertyChange(PropertyChangeEvent event) {
-               if(event == null){
+               if (event == null) {
                        return;
                }
                Object eventSource = event.getSource();
-               if(eventSource == element_languageString){
-                       LanguageString languageString = ((LanguageStringWithLabelElement) eventSource).getLanguageString();
+               if (eventSource == element_languageString) {
+                       LanguageString languageString = ((LanguageStringWithLabelElement) eventSource)
+                                       .getLanguageString();
                        multilanguageText.put(languageString.getLanguage(), languageString);
+                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
                }
        }
 }