Project

General

Profile

Download (7.18 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
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.
9
*/
10

    
11
package eu.etaxonomy.taxeditor.editor.translation;
12

    
13
import java.util.ArrayList;
14
import java.util.List;
15
import java.util.Map;
16
import java.util.Set;
17

    
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;
26

    
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;
40

    
41
/**
42
 * <p>TranslationWizardPage class.</p>
43
 *
44
 * @author n.hoffmann
45
 * @created Sep 29, 2010
46
 * @version 1.0
47
 */
48
public class TranslationWizardPage extends WizardPage{
49
		
50
	private static int TEXT_HEIGHT = 400;  
51
	
52
	private Map<Language, LanguageString> multilanguageText;
53

    
54
	MultilanguageTextElement source;
55
	
56
	private CdmFormFactory formFactory;
57

    
58
	private EmptyComboElement<Language> combo_sourceLanguage;
59

    
60
	private LanguageStringWithLabelElement text_source;
61

    
62
	private LanguageComboElement combo_targetLanguage;
63

    
64
	private LanguageStringWithLabelElement text_target;
65
	
66
	/**
67
	 * <p>Constructor for TranslationWizardPage.</p>
68
	 *
69
	 * @param multilanguageText a {@link java.util.Map} object.
70
	 */
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());
76
	}
77

    
78

    
79
	/* (non-Javadoc)
80
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
81
	 */
82
	/** {@inheritDoc} */
83
	@Override
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());
90
		
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);
95
		
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);
100
		
101
		createLeftControls(leftRoot);
102
		createRightControls(rightRoot);
103
		
104
		// initialize with default language
105
		setSource(CdmStore.getDefaultLanguage());
106
		
107
		setControl(control);
108
	}
109
	
110
	/**
111
	 * @param defaultLanguage
112
	 */
113
	private void setSource(Language language) {
114
		combo_sourceLanguage.setSelection(language);
115
//		text_source.setLanguageString(multilanguageText.get(language));
116
	}
117

    
118

    
119
	/**
120
	 * 
121
	 * @param element
122
	 */
123
	private void createLeftControls(ICdmFormElement element){
124
		
125
		combo_sourceLanguage = (EmptyComboElement<Language>) formFactory.createTermComboElement(TermComboType.EMPTY, element, null, null, SWT.NULL);
126
		combo_sourceLanguage.setTerms(getLanguages());
127
		
128
		combo_sourceLanguage.addSelectionListener(new SelectionAdapter() {
129
			/* (non-Javadoc)
130
			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
131
			 */
132
			@Override
133
			public void widgetSelected(SelectionEvent e) {
134
				text_source.setLanguageString(multilanguageText.get(combo_sourceLanguage.getSelection()));
135
			}
136
		});
137
		
138
		LanguageString preferredLanguageString = MultilanguageTextHelper.getPreferredLanguageString(multilanguageText, getLanguages());
139
		
140
		text_source = formFactory.createLanguageStringWithLabelElement(element, null, preferredLanguageString, TEXT_HEIGHT, SWT.NULL);
141

    
142
//		text_source.setEnabled(false);
143
		
144
		text_source.setText(preferredLanguageString.getText());
145
	}
146
		
147
	/**
148
	 * 
149
	 * @param element
150
	 */
151
	private void createRightControls(ICdmFormElement element){
152
		combo_targetLanguage = (LanguageComboElement) formFactory.createTermComboElement(TermComboType.LANGUAGE, element, null, null, SWT.NULL);
153
		
154
		combo_targetLanguage.addSelectionListener(new SelectionAdapter() {
155
			/* (non-Javadoc)
156
			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
157
			 */
158
			@Override
159
			public void widgetSelected(SelectionEvent e) {
160
				Language language = combo_targetLanguage.getSelection();
161
				LanguageString languageString;
162
				
163
				if(multilanguageText.containsKey(language)){
164
					languageString = multilanguageText.get(language);
165
				}else{
166
					languageString = LanguageString.NewInstance("", language);
167
					multilanguageText.put(language, languageString);
168
				}
169
				
170
				text_target.setLanguageString(languageString);
171
			}
172
		});
173
		
174
		text_target = formFactory.createLanguageStringWithLabelElement(element, null, null, TEXT_HEIGHT, SWT.NULL);
175
		
176
		Button button_translationService = formFactory.createButton(element.getLayoutComposite(), "Translate", SWT.PUSH);
177
		button_translationService.addSelectionListener(new SelectionAdapter() {
178
			/* (non-Javadoc)
179
			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
180
			 */
181
			@Override
182
			public void widgetSelected(SelectionEvent event) {
183
				ITranslationServiceWrapper service = new GoogleLanguageApiWrapper();
184
				String translatedText;
185
				try {
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());
191
				}				
192
			}
193
		});
194
	}
195

    
196
	
197
	/**
198
	 * 
199
	 * @return
200
	 */
201
	private List<Language> getLanguages(){
202
		Set<Language> languageSet = MultilanguageTextHelper.getLanguages(multilanguageText);
203
		
204
		List<Language> languageList = new ArrayList<Language>(languageSet);
205
				
206
		return languageList;
207
	}
208
	
209
	/* (non-Javadoc)
210
	 * @see org.eclipse.jface.dialogs.DialogPage#dispose()
211
	 */
212
	/** {@inheritDoc} */
213
	@Override
214
	public void dispose() {
215
		super.dispose();
216
	}
217
}
(6-6/6)