-// $Id$
/**
* Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy
+ * European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
- *
+ *
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
-
package eu.etaxonomy.taxeditor.ui.element;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
import eu.etaxonomy.taxeditor.ui.translation.TranslationWizard;
/**
- * <p>
- * MultilanguageTextElement class.
- * </p>
- *
+ *
* @author n.hoffmann
* @created Sep 29, 2010
- * @version 1.0
*/
public class MultilanguageTextElement extends AbstractCdmFormElement implements
- SelectionListener {
+ SelectionListener, IEnableableFormElement {
private class OpenTranslationWizard extends SelectionAdapter {
-
+
public OpenTranslationWizard() {
super();
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
- * .swt.events.SelectionEvent)
- */
@Override
public void widgetSelected(SelectionEvent e) {
Map<Language, LanguageString> multilanguageText = getMultilanguageText();
-
- if (multilanguageText == null){
- StoreUtil.warningDialog("No text to transalte", getClass(), "The text is empty and therefore can not be translated");
+
+ if (multilanguageText==null || multilanguageText.isEmpty()){
+ MessagingUtils.warningDialog("No text to translate", getClass(), "The text is empty and therefore can not be translated");
+ return;
}
-
+
TranslationWizard wizard = new TranslationWizard(multilanguageText);
WizardDialog dialog = new WizardDialog(getLayoutComposite()
.getShell(), wizard);
- if (dialog.open() == IStatus.OK) {
+ if (dialog.open() == Window.OK) {
combo_language.setTerms(getLanguages());
updateControls();
}
-
}
}
private Button button;
+ private boolean isEnabled = true;
+// private Button removeRepresentation;
+
private Map<Language, LanguageString> multilanguageText;
- /**
- * <p>
- * Constructor for MultilanguageTextElement.
- * </p>
- *
- * @param formFactory
- * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
- * object.
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param multilanguageText
- * a {@link java.util.Map} object.
- * @param textHeight
- * a {@link java.lang.Integer} object.
- * @param style
- * a int.
- */
public MultilanguageTextElement(CdmFormFactory formFactory,
ICdmFormElement formElement, String labelString,
Map<Language, LanguageString> multilanguageText,
element_languageString = this.formFactory
.createLanguageStringWithLabelElement(formElement, labelString,
- null, textHeight, style);
+ null, textHeight, true, style);
if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
createMultilanguageTextEditingElements(formElement,
private void createMultilanguageTextEditingElements(
ICdmFormElement formElement,
Map<Language, LanguageString> multilanguageText, int style) {
- combo_language = formFactory
- .createTermComboElement(Language.class, formElement,
+ combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
"", null, style);
combo_language.addSelectionListener(this);
+// removeRepresentation = formFactory.createButton(getLayoutComposite(), null,
+// SWT.PUSH);
+// removeRepresentation.setImage(ImageResources
+// .getImage(ImageResources.TRASH_ICON));
+// removeRepresentation.setToolTipText("Remove representation");
+// addControl(removeRepresentation);
+// removeRepresentation.addSelectionListener(new DeleteListener(this));
addControl(formFactory.createLabel(getLayoutComposite(), ""));
button = formFactory.createButton(getLayoutComposite(),
"Open In Translation Editor", SWT.PUSH);
return languageList;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
- * .events.SelectionEvent)
- */
- /** {@inheritDoc} */
@Override
public void widgetSelected(SelectionEvent e) {
- Language selectedLanguage = combo_language.getSelection();
- if (selectedLanguage != null) {
- LanguageString selectedLanguageString = getMultilanguageText().get(
- selectedLanguage);
-
- element_languageString.setLanguageString(selectedLanguageString);
- }
+ if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
+ Language selectedLanguage = combo_language.getSelection();
+ if (selectedLanguage != null) {
+ LanguageString selectedLanguageString = getMultilanguageText().get(
+ selectedLanguage);
+
+ element_languageString.setLanguageString(selectedLanguageString);
+ }
+ }
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
- * .swt.events.SelectionEvent)
- */
- /** {@inheritDoc} */
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
- /**
- * <p>
- * Setter for the field <code>multilanguageText</code>.
- * </p>
- *
- * @param multilanguageText
- * the multilanguageText to set
- */
public void setMultilanguageText(
Map<Language, LanguageString> multilanguageText) {
this.multilanguageText = multilanguageText;
if (multilanguageText != null) {
- if (multilanguageText.isEmpty()) {
- multilanguageText.put(
- CdmStore.getDefaultLanguage(),
- LanguageString.NewInstance("",
- CdmStore.getDefaultLanguage()));
- }
if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
combo_language.setTerms(getLanguages());
button.setEnabled(false);
}
}
- /**
- *
- */
+ @Override
+ public void refresh(){
+ if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
+ Language lang = combo_language.getSelection();
+ if (multilanguageText.get(lang)!= null){
+ this.element_languageString.setText(multilanguageText.get(combo_language.getSelection()).getText());
+ }else{
+ this.element_languageString.setText(null);
+ }
+ }else{
+ if (multilanguageText != null && multilanguageText.get(CdmStore.getDefaultLanguage()) != null){
+ this.element_languageString.setText(multilanguageText.get(CdmStore.getDefaultLanguage()).getText());
+ }
+ }
+ }
+
private void updateControls() {
LanguageString preferredLanguageString = MultilanguageTextHelper
.getPreferredLanguageString(getMultilanguageText(),
.getDefaultLanguage() }));
element_languageString.setLanguageString(preferredLanguageString);
+
if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
- combo_language.setSelection(preferredLanguageString.getLanguage());
+ combo_language.setSelection(preferredLanguageString == null?CdmStore.getDefaultLanguage():preferredLanguageString.getLanguage());
button.setEnabled(true);
- }
+ }
}
- /**
- * <p>
- * Getter for the field <code>multilanguageText</code>.
- * </p>
- *
- * @return the multilanguageText
- */
public Map<Language, LanguageString> getMultilanguageText() {
return multilanguageText;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
- * .eclipse.jface.util.PropertyChangeEvent)
- */
- /** {@inheritDoc} */
@Override
public void propertyChange(PropertyChangeEvent event) {
if (event == null) {
if (eventSource == element_languageString) {
LanguageString languageString = ((LanguageStringWithLabelElement) eventSource)
.getLanguageString();
+ if (multilanguageText == null){
+ multilanguageText = new HashMap<>();
+ }
multilanguageText.put(languageString.getLanguage(), languageString);
firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
}
}
-}
+
+ @Override
+ public void setEnabled(boolean enabled){
+ isEnabled = enabled;
+ if(button!=null){
+ button.setEnabled(enabled);
+ }
+ if(combo_language!=null){
+ combo_language.setEnabled(enabled);
+ }
+ element_languageString.setEnabled(enabled);
+ }
+
+ public void setIndent(int indent){
+ this.element_languageString.setIndent(indent);
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return isEnabled;
+ }
+}
\ No newline at end of file