X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/2297e815a4b0c3f7e8c6bfc52be8ed0dab4d894c..9f7e89bc2034a67fe1c630c5f45b247fd5e16be8:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java index 111a86e9e..526f9eeac 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java @@ -1,9 +1,9 @@ // $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. */ @@ -21,21 +21,22 @@ 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; 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.common.TermType; +import eu.etaxonomy.taxeditor.model.MessagingUtils; import eu.etaxonomy.taxeditor.store.CdmStore; -import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; -import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory; -import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement; -import eu.etaxonomy.taxeditor.ui.forms.LanguageStringWithLabelElement; -import eu.etaxonomy.taxeditor.ui.forms.MultilanguageTextElement; -import eu.etaxonomy.taxeditor.ui.forms.RootElement; +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement; +import eu.etaxonomy.taxeditor.ui.element.LayoutConstants; +import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement; +import eu.etaxonomy.taxeditor.ui.element.RootElement; /** *

TranslationWizardPage class.

@@ -45,23 +46,23 @@ import eu.etaxonomy.taxeditor.ui.forms.RootElement; * @version 1.0 */ public class TranslationWizardPage extends WizardPage{ - - private static int TEXT_HEIGHT = 400; - - private Map multilanguageText; + + private static int TEXT_HEIGHT = 400; + + private final Map multilanguageText; MultilanguageTextElement source; - - private CdmFormFactory formFactory; - private TermComboElement combo_sourceLanguage; + private final CdmFormFactory formFactory; + + private TermComboElement combo_sourceLanguage; private LanguageStringWithLabelElement text_source; private TermComboElement combo_targetLanguage; private LanguageStringWithLabelElement text_target; - + /** *

Constructor for TranslationWizardPage.

* @@ -73,6 +74,7 @@ public class TranslationWizardPage extends WizardPage{ setTitle("Add or edit translations."); this.multilanguageText = multilanguageText; formFactory = new CdmFormFactory(Display.getCurrent()); + setPageComplete(false); } /* (non-Javadoc) @@ -83,39 +85,39 @@ public class TranslationWizardPage extends WizardPage{ public void createControl(Composite parent) { Composite control = formFactory.createComposite(parent); // control.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN)); - control.setLayout(CdmFormFactory.LAYOUT(2, true)); - + control.setLayout(LayoutConstants.LAYOUT(2, true)); + Composite leftContainer = formFactory.createComposite(control); - leftContainer.setLayoutData(CdmFormFactory.FILL()); - leftContainer.setLayout(CdmFormFactory.LAYOUT(1, false)); + leftContainer.setLayoutData(LayoutConstants.FILL()); + leftContainer.setLayout(LayoutConstants.LAYOUT(1, false)); // leftContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE)); RootElement leftRoot = new RootElement(formFactory, leftContainer); - + Composite rightContainer = formFactory.createComposite(control); - rightContainer.setLayoutData(CdmFormFactory.FILL()); - rightContainer.setLayout(CdmFormFactory.LAYOUT(1, false)); + rightContainer.setLayoutData(LayoutConstants.FILL()); + rightContainer.setLayout(LayoutConstants.LAYOUT(1, false)); // rightContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); RootElement rightRoot = new RootElement(formFactory, rightContainer); - + createLeftControls(leftRoot); createRightControls(rightRoot); - + // initialize with default language setSource(CdmStore.getDefaultLanguage()); - - + + setControl(control); } - + /** * @param defaultLanguage */ private void setSource(Language language) { - + List languages = Arrays.asList(new Language[]{language}); - + LanguageString preferredLanguageString = MultilanguageTextHelper.getPreferredLanguageString(multilanguageText, languages); - + if(preferredLanguageString != null){ combo_sourceLanguage.setSelection(preferredLanguageString.getLanguage()); text_source.setLanguageString(preferredLanguageString); @@ -124,14 +126,15 @@ public class TranslationWizardPage extends WizardPage{ /** - * + * * @param element */ private void createLeftControls(ICdmFormElement element){ - - combo_sourceLanguage = formFactory.createTermComboElement(Language.class, element, null, null, SWT.NULL); + + combo_sourceLanguage = formFactory.createDefinedTermComboElement(TermType.Language, element, null, null, SWT.NULL); + combo_sourceLanguage.setTerms(getLanguages()); - + combo_sourceLanguage.addSelectionListener(new SelectionAdapter() { /* (non-Javadoc) * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) @@ -141,23 +144,23 @@ public class TranslationWizardPage extends WizardPage{ text_source.setLanguageString(multilanguageText.get(combo_sourceLanguage.getSelection())); } }); - + LanguageString preferredLanguageString = MultilanguageTextHelper.getPreferredLanguageString(multilanguageText, getLanguages()); - - text_source = formFactory.createLanguageStringWithLabelElement(element, null, preferredLanguageString, TEXT_HEIGHT, SWT.NULL); + + text_source = formFactory.createLanguageStringWithLabelElement(element, null, preferredLanguageString, TEXT_HEIGHT, true, SWT.NULL); // text_source.setEnabled(false); - + text_source.setText(preferredLanguageString.getText()); } - + /** - * + * * @param element */ private void createRightControls(ICdmFormElement element){ - combo_targetLanguage = formFactory.createTermComboElement(Language.class, element, null, null, SWT.NULL); - + combo_targetLanguage = formFactory.createDefinedTermComboElement(TermType.Language, element, null, null, SWT.NULL); + combo_targetLanguage.addSelectionListener(new SelectionAdapter() { /* (non-Javadoc) * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) @@ -165,59 +168,82 @@ 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)){ languageString = multilanguageText.get(language); }else{ languageString = LanguageString.NewInstance("", language); } - + text_target.setLanguageString(languageString); } }); - - 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(); - - translatedText = service.translate(text, sourceLanguage, targetLanguage); - text_target.setText(translatedText); - } catch (LanguageNotSupportedException e) { - StoreUtil.warningDialog("Language not supported", TranslationWizardPage.class, e.getMessage()); - } catch (Exception e){ - StoreUtil.warningDialog("Error translating text", TranslationWizardPage.class, e.getMessage()); - } - - } - }); + + text_target = formFactory.createLanguageStringWithLabelElement(element, null, null, TEXT_HEIGHT, true, SWT.NULL); + + // + // 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()); +// } +// +// } +// }); } - + /** - * + * * @return */ private List getLanguages(){ Set languageSet = MultilanguageTextHelper.getLanguages(multilanguageText); - - List languageList = new ArrayList(languageSet); - + + List languageList = new ArrayList(); + // protect against corrupt language sets + for (Language language : languageSet){ + if (language != null){ + languageList.add(language); + }else{ + MessagingUtils.warningDialog("Empty languages", getClass(), "The multilanguage string contains invalid data. Please contact the administrator of you datasource."); + } + } + return languageList; } - + /* (non-Javadoc) * @see org.eclipse.jface.dialogs.DialogPage#dispose() */ @@ -228,8 +254,8 @@ public class TranslationWizardPage extends WizardPage{ } /** - * @return - * + * @return + * */ public LanguageString getTargetLanguageString() { return text_target.getLanguageString();