- partly fixed sequence reference collection section
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 21 Jan 2014 08:30:28 +0000 (08:30 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 21 Jan 2014 08:30:28 +0000 (08:30 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceReferenceCollectionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceReferenceCollectionDetailSection.java

index 20ec934440731bba1a81463f0394bf4b3998cea1..c211849abf70b7fa293edb76f574bcfcff3963ba 100644 (file)
@@ -84,7 +84,6 @@ import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
 import eu.etaxonomy.cdm.model.media.Rights;
-import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
@@ -2396,7 +2395,12 @@ public class CdmFormFactory extends FormToolkit {
 
                        }
         } else if (entity instanceof Reference) {
-            element = new DescriptionSourceElement(this, parentElement, (Reference) entity, removeListener, style);
+            if(parentElement instanceof SequenceReferenceCollectionDetailSection){
+                element = new SequenceReferenceCollectionDetailElement(this, parentElement, (Reference) entity, removeListener, style);
+            }
+            else{
+                element = new DescriptionSourceElement(this, parentElement, (Reference) entity, removeListener, style);
+            }
         } else if (entity instanceof NameTypeDesignation) {
             element = new NameTypeDesignationElement(this, parentElement, (NameTypeDesignation) entity, removeListener,
                     style);
@@ -2450,8 +2454,6 @@ public class CdmFormFactory extends FormToolkit {
             if (descriptionElement.getFeature().equals(Feature.PROTOLOGUE())) {
                 element = new ProtologueElement(this, parentElement, descriptionElement, removeListener, style);
             }
-        } else if (entity instanceof Sequence) {
-            element = new SequenceReferenceCollectionDetailElement(this, parentElement, (Sequence) entity, removeListener, style);
         }
 
         if (element == null) {
index 6f3df638ebc125d7d154a3bee125013a7f25b616..5ada8bdf984980b7095177d32456950b9a5022d5 100644 (file)
@@ -26,10 +26,11 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  * @date 07.01.2014
  *
  */
-public class SequenceReferenceCollectionDetailElement extends AbstractEntityCollectionElement<Sequence>{
+public class SequenceReferenceCollectionDetailElement extends AbstractEntityCollectionElement<Reference>{
 
     protected EntitySelectionElement<Reference> selection_reference;
     protected TextWithLabelElement text_referenceDetail;
+    private Sequence sequence;
 
     /**
      * <p>
@@ -52,9 +53,12 @@ public class SequenceReferenceCollectionDetailElement extends AbstractEntityColl
      *            a T object.
      */
     public SequenceReferenceCollectionDetailElement(CdmFormFactory formFactory,
-            AbstractFormSection section, Sequence entity,
+            AbstractFormSection section, Reference entity,
             SelectionListener removeListener, int style) {
         super(formFactory, section, entity, removeListener, null, style);
+        if(section instanceof SequenceReferenceCollectionDetailSection){
+            sequence = (Sequence) section.getEntity();
+        }
     }
 
     /*
@@ -70,7 +74,7 @@ public class SequenceReferenceCollectionDetailElement extends AbstractEntityColl
         selection_reference = formFactory
                 .createSelectionElement(Reference.class,
                         getConversationHolder(), formElement, "Reference",
-                        null, EntitySelectionElement.ALL, style);
+                        null, EntitySelectionElement.SELECTABLE|EntitySelectionElement.EDITABLE, style);
         text_referenceDetail = formFactory.createTextWithLabelElement(
                 formElement, "Reference Detail", null, SWT.NULL);
     }
@@ -84,10 +88,10 @@ public class SequenceReferenceCollectionDetailElement extends AbstractEntityColl
      *            a T object.
      */
     @Override
-    public void setEntity(Sequence entity) {
+    public void setEntity(Reference entity) {
         this.entity = entity;
 
-//        selection_reference.setEntity(entity.getCitation());
+        selection_reference.setEntity(entity);
 //        text_referenceDetail.setText(entity.getCitationMicroReference());
     };
 
@@ -96,7 +100,12 @@ public class SequenceReferenceCollectionDetailElement extends AbstractEntityColl
      */
     @Override
     public void handleEvent(Object eventSource) {
-        // TODO Auto-generated method stub
+        if(eventSource==selection_reference){
+            sequence.removeCitation(entity);
+            Reference newCitation = selection_reference.getSelection();
+            sequence.addCitation(newCitation);
+            entity = newCitation;
+        }
 
     }
 
index 18dfcd79bdbeca19f42d6a0ab50f4aef9f6c634b..e130528f51deb572b25ee08bc31d35059d8e1644 100644 (file)
@@ -11,10 +11,24 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
 import java.util.Collection;
 
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.widgets.Control;
+
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
@@ -24,8 +38,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
  * @date 07.01.2014
  *
  */
-public class SequenceReferenceCollectionDetailSection  extends
-AbstractEntityCollectionSection<Sequence, Reference> {
+public class SequenceReferenceCollectionDetailSection extends AbstractEntityCollectionSection<Sequence, Reference> {
 
     public SequenceReferenceCollectionDetailSection(CdmFormFactory formFactory,
             ConversationHolder conversation, ICdmFormElement parentElement, int style) {
@@ -50,6 +63,66 @@ AbstractEntityCollectionSection<Sequence, Reference> {
         return ReferenceFactory.newGeneric();
     }
 
+    @Override
+    protected Control createToolbar() {
+        ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+
+        Action addAction = new Action("add", IAction.AS_PUSH_BUTTON){
+            /* (non-Javadoc)
+             * @see org.eclipse.jface.action.Action#run()
+             */
+            @Override
+            public void run() {
+//                Reference element = createNewElement();
+//                if(element != null){
+//                    addElement((Reference)null);
+                    if(! getSection().isExpanded()) {
+                        getSection().setExpanded(true);
+                    }
+                    internalUpdateSection(true);
+//                }
+            }
+        };
+        addAction.setImageDescriptor(new ImageDescriptor() {
+
+            @Override
+            public ImageData getImageData() {
+                return ImageResources.getImage(ImageResources.ADD_ICON).getImageData();
+            }
+        });
+        addAction.setToolTipText(getTooltipString());
+
+        toolBarManager.add(addAction);
+
+        return toolBarManager.createControl(this);
+    }
+
+    @Override
+    protected void createDynamicContents(Collection<Reference> elements)
+    {
+        int i = 0;
+        for(final Reference element : elements){
+            SelectionAdapter removeListener = new SelectionAdapter(){
+                @Override
+                public void widgetSelected(SelectionEvent e) {
+                    removeElement(element);
+                    internalUpdateSection(true);
+                }
+            };
+            boolean modulo = i++%2 == 0;
+            String colorResource = modulo ? Resources.COLOR_LIST_EVEN : Resources.COLOR_LIST_ODD;
+            createElementComposite(element, removeListener, AbstractUtility.getColor(colorResource));
+        }
+        String colorString = i%2==0 ? Resources.COLOR_LIST_EVEN : Resources.COLOR_LIST_ODD;
+        Color backgroundColor = AbstractUtility.getColor(colorString);
+        final SequenceReferenceCollectionDetailElement dummyElement = new SequenceReferenceCollectionDetailElement(formFactory, this, (Reference) null, null, SWT.NULL);
+        if (backgroundColor != null && !backgroundColor.isDisposed()) {
+            dummyElement.setPersistentBackground(backgroundColor);
+            formFactory.adapt(dummyElement);
+            this.addElement(dummyElement);
+        }
+    }
+
     /* (non-Javadoc)
      * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection#addElement(eu.etaxonomy.cdm.model.common.IVersionableEntity)
      */