Project

General

Profile

« Previous | Next » 

Revision cd123c06

Added by Katja Luther almost 8 years ago

#4018 add missing RepresentationElement class

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/RepresentationElement.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.element;
11

  
12
/**
13
 * @author k.luther
14
 * @date 22.06.2016
15
 *
16
 */
17

  
18
import java.util.ArrayList;
19
import java.util.Arrays;
20
import java.util.Collections;
21
import java.util.List;
22

  
23
import org.eclipse.jface.util.PropertyChangeEvent;
24
import org.eclipse.jface.window.Window;
25
import org.eclipse.jface.wizard.WizardDialog;
26
import org.eclipse.swt.SWT;
27
import org.eclipse.swt.events.SelectionAdapter;
28
import org.eclipse.swt.events.SelectionEvent;
29
import org.eclipse.swt.events.SelectionListener;
30
import org.eclipse.swt.widgets.Button;
31

  
32
import eu.etaxonomy.cdm.model.common.Language;
33
import eu.etaxonomy.cdm.model.common.Representation;
34
import eu.etaxonomy.cdm.model.common.TermBase;
35
import eu.etaxonomy.cdm.model.common.TermType;
36
import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
37
import eu.etaxonomy.taxeditor.model.MessagingUtils;
38
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
39
import eu.etaxonomy.taxeditor.store.CdmStore;
40
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
41
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermTranslationWizard;
42

  
43
public class RepresentationElement  extends AbstractCdmFormElement implements
44
SelectionListener{
45
        private class OpenTranslationWizard extends SelectionAdapter {
46

  
47
            public OpenTranslationWizard() {
48
                super();
49
            }
50

  
51
            /*
52
             * (non-Javadoc)
53
             *
54
             * @see
55
             * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
56
             * .swt.events.SelectionEvent)
57
             */
58
            @Override
59
            public void widgetSelected(SelectionEvent e) {
60
                TermBase term = getTerm();
61

  
62
                if (term == null){
63
                    MessagingUtils.warningDialog("No term to translate", getClass(), "The term is empty and therefore can not be translated");
64
                }
65

  
66
                TermTranslationWizard wizard = new TermTranslationWizard(term);
67
                WizardDialog dialog = new WizardDialog(getLayoutComposite()
68
                        .getShell(), wizard);
69

  
70
                if (dialog.open() == Window.OK) {
71
                    combo_language.setTerms(getLanguages());
72
                    updateControls();
73
                }
74

  
75
            }
76
        }
77

  
78
        private TermComboElement<Language> combo_language;
79

  
80
        protected TextWithLabelElement element_Label;
81
        protected TextWithLabelElement element_abbrevLabel;
82
        protected TextWithLabelElement element_text;
83

  
84
        private Button button;
85

  
86
        private Representation selectedRepresentation;
87
        private TermBase term;
88

  
89
        private final boolean isTranslationWizard;
90

  
91

  
92
        /**
93
         * <p>
94
         * Constructor for MultilanguageTextElement.
95
         * </p>
96
         *
97
         * @param formFactory
98
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
99
         *            object.
100
         * @param formElement
101
         *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
102
         *            object.
103
         *
104
         * @param term
105
         *            a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
106
         * @param textHeight
107
         *            a {@link java.lang.Integer} object.
108
         * @param style
109
         *            a int.
110
         */
111
        public RepresentationElement(CdmFormFactory formFactory,
112
                ICdmFormElement formElement, TermBase term,
113
                Integer textHeight, int style, boolean isTranslationWizard) {
114
            super(formFactory, formElement);
115
            this.isTranslationWizard = isTranslationWizard;
116
            formFactory.addPropertyChangeListener(this);
117

  
118
            element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
119
            element_abbrevLabel = this.formFactory
120
                    .createTextWithLabelElement(formElement, "abbrev. Label",
121
                            null, style);
122
            element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
123
            if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
124
                createRepresentationEditingElements(formElement, style);
125
            }
126
            setTerm(term);
127

  
128
        }
129

  
130
        /**
131
         * <p>
132
         * Constructor for MultilanguageTextElement.
133
         * </p>
134
         *
135
         * @param formFactory
136
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
137
         *            object.
138
         * @param formElement
139
         *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
140
         *            object.
141
         * @param representation
142
         *            a {@link eu.etaxonomy.cdm.model.common.Representation} object.
143
         * @param term
144
         *            a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
145
         * @param textHeight
146
         *            a {@link java.lang.Integer} object.
147
         * @param style
148
         *            a int.
149
         */
150
        public RepresentationElement(CdmFormFactory formFactory,
151
                ICdmFormElement formElement, Representation representation, TermBase term,
152
                Integer textHeight, int style, boolean isTranslationWizard) {
153
            super(formFactory, formElement);
154
            this.isTranslationWizard = isTranslationWizard;
155
            formFactory.addPropertyChangeListener(this);
156

  
157
            element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
158
            element_abbrevLabel = this.formFactory
159
                    .createTextWithLabelElement(formElement, "abbrev. Label",
160
                            null, style);
161
            element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
162
            if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
163
                createRepresentationEditingElements(formElement, style);
164
            }
165
            setTerm(term);
166
            setSelectedRepresentation(representation);
167

  
168

  
169
        }
170

  
171
        private void createRepresentationEditingElements(
172
                ICdmFormElement formElement, int style) {
173

  
174
            combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
175
                            "", null, style);
176
            combo_language.addSelectionListener(this);
