cleanup
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / MultilanguageTextElement.java
index 2d300601254d5d2ea3d8c23042ba73ffae1c6cfa..0c9a1d31f34a2e275f4b9d76adfe3075a459c8c9 100644 (file)
@@ -1,23 +1,22 @@
-// $Id$
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * 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.element;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -28,56 +27,45 @@ import org.eclipse.swt.widgets.Button;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.translation.TranslationWizard;
 
 /**
- * <p>
- * MultilanguageTextElement class.
- * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Sep 29, 2010
- * @version 1.0
  */
 public class MultilanguageTextElement extends AbstractCdmFormElement implements
-               SelectionListener {
+               SelectionListener, IEnableableFormElement {
 
        private class OpenTranslationWizard extends SelectionAdapter {
-               
+
                public OpenTranslationWizard() {
                        super();
                }
 
-               /*
-                * (non-Javadoc)
-                * 
-                * @see
-                * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
-                * .swt.events.SelectionEvent)
-                */
                @Override
                public void widgetSelected(SelectionEvent e) {
                        Map<Language, LanguageString> multilanguageText = getMultilanguageText();
-                       
-                       if (multilanguageText == null){
-                               StoreUtil.warningDialog("No text to transalte", getClass(), "The text is empty and therefore can not be translated");
+
+                       if (multilanguageText==null || multilanguageText.isEmpty()){
+                               MessagingUtils.warningDialog("No text to translate", getClass(), "The text is empty and therefore can not be translated");
+                               return;
                        }
-                       
+
                        TranslationWizard wizard = new TranslationWizard(multilanguageText);
                        WizardDialog dialog = new WizardDialog(getLayoutComposite()
                                        .getShell(), wizard);
 
-                       if (dialog.open() == IStatus.OK) {
+                       if (dialog.open() == Window.OK) {
                                combo_language.setTerms(getLanguages());
                                updateControls();
                        }
-
                }
        }
 
@@ -87,28 +75,11 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
 
        private Button button;
 
+       private boolean isEnabled = true;
+//     private Button removeRepresentation;
+
        private Map<Language, LanguageString> multilanguageText;
 
-       /**
-        * <p>
-        * Constructor for MultilanguageTextElement.
-        * </p>
-        * 
-        * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
-        * @param formElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.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,
@@ -119,7 +90,7 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
 
                element_languageString = this.formFactory
                                .createLanguageStringWithLabelElement(formElement, labelString,
-                                               null, textHeight, style);
+                                               null, textHeight, true, style);
 
                if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                        createMultilanguageTextEditingElements(formElement,
@@ -131,10 +102,16 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
        private void createMultilanguageTextEditingElements(
                        ICdmFormElement formElement,
                        Map<Language, LanguageString> multilanguageText, int style) {
-               combo_language = formFactory
-                               .createTermComboElement(Language.class, formElement,
+               combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
                                                "", null, style);
                combo_language.addSelectionListener(this);
+//             removeRepresentation = formFactory.createButton(getLayoutComposite(), null,
+//                             SWT.PUSH);
+//             removeRepresentation.setImage(ImageResources
+//                             .getImage(ImageResources.TRASH_ICON));
+//             removeRepresentation.setToolTipText("Remove representation");
+//             addControl(removeRepresentation);
+//             removeRepresentation.addSelectionListener(new DeleteListener(this));
                addControl(formFactory.createLabel(getLayoutComposite(), ""));
                button = formFactory.createButton(getLayoutComposite(),
                                "Open In Translation Editor", SWT.PUSH);
@@ -153,56 +130,28 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                return languageList;
        }
 
-       /*
-        * (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);
-
-                       element_languageString.setLanguageString(selectedLanguageString);
-               }
+           if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
+               Language selectedLanguage = combo_language.getSelection();
+               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)
-        */
-       /** {@inheritDoc} */
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }
 
-       /**
-        * <p>
-        * Setter for the field <code>multilanguageText</code>.
-        * </p>
-        * 
-        * @param multilanguageText
-        *            the multilanguageText to set
-        */
        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 (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                                combo_language.setTerms(getLanguages());
                                button.setEnabled(false);
@@ -211,9 +160,22 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                }
        }
 
-       /**
-        * 
-        */
+       @Override
+       public void refresh(){
+           if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
+               Language lang = combo_language.getSelection();
+               if (multilanguageText.get(lang)!= null){
+                   this.element_languageString.setText(multilanguageText.get(combo_language.getSelection()).getText());
+               }else{
+                   this.element_languageString.setText(null);
+               }
+           }else{
+               if (multilanguageText != null && multilanguageText.get(CdmStore.getDefaultLanguage()) != null){
+                   this.element_languageString.setText(multilanguageText.get(CdmStore.getDefaultLanguage()).getText());
+               }
+           }
+       }
+
        private void updateControls() {
                LanguageString preferredLanguageString = MultilanguageTextHelper
                                .getPreferredLanguageString(getMultilanguageText(),
@@ -221,31 +183,17 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                                                                .getDefaultLanguage() }));
 
                element_languageString.setLanguageString(preferredLanguageString);
+
                if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
-                       combo_language.setSelection(preferredLanguageString.getLanguage());
+                       combo_language.setSelection(preferredLanguageString == null?CdmStore.getDefaultLanguage():preferredLanguageString.getLanguage());
                        button.setEnabled(true);
-               }               
+               }
        }
 
-       /**
-        * <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)
-        */
-       /** {@inheritDoc} */
        @Override
        public void propertyChange(PropertyChangeEvent event) {
                if (event == null) {
@@ -255,8 +203,32 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                if (eventSource == element_languageString) {
                        LanguageString languageString = ((LanguageStringWithLabelElement) eventSource)
                                        .getLanguageString();
+                       if (multilanguageText == null){
+                           multilanguageText = new HashMap<>();
+                       }
                        multilanguageText.put(languageString.getLanguage(), languageString);
                        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
                }
        }
-}
+
+       @Override
+    public void setEnabled(boolean enabled){
+           isEnabled = enabled;
+           if(button!=null){
+               button.setEnabled(enabled);
+           }
+           if(combo_language!=null){
+               combo_language.setEnabled(enabled);
+           }
+           element_languageString.setEnabled(enabled);
+       }
+
+       public void setIndent(int indent){
+        this.element_languageString.setIndent(indent);
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return isEnabled;
+    }
+}
\ No newline at end of file