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;
setTitle("Add or edit translations.");
this.multilanguageText = multilanguageText;
formFactory = new CdmFormFactory(Display.getCurrent());
+ setPageComplete(false);
}
/* (non-Javadoc)
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() {
@Override
public void widgetSelected(SelectionEvent e) {
Language language = combo_targetLanguage.getSelection();
+
+ if (language == null){
+ return;
+ }
+
+ setPageComplete(true);
LanguageString languageString;
if(multilanguageText.containsKey(language)){
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());
+// }
+//
+// }
+// });
}
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;
}