Merge branch 'release/4.6.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / ScopeElement.java
index 08173c72a1c8afb3d85210068d4b91d626a30310..a70daa5d941c69d3c0b922e115802fff8f5ce22a 100644 (file)
@@ -1,9 +1,8 @@
-// $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.
 */
@@ -13,11 +12,15 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+import eu.etaxonomy.taxeditor.ui.section.key.ScopeRestrictionSection;
 
 /**
  * <p>ScopeElement class.</p>
@@ -27,7 +30,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
  * @version 1.0
  */
 public class ScopeElement extends AbstractEntityCollectionElement<DefinedTerm> {
-       
+
        private TermComboElement<DefinedTerm> combo_scope;
 
        /**
@@ -49,20 +52,37 @@ public class ScopeElement extends AbstractEntityCollectionElement<DefinedTerm> {
        @Override
        public void setEntity(DefinedTerm entity) {
                this.entity = entity;
-               combo_scope.setSelection(entity);
+               if(entity!=null && entity.getId()!=0){
+                   combo_scope.setSelection(entity);
+                   combo_scope.removeEmptyElement();
+               }
        }
 
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement element, int style) {
-               combo_scope = formFactory.createTermComboElement(DefinedTerm.class, element, "Scope", null, style);
+               combo_scope = formFactory.createDefinedTermComboElement(TermType.Scope, element, "Scope", null, style);
        }
 
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-               
-       }
+           DefinedTerm scopeTerm = combo_scope.getSelection();
+           if(eventSource==combo_scope && scopeTerm!=null){
+               if(getParentElement() instanceof ScopeRestrictionSection){
+                   PolytomousKey key = ((ScopeRestrictionSection)getParentElement()).getEntity();
+                   key.removeScopeRestriction(entity);
+                   key.addScopeRestriction(scopeTerm);
+                entity = scopeTerm;
+               }
+               else if(getParentElement() instanceof ScopeSection){
+                   TaxonDescription description = ((ScopeSection)getParentElement()).getEntity();
+                   description.removeScope(entity);
+                   description.addScope(scopeTerm);
+                   entity = scopeTerm;
 
+               }
+           }
+       }
 
 }