3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.taxeditor
.editor
.translation
;
13 import java
.util
.ArrayList
;
14 import java
.util
.List
;
18 import org
.eclipse
.jface
.wizard
.WizardPage
;
19 import org
.eclipse
.swt
.SWT
;
20 import org
.eclipse
.swt
.custom
.SashForm
;
21 import org
.eclipse
.swt
.events
.SelectionAdapter
;
22 import org
.eclipse
.swt
.events
.SelectionEvent
;
23 import org
.eclipse
.swt
.widgets
.Button
;
24 import org
.eclipse
.swt
.widgets
.Composite
;
25 import org
.eclipse
.swt
.widgets
.Display
;
27 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
28 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
29 import eu
.etaxonomy
.cdm
.model
.common
.MultilanguageTextHelper
;
30 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
31 import eu
.etaxonomy
.taxeditor
.forms
.CdmFormFactory
;
32 import eu
.etaxonomy
.taxeditor
.forms
.CdmFormFactory
.TermComboType
;
33 import eu
.etaxonomy
.taxeditor
.forms
.ICdmFormElement
;
34 import eu
.etaxonomy
.taxeditor
.forms
.LanguageStringWithLabelElement
;
35 import eu
.etaxonomy
.taxeditor
.forms
.MultilanguageTextElement
;
36 import eu
.etaxonomy
.taxeditor
.forms
.RootElement
;
37 import eu
.etaxonomy
.taxeditor
.forms
.term
.EmptyComboElement
;
38 import eu
.etaxonomy
.taxeditor
.forms
.term
.LanguageComboElement
;
39 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
42 * <p>TranslationWizardPage class.</p>
45 * @created Sep 29, 2010
48 public class TranslationWizardPage
extends WizardPage
{
50 private static int TEXT_HEIGHT
= 400;
52 private Map
<Language
, LanguageString
> multilanguageText
;
54 MultilanguageTextElement source
;
56 private CdmFormFactory formFactory
;
58 private EmptyComboElement
<Language
> combo_sourceLanguage
;
60 private LanguageStringWithLabelElement text_source
;
62 private LanguageComboElement combo_targetLanguage
;
64 private LanguageStringWithLabelElement text_target
;
67 * <p>Constructor for TranslationWizardPage.</p>
69 * @param multilanguageText a {@link java.util.Map} object.
71 protected TranslationWizardPage(Map
<Language
, LanguageString
> multilanguageText
) {
72 super("TranslationWizardPage");
73 setTitle("Add or edit translations.");
74 this.multilanguageText
= multilanguageText
;
75 formFactory
= new CdmFormFactory(Display
.getCurrent());
80 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
84 public void createControl(Composite parent
) {
85 Composite control
= formFactory
.createComposite(parent
);
86 // control.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
87 control
.setLayout(CdmFormFactory
.LAYOUT(1, false));
88 SashForm sash
= new SashForm(control
, SWT
.HORIZONTAL
);
89 sash
.setLayoutData(CdmFormFactory
.FILL());
91 Composite leftContainer
= formFactory
.createComposite(sash
);
92 leftContainer
.setLayout(CdmFormFactory
.LAYOUT(1, false));
93 // leftContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
94 RootElement leftRoot
= new RootElement(formFactory
, leftContainer
);
96 Composite rightContainer
= formFactory
.createComposite(sash
);
97 rightContainer
.setLayout(CdmFormFactory
.LAYOUT(1, false));
98 // rightContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
99 RootElement rightRoot
= new RootElement(formFactory
, rightContainer
);
101 createLeftControls(leftRoot
);
102 createRightControls(rightRoot
);
104 // initialize with default language
105 setSource(CdmStore
.getDefaultLanguage());
111 * @param defaultLanguage
113 private void setSource(Language language
) {
114 combo_sourceLanguage
.setSelection(language
);
115 // text_source.setLanguageString(multilanguageText.get(language));
123 private void createLeftControls(ICdmFormElement element
){
125 combo_sourceLanguage
= (EmptyComboElement
<Language
>) formFactory
.createTermComboElement(TermComboType
.EMPTY
, element
, null, null, SWT
.NULL
);
126 combo_sourceLanguage
.setTerms(getLanguages());
128 combo_sourceLanguage
.addSelectionListener(new SelectionAdapter() {
130 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
133 public void widgetSelected(SelectionEvent e
) {
134 text_source
.setLanguageString(multilanguageText
.get(combo_sourceLanguage
.getSelection()));
138 LanguageString preferredLanguageString
= MultilanguageTextHelper
.getPreferredLanguageString(multilanguageText
, getLanguages());
140 text_source
= formFactory
.createLanguageStringWithLabelElement(element
, null, preferredLanguageString
, TEXT_HEIGHT
, SWT
.NULL
);
142 // text_source.setEnabled(false);
144 text_source
.setText(preferredLanguageString
.getText());
151 private void createRightControls(ICdmFormElement element
){
152 combo_targetLanguage
= (LanguageComboElement
) formFactory
.createTermComboElement(TermComboType
.LANGUAGE
, element
, null, null, SWT
.NULL
);
154 combo_targetLanguage
.addSelectionListener(new SelectionAdapter() {
156 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
159 public void widgetSelected(SelectionEvent e
) {
160 Language language
= combo_targetLanguage
.getSelection();
161 LanguageString languageString
;
163 if(multilanguageText
.containsKey(language
)){
164 languageString
= multilanguageText
.get(language
);
166 languageString
= LanguageString
.NewInstance("", language
);
167 multilanguageText
.put(language
, languageString
);
170 text_target
.setLanguageString(languageString
);
174 text_target
= formFactory
.createLanguageStringWithLabelElement(element
, null, null, TEXT_HEIGHT
, SWT
.NULL
);
176 Button button_translationService
= formFactory
.createButton(element
.getLayoutComposite(), "Translate", SWT
.PUSH
);
177 button_translationService
.addSelectionListener(new SelectionAdapter() {
179 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
182 public void widgetSelected(SelectionEvent event
) {
183 ITranslationServiceWrapper service
= new GoogleLanguageApiWrapper();
184 String translatedText
;
186 translatedText
= service
.translate(text_source
.getText(), combo_sourceLanguage
.getSelection(), combo_targetLanguage
.getSelection());
187 LanguageString languageString
= LanguageString
.NewInstance(translatedText
, combo_targetLanguage
.getSelection());
188 text_target
.setLanguageString(languageString
);
189 } catch (LanguageNotSupportedException e
) {
190 EditorUtil
.warningDialog("Language not supported", TranslationWizardPage
.class, e
.getMessage());
201 private List
<Language
> getLanguages(){
202 Set
<Language
> languageSet
= MultilanguageTextHelper
.getLanguages(multilanguageText
);
204 List
<Language
> languageList
= new ArrayList
<Language
>(languageSet
);
210 * @see org.eclipse.jface.dialogs.DialogPage#dispose()
214 public void dispose() {