Removed automatic translation; Translation Editor is now disabled when MultilanguageS...
authorn.hoffmann <n.hoffmann@localhost>
Mon, 30 Jan 2012 14:57:05 +0000 (14:57 +0000)
committern.hoffmann <n.hoffmann@localhost>
Mon, 30 Jan 2012 14:57:05 +0000 (14:57 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java

index ca5073d5d7633b489e20927dbe335095eb546586..ab24fc43c75080288ec89e662a5ac9eb31c47ac4 100644 (file)
@@ -206,6 +206,8 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                                combo_language.setTerms(getLanguages());
                        }
                        updateControls();
+               }else{
+                       button.setEnabled(false);
                }
        }
 
@@ -222,6 +224,9 @@ public class MultilanguageTextElement extends AbstractCdmFormElement implements
                if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                        combo_language.setSelection(preferredLanguageString.getLanguage());
                }
+               
+               button.setEnabled(true);
+               
        }
 
        /**
index b7ffb17910db34320f806ac9ebaabdb5c9974cc7..0eb7c6c6ea9283a3be39515e4f70ec4604a49d69 100644 (file)
@@ -21,7 +21,6 @@ import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
@@ -74,6 +73,7 @@ public class TranslationWizardPage extends WizardPage{
                setTitle("Add or edit translations.");
                this.multilanguageText = multilanguageText;
                formFactory = new CdmFormFactory(Display.getCurrent());
+               setPageComplete(false);
        }
 
        /* (non-Javadoc)
@@ -131,6 +131,7 @@ public class TranslationWizardPage extends WizardPage{
        private void createLeftControls(ICdmFormElement element){
                
                combo_sourceLanguage = formFactory.createTermComboElement(Language.class, element, null, null, SWT.NULL);
+               
                combo_sourceLanguage.setTerms(getLanguages());
                
                combo_sourceLanguage.addSelectionListener(new SelectionAdapter() {
@@ -166,6 +167,12 @@ public class TranslationWizardPage extends WizardPage{
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                Language language = combo_targetLanguage.getSelection();
+                               
+                               if (language == null){
+                                       return;
+                               }
+                               
+                               setPageComplete(true);
                                LanguageString languageString;
                                
                                if(multilanguageText.containsKey(language)){
@@ -180,35 +187,39 @@ public class TranslationWizardPage extends WizardPage{
                
                text_target = formFactory.createLanguageStringWithLabelElement(element, null, null, TEXT_HEIGHT, SWT.NULL);
                
-               Button button_translationService = formFactory.createButton(element.getLayoutComposite(), "Translate", SWT.PUSH);
-               button_translationService.addSelectionListener(new SelectionAdapter() {
-                       /* (non-Javadoc)
-                        * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-                        */
-                       @Override
-                       public void widgetSelected(SelectionEvent event) {
-                               ITranslationServiceWrapper service = new GoogleLanguageApiWrapper();
-                               String translatedText;
-                               try {
-                                       String text = text_source.getText();
-                                       Language sourceLanguage = text_source.getLanguageString().getLanguage();
-                                       Language targetLanguage = combo_targetLanguage.getSelection();
-                                       
-                                       if(targetLanguage == null){
-                                               StoreUtil.warningDialog("Please select a target language", TranslationWizardPage.class, "Please select a language from the combo box at the right.");
-                                               return;
-                                       }
-                                       
-                                       translatedText = service.translate(text, sourceLanguage, targetLanguage);
-                                       text_target.setText(translatedText);
-                               } catch (LanguageNotSupportedException e) {
-                                       StoreUtil.warningDialog("Language not supported", TranslationWizardPage.class, "The chosen language is not supported by the translation service.");
-                               } catch (Exception e){
-                                       StoreUtil.warningDialog("Error translating text", TranslationWizardPage.class, e.getMessage());
-                               }
-                               
-                       }
-               });
+               //
+               // The automated translation did rely on the Google Translate API. Unfortunately this service is not free anymore.
+               // See http://code.google.com/apis/language/translate/overview.html
+               //
+//             Button button_translationService = formFactory.createButton(element.getLayoutComposite(), "Translate", SWT.PUSH);
+//             button_translationService.addSelectionListener(new SelectionAdapter() {
+//                     /* (non-Javadoc)
+//                      * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+//                      */
+//                     @Override
+//                     public void widgetSelected(SelectionEvent event) {
+//                             ITranslationServiceWrapper service = new GoogleLanguageApiWrapper();
+//                             String translatedText;
+//                             try {
+//                                     String text = text_source.getText();
+//                                     Language sourceLanguage = text_source.getLanguageString().getLanguage();
+//                                     Language targetLanguage = combo_targetLanguage.getSelection();
+//                                     
+//                                     if(targetLanguage == null){
+//                                             StoreUtil.warningDialog("Please select a target language", TranslationWizardPage.class, "Please select a language from the combo box at the right.");
+//                                             return;
+//                                     }
+//                                     
+//                                     translatedText = service.translate(text, sourceLanguage, targetLanguage);
+//                                     text_target.setText(translatedText);
+//                             } catch (LanguageNotSupportedException e) {
+//                                     StoreUtil.warningDialog("Language not supported", TranslationWizardPage.class, "The chosen language is not supported by the translation service.");
+//                             } catch (Exception e){
+//                                     StoreUtil.warningDialog("Error translating text", TranslationWizardPage.class, e.getMessage());
+//                             }
+//                             
+//                     }
+//             });
        }
 
        
@@ -219,7 +230,15 @@ public class TranslationWizardPage extends WizardPage{
        private List<Language> getLanguages(){
                Set<Language> languageSet = MultilanguageTextHelper.getLanguages(multilanguageText);
                
-               List<Language> languageList = new ArrayList<Language>(languageSet);
+               List<Language> languageList = new ArrayList<Language>();
+               // protect against corrupt language sets
+               for (Language language : languageSet){
+                       if (language != null){
+                               languageList.add(language);
+                       }else{
+                               StoreUtil.warningDialog("Empty languages", getClass(), "The multilanguage string contains invalid data. Please contact the administrator of you datasource.");
+                       }
+               }               
                                
                return languageList;
        }