177

  
178
            addControl(formFactory.createLabel(getLayoutComposite(), ""));
179

  
180
            if (!isTranslationWizard){
181
                button = formFactory.createButton(getLayoutComposite(),
182
                        "Open In Translation Editor", SWT.PUSH);
183
                addControl(button);
184
                button.setLayoutData(LayoutConstants.RIGHT());
185
                button.addSelectionListener(new OpenTranslationWizard());
186
            }
187
        }
188

  
189
        public List<Language> getLanguages() {
190

  
191
            ArrayList<Language> languageList = new ArrayList<Language>();
192
            for (Representation rep: term.getRepresentations()){
193
                languageList.add(rep.getLanguage());
194
            }
195

  
196
            Collections.sort(languageList, new DefaultTermComparator<Language>());
197

  
198
            return languageList;
199
        }
200

  
201
        /*
202
         * (non-Javadoc)
203
         *
204
         * @see
205
         * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
206
         * .events.SelectionEvent)
207
         */
208
        /** {@inheritDoc} */
209
        @Override
210
        public void widgetSelected(SelectionEvent e) {
211
            Language selectedLanguage = combo_language.getSelection();
212
            if (selectedLanguage != null) {
213
                selectedRepresentation = getTerm().getRepresentation(
214
                        selectedLanguage);
215
                if (selectedRepresentation == null){
216
                    selectedRepresentation = Representation.NewInstance("", "", "", selectedLanguage);
217
                }
218
                element_Label.setText(selectedRepresentation.getLabel());
219
                element_abbrevLabel.setText(selectedRepresentation.getAbbreviatedLabel());
220
                element_text.setText(selectedRepresentation.getDescription());
221

  
222
            }
223

  
224
        }
225

  
226
        /*
227
         * (non-Javadoc)
228
         *
229
         * @see
230
         * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
231
         * .swt.events.SelectionEvent)
232
         */
233
        /** {@inheritDoc} */
234
        @Override
235
        public void widgetDefaultSelected(SelectionEvent e) {
236
        }
237

  
238
        /**
239
         * <p>
240
         * Setter for the field <code>multilanguageText</code>.
241
         * </p>
242
         *
243
         * @param multilanguageText
244
         *            the multilanguageText to set
245
         */
246
        public void setTerm(
247
                TermBase term) {
248
            this.term = term;
249

  
250
            if (selectedRepresentation != null) {
251
               combo_language.setTerms(getLanguages());
252
               if (!isTranslationWizard){
253
                   button.setEnabled(false);
254
               }
255

  
256
            }
257
            updateControls();
258
        }
259

  
260
        /**
261
         *
262
         */
263
        private void updateControls() {
264
            Representation preferredRepresentation = term
265
                    .getPreferredRepresentation(Arrays.asList(new Language[] { CdmStore
266
                                    .getDefaultLanguage() }));
267

  
268
            element_Label.setText(preferredRepresentation.getLabel());
269
            element_abbrevLabel.setText(preferredRepresentation.getAbbreviatedLabel());
270
            element_text.setText(preferredRepresentation.getDescription());
271
            selectedRepresentation = preferredRepresentation;
272
            if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
273

  
274
                combo_language.setSelection(preferredRepresentation == null?CdmStore.getDefaultLanguage():preferredRepresentation.getLanguage());
275
                if (!isTranslationWizard){
276
                    button.setEnabled(true);
277
                    combo_language.setTerms(getLanguages());
278
                    combo_language.setSelection(preferredRepresentation.getLanguage());
279
                }
280
            }
281
        }
282

  
283
        /**
284
         * <p>
285
         * Getter for the field <code>multilanguageText</code>.
286
         * </p>
287
         *
288
         * @return the multilanguageText
289
         */
290
        public TermBase getTerm() {
291
            return term;
292
        }
293

  
294
        /*
295
         * (non-Javadoc)
296
         *
297
         * @see
298
         * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
299
         * .eclipse.jface.util.PropertyChangeEvent)
300
         */
301
        /** {@inheritDoc} */
302
        @Override
303
        public void propertyChange(PropertyChangeEvent event) {
304
            if (event == null) {
305
                return;
306
            }
307
            Object eventSource = event.getSource();
308

  
309
            if (eventSource == element_abbrevLabel) {
310
                String abbrevLabel = ((TextWithLabelElement) eventSource)
311
                        .getText();
312
                selectedRepresentation.setAbbreviatedLabel(abbrevLabel);
313
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
314
            } else if (eventSource == element_Label){
315
                String label = ((TextWithLabelElement) eventSource)
316
                        .getText();
317
                selectedRepresentation.setLabel(label);
318
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
319
            } else if (eventSource == element_text){
320
                String text = ((TextWithLabelElement) eventSource)
321
                        .getText();
322
                selectedRepresentation.setText(text);
323
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
324
            }
325
        }
326

  
327
        /**
328
         * @return the selectedRepresentation
329
         */
330
        public Representation getSelectedRepresentation() {
331
            return selectedRepresentation;
332
        }
333

  
334
        /**
335
         * @param selectedRepresentation the selectedRepresentation to set
336
         */
337
        public void setSelectedRepresentation(Representation selectedRepresentation) {
338
            if (selectedRepresentation == null){
339
                selectedRepresentation = Representation.NewInstance("", "", "", null);
340
            }
341
            this.selectedRepresentation = selectedRepresentation;
342
        }
343
    }
344

  
345

  

Also available in: Unified diff