#4018 let the right side of the translation wizard empty, fix the save problem for...
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / translation / TermTranslationWizardPage.java
1 // $Id$
2 /**
3 * Copyright (C) 2016 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 package eu.etaxonomy.taxeditor.ui.translation;
11
12 /**
13 * @author k.luther
14 * @date 22.06.2016
15 *
16 */
17
18 import java.beans.PropertyChangeEvent;
19 import java.beans.PropertyChangeListener;
20
21 import org.apache.commons.lang.StringUtils;
22 import org.eclipse.jface.wizard.WizardPage;
23 import org.eclipse.swt.SWT;
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.Representation;
29 import eu.etaxonomy.cdm.model.common.TermBase;
30 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
31 import eu.etaxonomy.taxeditor.store.CdmStore;
32 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
33 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
34 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
35 import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
36 import eu.etaxonomy.taxeditor.ui.element.RepresentationElement;
37 import eu.etaxonomy.taxeditor.ui.element.RootElement;
38
39 public class TermTranslationWizardPage extends WizardPage implements PropertyChangeListener{
40
41
42 private static int TEXT_HEIGHT = 200;
43
44 private final TermBase term;
45
46 MultilanguageTextElement source;
47
48 private final CdmFormFactory formFactory;
49
50 private RepresentationElement text_source;
51
52 private RepresentationElement text_target;
53
54 /**
55 * <p>Constructor for TranslationWizardPage.</p>
56 *
57 * @param multilanguageText a {@link java.util.Map} object.
58 */
59 public TermTranslationWizardPage(TermBase term) {
60 super("TranslationWizardPage");
61 //Assert.isNotNull(multilanguageText, "Multilanguage text may not be null");
62 setTitle("Add or edit translations.");
63 this.term = term;
64 formFactory = new CdmFormFactory(Display.getCurrent());
65 setPageComplete(false);
66 }
67
68 /* (non-Javadoc)
69 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
70 */
71 /** {@inheritDoc} */
72 @Override
73 public void createControl(Composite parent) {
74 Composite control = formFactory.createComposite(parent);
75 // control.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
76 control.setLayout(LayoutConstants.LAYOUT(2, false));
77
78 Composite leftContainer = formFactory.createComposite(control);
79 leftContainer.setLayoutData(LayoutConstants.FILL(1, 4));
80 leftContainer.setLayout(LayoutConstants.LAYOUT(2, false));
81 // leftContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
82 RootElement leftRoot = new RootElement(formFactory, leftContainer);
83
84 Composite rightContainer = formFactory.createComposite(control);
85 rightContainer.setLayoutData(LayoutConstants.FILL(1, 4));
86 rightContainer.setLayout(LayoutConstants.LAYOUT(2, false));
87 // rightContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
88 RootElement rightRoot = new RootElement(formFactory, rightContainer);
89
90 createLeftControls(leftRoot);
91 createRightControls(rightRoot);
92
93
94 // initialize with default language
95 setSource(CdmStore.getDefaultLanguage());
96
97
98 setControl(control);
99 setPageComplete(true);
100 }
101
102 /**
103 * @param defaultLanguage
104 */
105 private void setSource(Language language) {
106
107 Representation preferredRepresentation =term.getPreferredRepresentation(language);
108
109 if(preferredRepresentation != null){
110 text_source.setSelectedRepresentation(preferredRepresentation);
111 }
112 }
113
114
115 /**
116 *
117 * @param element
118 */
119 private void createLeftControls(ICdmFormElement element){
120 Representation preferredRepresentation= term.getPreferredRepresentation(PreferencesUtil.getGlobalLanguage());
121
122 text_source = formFactory.createRepresentationElement(element, preferredRepresentation,term, TEXT_HEIGHT, SWT.NULL, true);
123 text_source.setTerm(term, true);
124
125
126 }
127
128 /**
129 *
130 * @param element
131 */
132 private void createRightControls(ICdmFormElement element){
133 text_target = formFactory.createRepresentationElement(element, null, term, TEXT_HEIGHT, SWT.NULL, false);
134 }
135
136
137
138
139 /* (non-Javadoc)
140 * @see org.eclipse.jface.dialogs.DialogPage#dispose()
141 */
142 /** {@inheritDoc} */
143 @Override
144 public void dispose() {
145 super.dispose();
146 }
147
148 /**
149 * @return
150 *
151 */
152 public Representation getTargetRepresentation() {
153 return text_target.getSelectedRepresentation();
154 }
155
156 /* (non-Javadoc)
157 * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
158 */
159 @Override
160 public void propertyChange(PropertyChangeEvent evt) {
161 if (evt.getSource() == text_target){
162 if (!StringUtils.isBlank(text_target.getSelectedRepresentation().getAbbreviatedLabel()) ||
163 !StringUtils.isBlank(text_target.getSelectedRepresentation().getLabel()) || !StringUtils.isBlank(text_target.getSelectedRepresentation().getText())){
164 setPageComplete(true);
165 }
166 }
167
168 }
169
170
171
172
173 }