fixes #1041
authorn.hoffmann <n.hoffmann@localhost>
Tue, 8 Dec 2009 15:16:46 +0000 (15:16 +0000)
committern.hoffmann <n.hoffmann@localhost>
Tue, 8 Dec 2009 15:16:46 +0000 (15:16 +0000)
65 files changed:
.gitattributes
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiontree/detailpage/AbstractDescriptionDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiontree/detailpage/AbstractDescriptionDetailsPage.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiontree/detailpage/CommonNameSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiontree/detailpage/LabelDetailsSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiontree/detailpage/TaxonInteractionDetailsSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiontree/detailpage/TextDataSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractEditorFormSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractFormComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CheckboxComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/Container.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/EditorFormToolkit.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ImageComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/MultilineTextWithLabel.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/NonViralNameDetailsComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ReferenceBaseDetailComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TextActionComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TextWithLabelComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TimePeriodComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ToggleableTextField.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AbstractEntitySetElementComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AbstractEntitySetSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AnnotationComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AnnotationSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CdmComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CheckboxComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CreditComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CreditSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/DescriptionElementSourceComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/DescriptionElementSourceSection.java [moved from taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/OriginalSourceSection.java with 65% similarity]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ExtensionComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ExtensionSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/IdentifiableSourceComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/MarkerComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/MarkerSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/MediaComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/MediaSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusSection.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NonViralNameDetailsComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologSection.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ReferenceBaseDetailComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/RightsComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/RightsSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/SourceSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/TimePeriodComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ToggleableTextField.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/AbstractSelectionComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/AgentSelectionComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/InstitutionSelectionComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/NameSelectionComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/ReferenceSelectionComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/TaxonSelectionComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/AbstractTermComboComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ExtensionTypeComboComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/LanguageComboComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/MarkerTypeComboComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/NomenclaturalStatusTypeComboComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RankComboComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ReferenceTypeComboComposite.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RightsTypeComboComposite.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java

index 68749225faab421fb4137f58810987c548275f52..38c8c238e4d62cc74f1d3740f0c809dbb3afa668 100644 (file)
@@ -832,19 +832,29 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/reference/IReferenc
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/reference/ReferenceSelectComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractEditorFormSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractFormComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CheckboxComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/Container.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/EditorFormToolkit.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/IPropertyChangeEmitter.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ImageComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/MultilineTextWithLabel.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/NonViralNameDetailsComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ReferenceBaseDetailComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TextActionComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TextWithLabelComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TimePeriodComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ToggleableTextField.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AbstractEntitySetElementComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AbstractEntitySetSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AnnotationComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AnnotationSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CdmComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CheckboxComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CreditComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CreditSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/DescriptionElementSourceComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/DescriptionElementSourceSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ExtensionComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ExtensionSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/IdentifiableSourceComposite.java -text
@@ -852,16 +862,31 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/Marke
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/MarkerSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/MediaComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/MediaSection.java -text
-taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/OriginalSourceSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NonViralNameDetailsComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ReferenceBaseDetailComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/RightsComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/RightsSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/SourceSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/TimePeriodComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ToggleableTextField.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/AbstractSelectionComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/AgentSelectionComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/InstitutionSelectionComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/NameSelectionComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/ReferenceSelectionComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/TaxonSelectionComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/AbstractTermComboComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ExtensionTypeComboComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/LanguageComboComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/MarkerTypeComboComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/NomenclaturalStatusTypeComboComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RankComboComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ReferenceTypeComboComposite.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RightsTypeComboComposite.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/AbstractEditorPropertySheet.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/AgentBasePropertySource.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/propertysheet/AnnotationPropertySource.java -text
index 4eb38808a9845e81c262ce322a97f88da4e33a87..5b455a7f76d92a06dce7f76f94c315b15d1f5bdf 100644 (file)
@@ -29,7 +29,7 @@ public abstract class AbstractDescriptionDetailSection extends AbstractEditorFor
         * @param style
         */
        public AbstractDescriptionDetailSection(Composite parent, AbstractDescriptionDetailsPage page, int sectionStyle) {
-               super(parent, Section.TITLE_BAR | SWT.NO_BACKGROUND | sectionStyle);
+               super(parent, null, Section.TITLE_BAR | SWT.NO_BACKGROUND | sectionStyle);
                this.page = page;
                                
                this.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
index 4b58185aa3bcf1b9fd26f94690aa16c143675cdc..76d76ac54e619df298c8c583531ff30f5412ef21 100644 (file)
@@ -22,7 +22,7 @@ import org.eclipse.ui.forms.widgets.SharedScrolledComposite;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.taxeditor.forms.EditorFormToolkit;\r
 import eu.etaxonomy.taxeditor.forms.entitysections.AnnotationSection;\r
-import eu.etaxonomy.taxeditor.forms.entitysections.OriginalSourceSection;\r
+import eu.etaxonomy.taxeditor.forms.entitysections.DescriptionElementSourceSection;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -43,7 +43,7 @@ public abstract class AbstractDescriptionDetailsPage implements IDetailsPage, IP
        private boolean hasExtensions = false;\r
                \r
        protected AbstractDescriptionDetailSection descriptionSection;\r
-       private OriginalSourceSection citationSection;\r
+       private DescriptionElementSourceSection citationSection;\r
        private AnnotationSection annotationSection;\r
        private ExtensionSection extensionSection;\r
 \r
@@ -72,13 +72,9 @@ public abstract class AbstractDescriptionDetailsPage implements IDetailsPage, IP
                createDescriptionContents(parent);\r
                \r
                if(hasCitations)\r
-                       citationSection = toolkit.createOriginalSourceSection(parent, getDescriptionElement(), SWT.NULL);\r
-                       if (citationSection != null)\r
-                               citationSection.addPropertyChangeListener(this);\r
+                       citationSection = toolkit.createOriginalSourceSection(parent, getDescriptionElement(), this, Section.TWISTIE | Section.COMPACT);\r
                if(hasAnnotations)\r
-                       annotationSection = toolkit.createAnnotationSection(parent, getDescriptionElement(), SWT.NULL);\r
-                       if(annotationSection != null)\r
-                               annotationSection.addPropertyChangeListener(this);\r
+                       annotationSection = toolkit.createAnnotationSection(parent, getDescriptionElement(), this, Section.TWISTIE | Section.COMPACT);\r
                if(hasExtensions)\r
                        // there are no extensions for description elements\r
                \r
index ac085551d571136b82756a631e7ea785dd6527f7..83bfeb3a7a5b1823a2d3a9901cdc0841c42e9ffa 100644 (file)
@@ -32,11 +32,9 @@ public class CommonNameSection extends AbstractDescriptionDetailSection{
                
                setText("Common Name Details");
                
-               languageCombo = toolkit.createLanguageComboComposite(getClient(), "Language", null, SWT.WRAP);
-               languageCombo.addPropertyChangeListener(this);
+               languageCombo = toolkit.createLanguageComboComposite(getClient(), "Language", null, this, SWT.WRAP);
                languageCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-               commonName = toolkit.createTextWithLabelComposite(getClient(), "Common Name", null, SWT.WRAP);
-               commonName.addPropertyChangeListener(this);
+               commonName = toolkit.createTextWithLabelComposite(getClient(), "Common Name", null, this, SWT.WRAP);
        }
 
        /* (non-Javadoc)
index c1d8c807bf8c259cde660ca1ba333147c1dc6939..19935f07bd3b76dcc1814ca0ad3639f0dfecca29 100644 (file)
@@ -31,8 +31,7 @@ public class LabelDetailsSection extends AbstractDescriptionDetailSection {
                super(parent, page, style);
                setText(title);
                
-               detailDescription = toolkit.createMultilineTextWithLabel(getClient(), labelString, 100, SWT.WRAP);
-               detailDescription.addPropertyChangeListener(this);
+               detailDescription = toolkit.createMultilineTextWithLabel(getClient(), labelString, this, 100, SWT.WRAP);
        }
        
        /* (non-Javadoc)
index aaac7d91764b610f37ef16b0f8ac4017b2165a40..590690be0868b272071b1af7479ead07413f4fdb 100644 (file)
@@ -33,11 +33,9 @@ public class TaxonInteractionDetailsSection extends
                        AbstractDescriptionDetailsPage page, int sectionStyle) {
                super(parent, page, sectionStyle);
                
-               taxonSelection = toolkit.createTaxonSelectionComposite(getClient(), null, SWT.WRAP);
-               taxonSelection.addPropertyChangeListener(this);
+               taxonSelection = toolkit.createTaxonSelectionComposite(getClient(), null, this, SWT.WRAP);
                
-               interactionDescription = toolkit.createMultilineTextWithLabel(getClient(), "Description", 200, SWT.WRAP);
-               interactionDescription.addPropertyChangeListener(this);
+               interactionDescription = toolkit.createMultilineTextWithLabel(getClient(), "Description", this, 200, SWT.WRAP);
        }
 
        /* (non-Javadoc)
index 310e8b48d2a6f5c000f959e6457de19d548389c6..fbc56f6f9ecf6682577afdaf1227c71256e7cc20 100644 (file)
@@ -28,9 +28,7 @@ public class TextDataSection extends AbstractDescriptionDetailSection{
                        AbstractDescriptionDetailsPage page, int style) {
                super(parent, page, style);
                
-               multilineTextWithLabel = toolkit.createMultilineTextWithLabel(getClient(), "Text for this descriptive element:", 200, SWT.WRAP);
-               
-               multilineTextWithLabel.addPropertyChangeListener(this);
+               multilineTextWithLabel = toolkit.createMultilineTextWithLabel(getClient(), "Text for this descriptive element:", this, 200, SWT.WRAP);
        }
        
        /* (non-Javadoc)
index b41a2e0c2375d9e0cca4cd57efe2a765b8c9008b..7f3bf808de406613ffa27a82a79b1c97c80a3bd7 100644 (file)
@@ -21,7 +21,7 @@ import org.eclipse.ui.forms.widgets.ToggleHyperlink;
  * @author nho
  *
  */
-public abstract class AbstractEditorFormSection extends Section implements IExpansionListener, IPropertyChangeEmitter{
+public abstract class AbstractEditorFormSection extends Section implements IExpansionListener, IPropertyChangeEmitter, IPropertyChangeListener{
 
 
        protected EditorFormToolkit toolkit;
@@ -33,8 +33,8 @@ public abstract class AbstractEditorFormSection extends Section implements IExpa
         * @param parent
         * @param style
         */
-       protected AbstractEditorFormSection(Composite parent, int style) {
-               super(parent, Section.TITLE_BAR | SWT.NO_BACKGROUND | style);
+       protected AbstractEditorFormSection(Composite parent, IPropertyChangeListener listener, int style) {
+               super(parent, style);
                
                toolkit = new EditorFormToolkit(parent.getDisplay());
                
@@ -47,6 +47,9 @@ public abstract class AbstractEditorFormSection extends Section implements IExpa
 
                this.setClient(client);
                this.addExpansionListener(this);
+               if(listener != null){
+                       this.addPropertyChangeListener(listener);
+               }
        }
        
        /* (non-Javadoc)
@@ -108,4 +111,11 @@ public abstract class AbstractEditorFormSection extends Section implements IExpa
                        listener.propertyChange(event);
                }
        }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       public void propertyChange(PropertyChangeEvent event) {
+               firePropertyChangeEvent(event);
+       }
 }
index cba926cb04f242db152e032ba606f064061571e4..5856f249ffeb04a5f1474239ed61d956288ca6c9 100644 (file)
@@ -12,23 +12,29 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.widgets.FormToolkit;
 
 /**
  * @author nho
  *
  */
-public abstract class AbstractFormComposite extends Composite implements IPropertyChangeEmitter {
+public abstract class AbstractFormComposite extends Composite implements IPropertyChangeEmitter, IPropertyChangeListener {
 
-       protected FormToolkit toolkit;
+       protected EditorFormToolkit toolkit;
        private Set<IPropertyChangeListener> propertyChangeListeners = new HashSet<IPropertyChangeListener>();
 
+       public GridData FILL_GRID(){
+               return new GridData(SWT.FILL, SWT.FILL, true, true);
+       }
+       
+       public GridData FILL_GRID_HORIZONTALLY(){
+               return new GridData(SWT.FILL, SWT.TOP, true, false);
+       }
        
        /**
         * @param parent
         * @param style
         */
-       public AbstractFormComposite(Composite parent, int style) {
+       public AbstractFormComposite(Composite parent, IPropertyChangeListener listener, int style) {
                super(parent, style);
 
                GridLayout layout = new GridLayout();
@@ -39,11 +45,15 @@ public abstract class AbstractFormComposite extends Composite implements IProper
                
                this.setLayout(layout);
                
-               toolkit = new FormToolkit(parent.getDisplay());
+               toolkit = new EditorFormToolkit(parent.getDisplay());
                
                GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
                
                this.setLayoutData(gridData);
+               
+               if(listener != null){
+                       this.addPropertyChangeListener(listener);
+               }
        }
        
        /* (non-Javadoc)
@@ -77,4 +87,11 @@ public abstract class AbstractFormComposite extends Composite implements IProper
                        listener.propertyChange(event);
                }
        }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       public void propertyChange(PropertyChangeEvent event) {
+               firePropertyChangeEvent(event);
+       }
 }
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmComposite.java
new file mode 100644 (file)
index 0000000..49d096f
--- /dev/null
@@ -0,0 +1,91 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.joda.time.DateTime;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.common.VersionableEntity;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class CdmComposite extends AbstractFormComposite {
+
+       private static final Logger logger = Logger.getLogger(CdmComposite.class);
+       private Label label_created;
+       private Label label_createdBy;
+       private Label label_updated;
+       private Label label_updatedBy;
+       private Label label_uuid;
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public CdmComposite(Composite parent, VersionableEntity entity, IPropertyChangeListener listener,
+                       int style) {
+               super(parent, listener, style);
+               this.setLayout(new GridLayout(2, false));
+               
+               toolkit.createLabel(this, "Created:");
+               label_created = toolkit.createLabel(this, null);
+               label_created.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               toolkit.createLabel(this, "Created by:");
+               label_createdBy = toolkit.createLabel(this, null);
+               label_createdBy.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               toolkit.createLabel(this, "Updated:");
+               label_updated = toolkit.createLabel(this, null);
+               label_updated.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               toolkit.createLabel(this, "Updated by:");
+               label_updatedBy = toolkit.createLabel(this, null);
+               label_updatedBy.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+//             toolkit.createLabel(this, "Uuid:");
+//             label_uuid = toolkit.createLabel(this, null);
+//             label_uuid.setLayoutData(FILL_GRID_HORIZONTALLY());
+       }
+       
+       public void setEntity(VersionableEntity entity){
+               if(entity.getCreated() != null)
+                       label_created.setText(dateFormat(entity.getCreated()));
+               if(entity.getCreatedBy() != null)
+                       label_createdBy.setText(userFormat(entity.getCreatedBy()));
+               if(entity.getUpdated() != null)
+                       label_updated.setText(dateFormat(entity.getUpdated()));
+               if(entity.getUpdatedBy() != null)
+                       label_updatedBy.setText(userFormat(entity.getUpdatedBy()));
+//             label_uuid.setText(entity.getUuid().toString());
+       }
+       
+       private String dateFormat(DateTime dateTime){
+               // TODO agree on pattern or get pattern via preferences or locale
+               String pattern = null;
+               return CdmUtils.Nz(dateTime.toString(pattern));
+       }
+       
+       private String userFormat(User user){
+               // TODO agree on what to display username or real name or even more from shibboleth
+               return CdmUtils.Nz(user.getUsername());
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CheckboxComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CheckboxComposite.java
new file mode 100644 (file)
index 0000000..60ceae5
--- /dev/null
@@ -0,0 +1,72 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class CheckboxComposite extends AbstractFormComposite implements SelectionListener {
+
+       private static final Logger logger = Logger
+                       .getLogger(CheckboxComposite.class);
+       
+       private Button checkbox;
+       
+       /**
+        * 
+        * @param parent
+        * @param label
+        * @param initialState
+        * @param listener
+        * @param style
+        */
+       public CheckboxComposite(Composite parent, String label, boolean initialState,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
+       
+               checkbox = toolkit.createButton(this, label, SWT.CHECK | style);
+               checkbox.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));
+               
+               checkbox.setSelection(initialState);
+               
+               checkbox.addSelectionListener(this);
+       }
+
+       public void setSelection(boolean selected){
+               checkbox.removeSelectionListener(this);
+               checkbox.setSelection(selected);
+               checkbox.addSelectionListener(this);
+       }
+       
+       public boolean getSelection(){
+               return checkbox.getSelection();
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+        */
+       public void widgetSelected(SelectionEvent e) {
+               firePropertyChangeEvent(null);
+       }
+       
+       public void widgetDefaultSelected(SelectionEvent e) {}
+}
index cad2cdc612f1940a6b5db76a86280d3aeecbcc00..81a2f1dd7b5fd4ebadc18387758d7e504634da63 100644 (file)
@@ -16,7 +16,7 @@ public class Container extends AbstractFormComposite {
         * @param style
         */
        public Container(Composite parent, int style) {
-               super(parent, style);
+               super(parent, null, style);
        }
 
 }
index 1ef3c41c6a141e2941bedf04e2d70275bef08c96..a8c8dad3619978ae29d49b6b51bbf9671bc58fbf 100644 (file)
@@ -5,6 +5,9 @@ package eu.etaxonomy.taxeditor.forms;
 
 import java.net.URI;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
@@ -16,16 +19,45 @@ import org.eclipse.ui.internal.forms.widgets.FormFonts;
 
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.Credit;
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
+import eu.etaxonomy.cdm.model.common.Extension;
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.entitysections.AnnotationComposite;
 import eu.etaxonomy.taxeditor.forms.entitysections.AnnotationSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.CreditComposite;
+import eu.etaxonomy.taxeditor.forms.entitysections.CreditSection;
 import eu.etaxonomy.taxeditor.forms.entitysections.DescriptionElementSourceComposite;
-import eu.etaxonomy.taxeditor.forms.entitysections.OriginalSourceSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.DescriptionElementSourceSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.ExtensionComposite;
+import eu.etaxonomy.taxeditor.forms.entitysections.ExtensionSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.MarkerComposite;
+import eu.etaxonomy.taxeditor.forms.entitysections.MarkerSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.NomenclaturalStatusComposite;
+import eu.etaxonomy.taxeditor.forms.entitysections.NomenclaturalStatusSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.IdentifiableSourceComposite;
+import eu.etaxonomy.taxeditor.forms.entitysections.ProtologComposite;
+import eu.etaxonomy.taxeditor.forms.entitysections.ProtologSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.RightsComposite;
+import eu.etaxonomy.taxeditor.forms.entitysections.RightsSection;
+import eu.etaxonomy.taxeditor.forms.entitysections.SourceSection;
 import eu.etaxonomy.taxeditor.forms.selectioncomposites.TaxonSelectionComposite;
 import eu.etaxonomy.taxeditor.forms.termcombos.LanguageComboComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.NomenclaturalStatusTypeComboComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.RankComboComposite;
 
 /**
  * @author nho
@@ -77,19 +109,21 @@ public class EditorFormToolkit extends FormToolkit{
         * @param style
         * @return
         */
-       public MultilineTextWithLabel createMultilineTextWithLabel(Composite parent, String labelString, int textHeight, int style){
-               return new MultilineTextWithLabel(parent, labelString, "", textHeight, style);
+       public MultilineTextWithLabel createMultilineTextWithLabel(Composite parent, String labelString, IPropertyChangeListener listener, int textHeight, int style){
+               return new MultilineTextWithLabel(parent, labelString, "", listener, textHeight, style);
        }
+
        
        /**
         * 
         * @param parent
-        * @param source
+        * @param labelString
+        * @param initialText
         * @param style
         * @return
         */
-       public DescriptionElementSourceComposite createDescriptionElementSourceComposite(Composite parent, DescriptionElementSource source, int style){
-               return new DescriptionElementSourceComposite(parent, source, style);
+       public TextWithLabelComposite createTextWithLabelComposite(Composite parent, String labelString, String initialText, IPropertyChangeListener listener, int style){
+               return new TextWithLabelComposite(parent, labelString, initialText, listener, style);
        }
        
        /**
@@ -100,8 +134,20 @@ public class EditorFormToolkit extends FormToolkit{
         * @param style
         * @return
         */
-       public TextWithLabelComposite createTextWithLabelComposite(Composite parent, String labelString, String initialText, int style){
-               return new TextWithLabelComposite(parent, labelString, initialText, style);
+       public TextWithLabelComposite createTextComposite(Composite parent, String initialText, IPropertyChangeListener listener, int style){
+               return new TextWithLabelComposite(parent, null, initialText, listener, style);
+       }
+       
+       /**
+        * 
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param style
+        * @return
+        */
+       public LanguageComboComposite createLanguageComboComposite(Composite parent, String labelString, Language selection, IPropertyChangeListener listener, int style){
+               return new LanguageComboComposite(parent, labelString, selection, listener, style);
        }
        
        /**
@@ -109,11 +155,26 @@ public class EditorFormToolkit extends FormToolkit{
         * @param parent
         * @param labelString
         * @param selection
+        * @param listener
         * @param style
         * @return
         */
-       public LanguageComboComposite createLanguageComboComposite(Composite parent, String labelString, Language selection, int style){
-               return new LanguageComboComposite(parent, labelString, selection, style);
+       public RankComboComposite createRankComboComposite(Composite parent, String labelString, Rank selection, IPropertyChangeListener listener, int style){
+               return new RankComboComposite(parent, labelString, selection, listener, style);
+       }
+       
+       /**
+        * @param parent
+        * @param string
+        * @param object
+        * @param namePropertySection
+        * @param null1
+        * @return
+        */
+       public NomenclaturalStatusTypeComboComposite createNomenclaturalStatusCombo(Composite parent,
+                       String labelString, NomenclaturalStatusType selection,
+                       IPropertyChangeListener listener, int style) {
+               return new NomenclaturalStatusTypeComboComposite(parent, labelString, selection, listener, style, style);
        }
        
        /**
@@ -146,8 +207,8 @@ public class EditorFormToolkit extends FormToolkit{
         * @param style
         * @return
         */
-       public AnnotationComposite createAnnotationComposite(Composite parent, Annotation annotation, int style) {
-               return new AnnotationComposite(parent, annotation, style);
+       public AnnotationComposite createAnnotationComposite(Composite parent, Annotation annotation, SelectionListener removeListener, IPropertyChangeListener listener, int style) {
+               return new AnnotationComposite(parent, annotation, removeListener, listener, style);
        }
        
        /**
@@ -157,8 +218,20 @@ public class EditorFormToolkit extends FormToolkit{
         * @param style
         * @return
         */
-       public TaxonSelectionComposite createTaxonSelectionComposite(Composite parent, TaxonBase selection, int style) {
-               return new TaxonSelectionComposite(parent, "Taxon", selection, style);
+       public TaxonSelectionComposite createTaxonSelectionComposite(Composite parent, TaxonBase selection, IPropertyChangeListener listener, int style) {
+               return new TaxonSelectionComposite(parent, "Taxon", selection, listener, style);
+       }
+       
+       /**
+        * 
+        * @param parent
+        * @param annotatableEntity
+        * @param style
+        * @return
+        */
+       public AnnotationSection createAnnotationSection(Composite parent, AnnotatableEntity annotatableEntity,
+                       IPropertyChangeListener listener, int style){
+               return new AnnotationSection(parent, annotatableEntity, listener, style);
        }
        
        /**
@@ -168,8 +241,20 @@ public class EditorFormToolkit extends FormToolkit{
         * @param style
         * @return
         */
-       public AnnotationSection createAnnotationSection(Composite parent, AnnotatableEntity annotatableEntity,  int style){
-               return new AnnotationSection(parent, annotatableEntity, style);
+       public NomenclaturalStatusSection createNomenclaturalStatusSection(Composite parent, TaxonNameBase taxonNameBase,
+                       IPropertyChangeListener listener, int style){
+               return new NomenclaturalStatusSection(parent, taxonNameBase, listener, style);
+       }
+       
+       /**
+        * @param parent
+        * @param annotatableEntity
+        * @param style
+        * @return
+        */
+       public MarkerSection createMarkerSection(Composite parent, AnnotatableEntity annotatableEntity,
+                       IPropertyChangeListener listener, int style) {
+               return new MarkerSection(parent, annotatableEntity, listener, style);
        }
        
        /**
@@ -179,10 +264,83 @@ public class EditorFormToolkit extends FormToolkit{
         * @param style
         * @return
         */
-       public OriginalSourceSection createOriginalSourceSection(Composite parent, DescriptionElementBase entity, int style){
-               return new OriginalSourceSection(parent, entity, style);
+       public DescriptionElementSourceSection createOriginalSourceSection(Composite parent, DescriptionElementBase entity,
+                       IPropertyChangeListener listener, int style){
+               return new DescriptionElementSourceSection(parent, entity, listener, style);
        }
        
+       /**
+        * @param parent
+        * @param identifiableEntity
+        * @param style
+        * @return
+        */
+       public CreditSection createCreditSection(Composite parent, IdentifiableEntity identifiableEntity,
+                       IPropertyChangeListener listener, int style) {
+               return new CreditSection(parent, identifiableEntity, listener, style);
+       }
+       
+       /**
+        * 
+        * @param parent
+        * @param identifiableEntity
+        * @param style
+        * @return
+        */
+       public ExtensionSection createExtensionSection(Composite parent, IdentifiableEntity identifiableEntity,
+                       IPropertyChangeListener listener, int style) {
+               return new ExtensionSection(parent, identifiableEntity, listener, style);
+       }
+
+       /**
+        * 
+        * @param parent
+        * @param object
+        * @param null1
+        * @return
+        */
+       public RightsSection createRightsSection(Composite parent, IdentifiableEntity identifiableEntity,
+                       IPropertyChangeListener listener, int style) {
+               return new RightsSection(parent, identifiableEntity, listener, style);
+       }
+
+       /**
+        * 
+        * @param parent
+        * @param object
+        * @param null1
+        * @return
+        */
+       public SourceSection createSourcesSection(Composite parent, IdentifiableEntity identifiableEntity,
+                       IPropertyChangeListener listener, int style) {
+               return new SourceSection(parent, identifiableEntity, listener, style);
+       }
+       
+       /**
+        * 
+        * @param parent
+        * @param listener
+        * @param nonViralName
+        * @param style
+        * @return
+        */
+       public NonViralNameDetailsComposite createNonViralNameDetailsComposite(Composite parent,
+                       IPropertyChangeListener listener, int style) {
+               return new NonViralNameDetailsComposite(parent, listener, style);
+       }
+       
+       /**
+        * @param parent
+        * @param string
+        * @param b
+        * @param taxonBasePropertySection
+        * @return
+        */
+       public CheckboxComposite createCheckbox(Composite parent, String label, boolean initialState,
+                       IPropertyChangeListener listener) {
+               return new CheckboxComposite(parent, label, initialState, listener, SWT.NULL);
+       }
+
        
        /**
         * Creates a section as a part of the form.
@@ -205,13 +363,13 @@ public class EditorFormToolkit extends FormToolkit{
                
                section.setFont(boldFontHolder2.getBoldFont(section.getParent().getFont()));
 
-//             if ((section.getStyle() & Section.TITLE_BAR) != 0
-//                             || (section.getStyle() & Section.SHORT_TITLE_BAR) != 0) {
+               if ((section.getStyle() & Section.TITLE_BAR) != 0
+                               || (section.getStyle() & Section.SHORT_TITLE_BAR) != 0) {
                        getColors().initializeSectionToolBarColors();
                        section.setTitleBarBackground(getColors().getColor(IFormColors.TB_BG));
                        section.setTitleBarBorderColor(getColors()
                                        .getColor(IFormColors.TB_BORDER));
-//             }
+               }
                // call setTitleBarForeground regardless as it also sets the label color
                section.setTitleBarForeground(getColors()
                                .getColor(IFormColors.TB_TOGGLE));
@@ -250,5 +408,20 @@ public class EditorFormToolkit extends FormToolkit{
                }
        }
 
+       /**
+        * @param parent
+        * @param object
+        * @param listener
+        * @param i
+        * @return
+        */
+       public ProtologSection createProtologSection(Composite parent,
+                       TaxonNameDescription nameDescription, IPropertyChangeListener listener, int style) {
+               return new ProtologSection(parent, nameDescription, listener, style);
+       }
+       
+       public CdmComposite createCdmComposite(Composite parent, VersionableEntity entity, int style){
+               return new CdmComposite(parent, entity, null, style); 
+       }
 
 }
index 7a739a6d0f9eca33fd9bb7912ef0a78df9de0c21..8912efcaa8b831bad5dacc9462bd9a8c55d70e54 100644 (file)
@@ -29,7 +29,7 @@ public class ImageComposite extends AbstractFormComposite implements ControlList
         * @param style
         */
        protected ImageComposite(Composite parent, URI imageUri, int style) {
-               super(parent, style);
+               super(parent, null, style);
 
                this.setLayout(new GridLayout());
                
@@ -40,6 +40,7 @@ public class ImageComposite extends AbstractFormComposite implements ControlList
                
                showImage();
                browser.addControlListener(this);
+               super.addPropertyChangeListener(this);
        }
 
        /**
index 0bf0ef9925ddc73af83299f6fe457d63f8e1b71e..c02b9133b5c2ec66a3090d817ad07832a2039505 100644 (file)
@@ -3,13 +3,17 @@
  */
 package eu.etaxonomy.taxeditor.forms;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
 
 /**
- * @author nho
- *
+ * A multilined text widget that has a label on top of it.
+ * 
+ * @author n.hoffmann
+ * @created Nov 9, 2009
+ * @version 1.0
  */
 public class MultilineTextWithLabel extends TextWithLabelComposite {
        
@@ -20,9 +24,9 @@ public class MultilineTextWithLabel extends TextWithLabelComposite {
         * @param style
         */
        protected MultilineTextWithLabel(Composite parent, String labelString,
-                       String initialText, int textHeight, int style) {
+                       String initialText, IPropertyChangeListener listener, int textHeight, int style) {
                // experimenting with "SWT.V_SCROLL" 
-               super(parent, labelString, initialText, style);
+               super(parent, labelString, initialText, listener, true, style);
                GridData gd = new GridData(SWT.FILL, SWT.TOP, true, true);
                gd.heightHint = textHeight;
                text.setLayoutData(gd);
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/NonViralNameDetailsComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/NonViralNameDetailsComposite.java
new file mode 100644 (file)
index 0000000..5b2cdb9
--- /dev/null
@@ -0,0 +1,113 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.taxeditor.forms.termcombos.NomenclaturalStatusTypeComboComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.RankComboComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class NonViralNameDetailsComposite extends AbstractFormComposite {
+
+       private static final Logger logger = Logger
+                       .getLogger(NonViralNameDetailsComposite.class);
+       private Label label_parsingStatus;
+       private TextWithLabelComposite text_cache;
+       private RankComboComposite combo_rank;
+       private TextWithLabelComposite text_uninomial;
+       private TextWithLabelComposite text_infragenericEpithet;
+       private TextWithLabelComposite text_specificEpithet;
+       private TextWithLabelComposite text_infraspecificEpithet;
+       private TextWithLabelComposite text_appendedPhrase;
+       private NomenclaturalStatusTypeComboComposite combo_nomenclaturalStatus;
+       private NonViralName nonViralName;
+       private Composite composite_nameParts;
+       private Rank rank;
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public NonViralNameDetailsComposite(Composite parent,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
+       }
+       
+       public void setInput(NonViralName name){
+               nonViralName = name;
+               rank = name.getRank();
+               createControls(this, this, SWT.NULL);
+       }
+       
+       private void createControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(composite_nameParts != null)
+                       composite_nameParts.dispose();
+               composite_nameParts = toolkit.createComposite(this);
+               composite_nameParts.setLayout(new GridLayout(2, false));
+               composite_nameParts.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+               
+               createGenusOrUninomialControls(composite_nameParts, listener, style);
+               createInfragenerericEpithetControls(composite_nameParts, listener, style);
+               createSpecificEpithetControls(composite_nameParts, listener, style);
+               createInfraSpecificEpithetControls(composite_nameParts, listener, style);
+               
+               parent.layout();
+       }
+       
+       private void createGenusOrUninomialControls(Composite parent, IPropertyChangeListener listener, int style){             
+               toolkit.createLabel(composite_nameParts, "Uninomial");
+               text_uninomial = toolkit.createTextWithLabelComposite(parent, null, nonViralName.getGenusOrUninomial(), listener, style);
+       }
+       
+       private void createInfragenerericEpithetControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(rank.isInfraGeneric()){
+                       toolkit.createLabel(composite_nameParts, "Infrageneric Epithet");
+                       text_infragenericEpithet = toolkit.createTextWithLabelComposite(parent, null, nonViralName.getInfraGenericEpithet(), listener, style);
+               }
+       }
+       
+       private void createSpecificEpithetControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(rank.isSpecies() || rank.isInfraSpecific()){
+                       toolkit.createLabel(composite_nameParts, "Specific Epithet");
+                       text_specificEpithet = toolkit.createTextWithLabelComposite(composite_nameParts, null, nonViralName.getSpecificEpithet(), this, SWT.NULL);
+               }
+       }
+       
+       private void createInfraSpecificEpithetControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(rank.isInfraSpecific()){
+                       toolkit.createLabel(composite_nameParts, "Infraspecific Epithet");
+                       text_infraspecificEpithet = toolkit.createTextWithLabelComposite(composite_nameParts, null, nonViralName.getInfraSpecificEpithet(), this, SWT.NULL);
+               }
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.propertysheet.tabbed.section.AbstractCdmPropertySection#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               super.propertyChange(event);
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ReferenceBaseDetailComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ReferenceBaseDetailComposite.java
new file mode 100644 (file)
index 0000000..08c9463
--- /dev/null
@@ -0,0 +1,265 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.ReferenceType;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.AgentSelectionComposite;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.InstitutionSelectionComposite;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.ReferenceSelectionComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.ReferenceTypeComboComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
+ */
+public class ReferenceBaseDetailComposite extends AbstractFormComposite {
+       private static final Logger logger = Logger
+                       .getLogger(ReferenceBaseDetailComposite.class);
+       private ReferenceBase referenceBase;
+       private Composite composite_referenceParts;
+       private TextWithLabelComposite text_edition;
+       private TextWithLabelComposite text_editor;
+       private TextWithLabelComposite text_isbn;
+       private TextWithLabelComposite text_issn;
+       private TextWithLabelComposite text_organisation;
+       private TextWithLabelComposite text_pages;
+       private TextWithLabelComposite text_placePublished;
+       private TextWithLabelComposite text_publisher;
+       private MultilineTextWithLabel text_referenceAbstract;
+       private InstitutionSelectionComposite selection_school;
+       private TextWithLabelComposite text_series;
+       private TextWithLabelComposite text_seriesPart;
+       private TextWithLabelComposite text_title;
+       private TextWithLabelComposite text_volume;
+       private TextWithLabelComposite text_uri;
+       private AgentSelectionComposite selection_agent;
+       private TimePeriodComposite composite_timePeriod;
+       private ReferenceSelectionComposite selection_inReference;
+       private InstitutionSelectionComposite selection_institution;
+       private ReferenceTypeComboComposite combo_referenceType;
+       private ReferenceType referenceType;
+       
+       public void setInput(ReferenceBase referenceBase){
+               this.referenceBase = referenceBase;
+               referenceType = referenceBase.getType();
+                       
+               createControls(this, this, SWT.NULL);
+       }
+
+
+       public ReferenceBaseDetailComposite(Composite parent,
+                       IPropertyChangeListener listener, int containerStyle){
+               super(parent, listener, containerStyle);
+       }
+
+       public void setEnabled(boolean enabled){
+               if(composite_referenceParts != null){
+                       for(Control control : composite_referenceParts.getChildren()){
+                               if(control instanceof Composite){
+                                       ((Composite) control).setEnabled(enabled);
+                               }
+                       }
+               }
+       }
+       
+       private void createControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(composite_referenceParts != null)
+                       composite_referenceParts.dispose();
+               
+               composite_referenceParts = toolkit.createComposite(parent);
+               composite_referenceParts.setLayout(new GridLayout(2, false));
+               composite_referenceParts.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+               
+               // title
+               toolkit.createLabel(composite_referenceParts, "Title");
+               text_title = toolkit.createTextComposite(composite_referenceParts, referenceBase.getTitle(), listener, style);
+               text_title.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               // author team
+               toolkit.createLabel(composite_referenceParts, "Author Team");
+               selection_agent = new AgentSelectionComposite(composite_referenceParts, null, referenceBase.getAuthorTeam(), listener, style);
+               
+               // date published
+               toolkit.createLabel(composite_referenceParts, "Date Published");
+               composite_timePeriod = new TimePeriodComposite(composite_referenceParts, referenceBase.getDatePublished(), listener, style);
+               
+               /* ReferenceBase END */
+               
+               /* Generic */
+               if(referenceType != null && referenceType.equals(ReferenceType.Generic)){
+                       createGenericControls(composite_referenceParts, listener, style);
+               }else if(referenceType != null){
+               
+                       createPublicationControls(composite_referenceParts, listener, style);
+
+                       createVolumeControls(composite_referenceParts, listener, style);
+
+                       createSectionControls(composite_referenceParts, listener, style);
+
+                       createPrintedUnitControls(composite_referenceParts, listener, style);                           
+                       
+               }
+               
+               // uri
+               toolkit.createLabel(composite_referenceParts, "URI");
+               text_uri = toolkit.createTextComposite(composite_referenceParts, referenceBase.getUri(), listener, style);
+               
+               
+               // reference abstract
+               text_referenceAbstract = toolkit.createMultilineTextWithLabel(composite_referenceParts, "Reference Abstract", listener, 100, style);
+               text_referenceAbstract.setText(referenceBase.getReferenceAbstract());
+               text_referenceAbstract.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+               
+               parent.layout();
+       }
+       
+       /**
+        * Creates additional controls to edit a generic reference 
+        * 
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       private void createGenericControls(Composite parent, IPropertyChangeListener listener, int style){
+               //editor
+               toolkit.createLabel(parent, "Editor");
+               text_editor = toolkit.createTextComposite(parent, referenceBase.getEditor(), listener, style);
+               
+               // series
+               toolkit.createLabel(parent, "Series");
+               text_series = toolkit.createTextComposite(parent, referenceBase.getSeries(), listener, style);
+               
+               // volume 
+               toolkit.createLabel(parent, "Volume");
+               text_volume = toolkit.createTextComposite(parent, referenceBase.getVolume(), listener, style);
+               
+               // pages
+               toolkit.createLabel(parent, "Pages");
+               text_pages = toolkit.createTextComposite(parent, referenceBase.getPages(), listener, style);
+       }
+       
+       /**
+        * Creates addition controls to edit a publication
+        * 
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       private void createPublicationControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(! referenceType.isPublication()){
+                       return;
+               }
+               
+               // placePublished
+               toolkit.createLabel(parent, "Place Published");
+               text_placePublished = toolkit.createTextComposite(parent, referenceBase.getPlacePublished(), listener, style);
+               
+               // publisher
+               toolkit.createLabel(parent, "Publisher");
+               text_publisher = toolkit.createTextComposite(parent, referenceBase.getPublisher(), listener, style);
+               
+               if(referenceType.equals(ReferenceType.Journal)){
+                       //issn
+                       toolkit.createLabel(parent, "ISSN");
+                       text_issn = toolkit.createTextComposite(parent, referenceBase.getIssn(), listener, style);
+               }
+               
+               if(referenceType.equals(ReferenceType.Report)){
+                       // institution
+                       toolkit.createLabel(parent, "Institution");
+                       selection_institution = new InstitutionSelectionComposite(parent, null, referenceBase.getInstitution(), listener, style);
+               }
+               
+               if(referenceType.equals(ReferenceType.Thesis)){
+                       // school
+                       toolkit.createLabel(parent, "School");
+                       selection_school = new InstitutionSelectionComposite(parent, null, referenceBase.getSchool(), listener, style);
+               }
+               
+               if(referenceType.equals(ReferenceType.Proceedings)){
+                       //organization
+                       toolkit.createLabel(parent, "Organisation");
+                       text_organisation = toolkit.createTextComposite(parent, referenceBase.getOrganization(), listener, style);
+               }
+       }
+       
+       private void createSectionControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(! referenceType.isSection()){
+                       return;
+               }
+               
+               // pages
+               toolkit.createLabel(parent, "Pages");
+               text_pages = toolkit.createTextComposite(parent, referenceBase.getPages(), listener, style);
+               
+               // in reference
+               toolkit.createLabel(parent, "In Reference"); // TODO Label May differ according to ReferenceType
+               selection_inReference = new ReferenceSelectionComposite(parent, null, referenceBase.getInReference(), listener, style);
+       }
+       
+       private void createVolumeControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(!referenceType.isVolumeReference()){
+                       return;
+               }
+               
+               // volume 
+               toolkit.createLabel(parent, "Volume");
+               text_volume = toolkit.createTextComposite(parent, referenceBase.getVolume(), listener, style);          
+       }
+       
+       private void createPrintedUnitControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(! referenceType.isPrintedUnit()){
+                       return;
+               }
+               
+               //editor
+               toolkit.createLabel(parent, "Editor");
+               text_editor = toolkit.createTextComposite(parent, referenceBase.getEditor(), listener, style);
+               
+               // series part
+               toolkit.createLabel(parent, "Series Part");
+               text_seriesPart = toolkit.createTextComposite(parent, referenceBase.getSeriesPart(), listener, style);
+               
+               if(referenceType.equals(ReferenceType.Book)){
+                       // edition
+                       toolkit.createLabel(parent, "Edition");
+                       text_edition = toolkit.createTextComposite(parent, referenceBase.getEdition(), listener, style);
+                       
+                       //isbn
+                       toolkit.createLabel(parent, "ISBN");
+                       text_isbn = toolkit.createTextComposite(parent, referenceBase.getIsbn(), listener, style);
+               }
+       }
+
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               
+               
+               
+               super.propertyChange(event);
+       }
+
+}
index e7128b247d365461a9d5dc809fc9a8ded0face35..bed4dfd1ff3c5767f0e513e66abd90507593a7e1 100644 (file)
@@ -29,7 +29,7 @@ public class TextActionComposite extends AbstractFormComposite {
         * @param style
         */
        protected TextActionComposite(Composite parent, String labelString, String initialText, int style) {
-               super(parent, style);
+               super(parent, null, style);
                
                this.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
                GridLayout layout = (GridLayout) this.getLayout();
@@ -46,6 +46,7 @@ public class TextActionComposite extends AbstractFormComposite {
                setText(CdmUtils.Nz(initialText));
                
                button = toolkit.createButton(this, "Show", SWT.PUSH);
+               addPropertyChangeListener(this);
        }
 
        /**
index 78a560dd915a53453a7e8a7558f84b5f2ae14670..76e14926a82db1d752a70d488ac01203a21179a1 100644 (file)
@@ -3,6 +3,7 @@
  */
 package eu.etaxonomy.taxeditor.forms;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -20,23 +21,30 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 public class TextWithLabelComposite extends AbstractFormComposite implements ModifyListener{
        protected Text text;
        
-       /**
-        * @param parent
-        * @param style
-        */
-       public TextWithLabelComposite(Composite parent, String labelString, String initialText, int style) {
-               super(parent, style);
+       public TextWithLabelComposite(Composite parent, String labelString, String initialText, IPropertyChangeListener listener, boolean scroll, int style) {
+               super(parent, listener, style);
                
                this.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
                
-               toolkit.createLabel(this, labelString, SWT.WRAP);
+               if(labelString != null){
+                       toolkit.createLabel(this, labelString, SWT.WRAP);
+               }
                
-               text = toolkit.createText(this, "", SWT.BORDER | SWT.MULTI | SWT.WRAP);
+               int scrollStyle = scroll ? SWT.V_SCROLL : SWT.NULL;
+               text = toolkit.createText(this, "", SWT.BORDER | SWT.MULTI | SWT.WRAP | scrollStyle);
                text.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
                text.addModifyListener(this);
                
                setText(initialText);
        }
+       
+       /**
+        * @param parent
+        * @param style
+        */
+       public TextWithLabelComposite(Composite parent, String labelString, String initialText, IPropertyChangeListener listener,  int style) {
+               this(parent, labelString, initialText, listener, false, style);
+       }
 
        /**
         * Get the text of this composites text composite
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TimePeriodComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/TimePeriodComposite.java
new file mode 100644 (file)
index 0000000..8add974
--- /dev/null
@@ -0,0 +1,40 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.common.TimePeriod;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
+ */
+public class TimePeriodComposite extends AbstractFormComposite {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(TimePeriodComposite.class);
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public TimePeriodComposite(Composite parent, TimePeriod timePeriod,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
+               // TODO Auto-generated constructor stub
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ToggleableTextField.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ToggleableTextField.java
new file mode 100644 (file)
index 0000000..3989960
--- /dev/null
@@ -0,0 +1,93 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 18, 2009
+ * @version 1.0
+ */
+public class ToggleableTextField extends AbstractFormComposite implements SelectionListener {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(ToggleableTextField.class);
+       private TextWithLabelComposite text_cache;
+       private Composite container;
+       private Button button_toggle;
+       
+       private boolean state;
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public ToggleableTextField(Composite parent,
+                       IPropertyChangeListener listener, String label, String initialText, boolean initialState, int style) {
+               super(parent, listener, style);
+               
+                               
+               container = toolkit.createComposite(this);
+               container.setLayout(new GridLayout(2, false));
+               container.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               text_cache = toolkit.createTextWithLabelComposite(container, label, initialText, this, SWT.NULL);
+               text_cache.setLayoutData(FILL_GRID_HORIZONTALLY());
+               button_toggle = toolkit.createButton(container, "Toggle", SWT.TOGGLE);
+               button_toggle.setLayoutData(new GridData(SWT.RIGHT, SWT.END, false, false));
+               button_toggle.addSelectionListener(this);
+               
+               setState(initialState);
+       }
+
+       public void setText(String text){
+               if(text != null){
+                       text_cache.setText(text);
+               }
+       }
+       
+       public String getText(){
+               return text_cache.getText();
+       }
+       
+       /**
+        * @param initialState
+        */
+       public void setState(boolean state) {
+               this.state = state;
+               text_cache.setEnabled(state);
+               button_toggle.setSelection(state);
+       }
+
+       public boolean getState(){
+               return state;
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+        */
+       public void widgetSelected(SelectionEvent e) {
+               setState(button_toggle.getSelection());
+       }
+       
+       public void widgetDefaultSelected(SelectionEvent e) {}
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AbstractEntitySetElementComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/AbstractEntitySetElementComposite.java
new file mode 100644 (file)
index 0000000..b1ca02c
--- /dev/null
@@ -0,0 +1,80 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.common.VersionableEntity;
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ */
+public abstract class AbstractEntitySetElementComposite<T extends VersionableEntity> extends AbstractFormComposite {
+
+       private static final Logger logger = Logger
+                       .getLogger(AbstractEntitySetElementComposite.class);
+       
+       protected T element;
+       
+       protected IPropertyChangeListener propertyChangeListener;
+
+       private Composite container;
+
+       private Composite box;
+
+       private Button button_remove;
+       
+       /**
+        * @param parent
+        * @param propertyChangelistener
+        * @param style
+        */
+       public AbstractEntitySetElementComposite(Composite parent, T element, SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, propertyChangelistener, style);
+                               
+               box = toolkit.createComposite(this);
+               box.setLayout(new GridLayout(2, false));
+               box.setLayoutData(FILL_GRID());
+               
+               container = toolkit.createComposite(box);
+               container.setLayout(new GridLayout());
+               container.setLayoutData(FILL_GRID());
+               button_remove = toolkit.createButton(box, "Remove", SWT.PUSH);
+               button_remove.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
+               
+               button_remove.addSelectionListener(removeListener);
+               
+               createControls(container, style);
+               
+               setElement(element);            
+       }
+       
+       public abstract void setElement(T element);
+       
+       
+       public T getElement(){
+               return element;
+       }
+       
+       public abstract void createControls(Composite parent, int style);
+
+}
index 359cac66c2a424addf878d83d70878da4abf4e93..9d370c242c014f4a61b0ee7d51c600ff0280b74d 100644 (file)
@@ -5,12 +5,16 @@ package eu.etaxonomy.taxeditor.forms.entitysections;
 
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
+import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.taxeditor.forms.AbstractEditorFormSection;
 
@@ -27,11 +31,11 @@ public abstract class AbstractEntitySetSection<T extends VersionableEntity> exte
         * @param parent
         * @param style
         */
-       protected AbstractEntitySetSection(Composite parent, T entity, int style) {
-               super(parent, style);
+       protected AbstractEntitySetSection(Composite parent, T entity, String title, IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
                this.entity = entity;
+               this.setText(CdmUtils.Nz(title));
                setTextClient(createToolbar());
-               
        }
        
        private Control createToolbar() {
@@ -44,6 +48,13 @@ public abstract class AbstractEntitySetSection<T extends VersionableEntity> exte
                
                return toolBarManager.createControl(this);
        }
+       
+       protected void createRemoveButton(Composite parent, SelectionListener listener){
+               Button button_remove = toolkit.createButton(parent, "Remove", SWT.PUSH);
+               button_remove.setToolTipText("Remove");
+               button_remove.addSelectionListener(listener);
+               button_remove.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
+       }
 
        /**
         * @return
index 6f6e3f9488cfbd269676050224fed8e775910f99..f1b51ed33624b54b9060f73c70ad5270dbce1b50 100644 (file)
@@ -3,8 +3,9 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -14,43 +15,45 @@ import eu.etaxonomy.taxeditor.forms.MultilineTextWithLabel;
  * @author nho
  *
  */
-public class AnnotationComposite extends MultilineTextWithLabel implements ModifyListener{
+public class AnnotationComposite extends AbstractEntitySetElementComposite<Annotation>{
 
-       private Annotation annotation;
+       private MultilineTextWithLabel text;
 
        /**
         * 
         * @param parent
         * @param annotation
+        * @param propertyChangeListener 
         * @param style
         */
-       public AnnotationComposite(Composite parent, Annotation annotation, int style) {
-               super(parent, "Annotation", null, 100, style);
-               
-               this.setAnnotation(annotation);
-               
-               text.addModifyListener(this);
+       public AnnotationComposite(Composite parent, Annotation annotation, SelectionListener removeListener, IPropertyChangeListener propertyChangeListener, int style) {
+               super(parent, annotation, removeListener, propertyChangeListener, style);
        }
-
-       /**
-        * @param annotation the annotation to set
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetComposite#createControls(org.eclipse.swt.widgets.Composite)
         */
-       public void setAnnotation(Annotation annotation) {
-               this.annotation = annotation;
-               setText(annotation.getText());
+       @Override
+       public void createControls(Composite parent, int style) {
+               text = toolkit.createMultilineTextWithLabel(parent, "Annotation", propertyChangeListener, 100, style);
        }
-
-       /**
-        * @return the annotation
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetComposite#setEntity(eu.etaxonomy.cdm.model.common.AnnotatableEntity)
         */
-       public Annotation getAnnotation() {
-               return annotation;
+       @Override
+       public void setElement(Annotation entity) {
+               this.element = entity;
+               text.setText(entity.getText());
        }
 
        /* (non-Javadoc)
-        * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
         */
-       public void modifyText(ModifyEvent e) {
-               annotation.setText(getText());
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               element.setText(text.getText());
+               
+               super.propertyChange(event);
        }
 }
index c4598af573bc3cd2326907858c85a50777bf8999..a54adf173d8aaacdc7b228d70798bb49af54050d 100644 (file)
@@ -7,12 +7,11 @@ import java.util.Set;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.widgets.Section;
 
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Annotation;
@@ -21,19 +20,19 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
+ * 
  * @author n.hoffmann
- *
+ * @created Nov 5, 2009
+ * @version 1.0
  */
-public class AnnotationSection extends AbstractEntitySetSection<AnnotatableEntity> {
+public class AnnotationSection extends AbstractEntitySetSection<AnnotatableEntity>{
 
        /**
         * @param parent
         * @param style
         */
-       public AnnotationSection(Composite parent, AnnotatableEntity annotatableEntity,  int style) {
-               super(parent, annotatableEntity, Section.TWISTIE | Section.COMPACT | style);
-               
-               setText("Annotations");
+       public AnnotationSection(Composite parent, AnnotatableEntity annotatableEntity, IPropertyChangeListener listener, int style) {
+               super(parent, annotatableEntity, "Annotations", listener, style);
        }
        
 
@@ -53,16 +52,12 @@ public class AnnotationSection extends AbstractEntitySetSection<AnnotatableEntit
                        toolkit.createLabel(container, "No annotations yet.");
                }else{
                        for(Annotation annotation : annotations){
-                               
-                               toolkit.createAnnotationComposite(container, annotation, SWT.NULL);
-                               
-                               Button button_remove = toolkit.createButton(container, "Remove", SWT.PUSH);
-                               button_remove.addSelectionListener(new RemoveListener(annotation));
+                               new AnnotationComposite(container, annotation, new RemoveListener(annotation), this, SWT.NULL);
                        }
                }
        }
        
-       private class RemoveListener extends SelectionAdapter{
+       protected class RemoveListener extends SelectionAdapter{
                private Annotation annotation;
                
                public RemoveListener(Annotation annotation){
@@ -98,7 +93,6 @@ public class AnnotationSection extends AbstractEntitySetSection<AnnotatableEntit
                                
                                Annotation annotation = Annotation.NewInstance(text, type, language);
                                getEntity().addAnnotation(annotation);
-                               internalUpdateSection(true);
                                if(! getSection().isExpanded())
                                        getSection().setExpanded(true);
                                internalUpdateSection(true);
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CdmComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CdmComposite.java
new file mode 100644 (file)
index 0000000..6b22bed
--- /dev/null
@@ -0,0 +1,92 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.joda.time.DateTime;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.cdm.model.common.VersionableEntity;
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class CdmComposite extends AbstractFormComposite {
+
+       private static final Logger logger = Logger.getLogger(CdmComposite.class);
+       private Label label_created;
+       private Label label_createdBy;
+       private Label label_updated;
+       private Label label_updatedBy;
+       private Label label_uuid;
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public CdmComposite(Composite parent, VersionableEntity entity, IPropertyChangeListener listener,
+                       int style) {
+               super(parent, listener, style);
+               this.setLayout(new GridLayout(2, false));
+               
+               toolkit.createLabel(this, "Created:");
+               label_created = toolkit.createLabel(this, null);
+               label_created.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               toolkit.createLabel(this, "Created by:");
+               label_createdBy = toolkit.createLabel(this, null);
+               label_createdBy.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               toolkit.createLabel(this, "Updated:");
+               label_updated = toolkit.createLabel(this, null);
+               label_updated.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               toolkit.createLabel(this, "Updated by:");
+               label_updatedBy = toolkit.createLabel(this, null);
+               label_updatedBy.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+//             toolkit.createLabel(this, "Uuid:");
+//             label_uuid = toolkit.createLabel(this, null);
+//             label_uuid.setLayoutData(FILL_GRID_HORIZONTALLY());
+       }
+       
+       public void setEntity(VersionableEntity entity){
+               if(entity.getCreated() != null)
+                       label_created.setText(dateFormat(entity.getCreated()));
+               if(entity.getCreatedBy() != null)
+                       label_createdBy.setText(userFormat(entity.getCreatedBy()));
+               if(entity.getUpdated() != null)
+                       label_updated.setText(dateFormat(entity.getUpdated()));
+               if(entity.getUpdatedBy() != null)
+                       label_updatedBy.setText(userFormat(entity.getUpdatedBy()));
+//             label_uuid.setText(entity.getUuid().toString());
+       }
+       
+       private String dateFormat(DateTime dateTime){
+               // TODO agree on pattern or get pattern via preferences or locale
+               String pattern = null;
+               return CdmUtils.Nz(dateTime.toString(pattern));
+       }
+       
+       private String userFormat(User user){
+               // TODO agree on what to display username or real name or even more from shibboleth
+               return CdmUtils.Nz(user.getUsername());
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CheckboxComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/CheckboxComposite.java
new file mode 100644 (file)
index 0000000..f6bea01
--- /dev/null
@@ -0,0 +1,74 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class CheckboxComposite extends AbstractFormComposite implements SelectionListener {
+
+       private static final Logger logger = Logger
+                       .getLogger(CheckboxComposite.class);
+       
+       private Button checkbox;
+       
+       /**
+        * 
+        * @param parent
+        * @param label
+        * @param initialState
+        * @param listener
+        * @param style
+        */
+       public CheckboxComposite(Composite parent, String label, boolean initialState,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
+       
+               checkbox = toolkit.createButton(this, label, SWT.CHECK | style);
+               checkbox.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));
+               
+               checkbox.setSelection(initialState);
+               
+               checkbox.addSelectionListener(this);
+       }
+
+       public void setSelection(boolean selected){
+               checkbox.removeSelectionListener(this);
+               checkbox.setSelection(selected);
+               checkbox.addSelectionListener(this);
+       }
+       
+       public boolean getSelection(){
+               return checkbox.getSelection();
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+        */
+       public void widgetSelected(SelectionEvent e) {
+               firePropertyChangeEvent(null);
+       }
+       
+       public void widgetDefaultSelected(SelectionEvent e) {}
+}
index 04936702c08447df47e16cfed7f68f91395f457e..3663bbf45a48a51ebcde51e4a1e84959656e77c6 100644 (file)
@@ -3,23 +3,63 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.cdm.model.common.Credit;
+import eu.etaxonomy.taxeditor.forms.MultilineTextWithLabel;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.AgentSelectionComposite;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
  */
-public class CreditComposite extends AbstractFormComposite {
+public class CreditComposite extends AbstractEntitySetElementComposite<Credit>{
 
+       private AgentSelectionComposite agentSelection;
+       private MultilineTextWithLabel text;
+       
        /**
         * @param parent
         * @param style
         */
-       public CreditComposite(Composite parent, int style) {
-               super(parent, style);
-               // TODO Auto-generated constructor stub
+       public CreditComposite(Composite parent, Credit credit, SelectionListener removeListener, IPropertyChangeListener propertyChangeListener, int style) {
+               super(parent, credit, removeListener, propertyChangeListener, style);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               element.setAgent(agentSelection.getSelection());
+               element.setText(text.getText());
+               
+               super.propertyChange(event);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               agentSelection = new AgentSelectionComposite(parent, "Agent", null, this, style);
+               text = toolkit.createMultilineTextWithLabel(parent, "Text", this, 100, style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.AnnotatableEntity)
+        */
+       @Override
+       public void setElement(Credit element) {
+               this.element = element;
+               
+               agentSelection.setSelection(element.getAgent());
+               text.setText(element.getText());
        }
 
 }
index 94a2184167ccc1049c5e5363123684eb71c9f83c..80a9e9882cb3d73524ab18f96cb05c4f0d95e64e 100644 (file)
@@ -3,8 +3,12 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import java.util.List;
+
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
@@ -13,8 +17,10 @@ import eu.etaxonomy.cdm.model.common.Credit;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
  */
 public class CreditSection extends AbstractEntitySetSection<IdentifiableEntity> {
 
@@ -23,19 +29,29 @@ public class CreditSection extends AbstractEntitySetSection<IdentifiableEntity>
         * @param entity
         * @param style
         */
-       protected CreditSection(Composite parent, IdentifiableEntity entity,
+       public CreditSection(Composite parent, IdentifiableEntity entity, IPropertyChangeListener listener,
                        int style) {
-               super(parent, entity, style);
-               setText("Credits");
+               super(parent, entity, "Credits", listener, style);
        }
 
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.forms.AbstractEntitySetSection#createDynamicContents()
         */
        @Override
        protected void createDynamicContents() {
-               // TODO Auto-generated method stub
+               List<Credit> credits = null;
+               if(getEntity() != null){
+                       credits = getEntity().getCredits();
+               }
                
+               if(credits == null || credits.size() == 0){
+                       toolkit.createLabel(container, "No credits yet.");
+               }else{
+                       for(Credit credit : credits){
+                               new CreditComposite(container, credit, new RemoveListener(credit), this, SWT.NULL);
+                       }
+               }
        }
        
        private class RemoveListener extends SelectionAdapter{
index 97be48fe2b080be0d86f7d09050800cd3a01b7e0..8036a29112e7de012b3024749994382acc691523 100644 (file)
@@ -1,61 +1,90 @@
+// $Id$
 /**
- * 
- */
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
 
+import org.apache.log4j.Logger;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
-import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
 import eu.etaxonomy.taxeditor.forms.TextWithLabelComposite;
 import eu.etaxonomy.taxeditor.forms.selectioncomposites.NameSelectionComposite;
 import eu.etaxonomy.taxeditor.forms.selectioncomposites.ReferenceSelectionComposite;
 
 /**
- * @author  nho
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ * @param <T>
  */
-public class DescriptionElementSourceComposite extends AbstractFormComposite implements IPropertyChangeListener{
+public class DescriptionElementSourceComposite extends AbstractEntitySetElementComposite<DescriptionElementSource> {
+       /**
+        * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
+        * @param style
+        */
+       public DescriptionElementSourceComposite(Composite parent,
+                       DescriptionElementSource element, SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
+       }
 
-       private DescriptionElementSource source;
+       private static final Logger logger = Logger
+                       .getLogger(DescriptionElementSourceComposite.class);
        
+
+       private NameSelectionComposite nameSelection;
+
+
        private ReferenceSelectionComposite citationSelection;
+
+
        private TextWithLabelComposite microCitation;
-       private NameSelectionComposite nameSelection;
+       
 
-       public DescriptionElementSourceComposite(Composite parent, DescriptionElementSource source, int style){
-               super(parent, style);
-               this.source = source;
-               
-               citationSelection = new ReferenceSelectionComposite(this, "Citation", source.getCitation(), SWT.NULL);
-               citationSelection.addPropertyChangeListener(this);
-               
-               microCitation = new TextWithLabelComposite(this, "Citation Detail", source.getCitationMicroReference(), SWT.NULL);
-               microCitation.addPropertyChangeListener(this);
-        
-        nameSelection = new NameSelectionComposite(this, "Name in Source", source.getNameUsedInSource(), SWT.NULL);
-        nameSelection.addPropertyChangeListener(this);
-       }
        
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.OriginalSourceComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               citationSelection = new ReferenceSelectionComposite(parent, "Citation", null, this, SWT.NULL);          
+               microCitation = new TextWithLabelComposite(parent, "Citation Detail", null, this, SWT.NULL);
+               nameSelection = new NameSelectionComposite(parent, "Name in Source", null, this, SWT.NULL);
+       }
        
-       /**
-        * @return the source
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.OriginalSourceComposite#setElement(eu.etaxonomy.cdm.model.common.OriginalSourceBase)
         */
-       public DescriptionElementSource getSource() {
-               return source;
+       @Override
+       public void setElement(DescriptionElementSource element) {
+               this.element = element;
+               citationSelection.setSelection(element.getCitation());
+               microCitation.setText(element.getCitationMicroReference());
+               nameSelection.setSelection(element.getNameUsedInSource());
        }
-
+       
        /* (non-Javadoc)
-        * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.OriginalSourceComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
         */
+       @Override
        public void propertyChange(PropertyChangeEvent event) {
-               source.setCitation(citationSelection.getSelection());
-               source.setCitationMicroReference(microCitation.getText());
-               source.setNameUsedInSource(nameSelection.getSelection());
-               firePropertyChangeEvent(event);
-       }       
-}
\ No newline at end of file
+               super.propertyChange(event);
+               element.setCitation(citationSelection.getSelection());
+               element.setCitationMicroReference(microCitation.getText());
+               element.setNameUsedInSource(nameSelection.getSelection());
+       }
+}
similarity index 65%
rename from taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/OriginalSourceSection.java
rename to taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/DescriptionElementSourceSection.java
index 597b2ff70aac1d1407fb8facc24d3292f044ddde..79e41f1da02758f441f04981dc6aec1f52a9be80 100644 (file)
@@ -8,32 +8,37 @@ import java.util.Set;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.widgets.Section;
 
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 
 /**
+ * 
  * @author n.hoffmann
- *
+ * @created Nov 17, 2009
+ * @version 1.0
  */
-public class OriginalSourceSection extends AbstractEntitySetSection<DescriptionElementBase> implements IPropertyChangeListener{
+public class DescriptionElementSourceSection extends AbstractEntitySetSection<DescriptionElementBase> implements IPropertyChangeListener{
 
 
-       public OriginalSourceSection(Composite parent, DescriptionElementBase entity, int style){
-               super(parent, entity, Section.TWISTIE | Section.COMPACT | style);
-               
-               setText("Citations");
+       /**
+        * 
+        * @param parent
+        * @param entity
+        * @param listener
+        * @param style
+        */
+       public DescriptionElementSourceSection(Composite parent, DescriptionElementBase entity, IPropertyChangeListener listener, int style){
+               super(parent, entity, "Citations", listener, style);
        }
 
        /*
-        * 
+        * (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetSection#createDynamicContents()
         */
        public void createDynamicContents() {
                
@@ -46,15 +51,14 @@ public class OriginalSourceSection extends AbstractEntitySetSection<DescriptionE
                        toolkit.createLabel(container, "No citations yet.");
                }else{
                        for(DescriptionElementSource source : sources){
-                               DescriptionElementSourceComposite descriptionElementSourceComposite = toolkit.createDescriptionElementSourceComposite(container, source, SWT.NULL);
-                               descriptionElementSourceComposite.addPropertyChangeListener(this);
-                               
-                               Button button_remove = toolkit.createButton(container, "Remove", SWT.PUSH);
-                               button_remove.addSelectionListener(new RemoveListener(source));
+                               new DescriptionElementSourceComposite(container, source, new RemoveListener(source), this, SWT.NULL);
                        }
                }
        }
        
+       /**
+        * 
+        */
        private class RemoveListener extends SelectionAdapter{
                private DescriptionElementSource source;
                
@@ -92,11 +96,4 @@ public class OriginalSourceSection extends AbstractEntitySetSection<DescriptionE
                addCitation.setToolTipText("Create a new citation");
                return addCitation;
        }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-        */
-       public void propertyChange(PropertyChangeEvent event) {
-               firePropertyChangeEvent(event);
-       }       
 }
index eb6833b2fbb78cbfec23dd1f1ee16be4c3cf2123..6ebc6a09124be61a4cddc7035e5b3adce9b756ef 100644 (file)
@@ -3,23 +3,69 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.cdm.model.common.Extension;
+import eu.etaxonomy.taxeditor.forms.MultilineTextWithLabel;
+import eu.etaxonomy.taxeditor.forms.termcombos.ExtensionTypeComboComposite;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
  */
-public class ExtensionComposite extends AbstractFormComposite {
+public class ExtensionComposite extends AbstractEntitySetElementComposite<Extension> {
 
        /**
         * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
         * @param style
         */
-       public ExtensionComposite(Composite parent, int style) {
-               super(parent, style);
-               // TODO Auto-generated constructor stub
+       public ExtensionComposite(Composite parent, Extension element,
+                       SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
+       }
+
+       private ExtensionTypeComboComposite extensionTypeCombo;
+       private MultilineTextWithLabel extensionValue;
+       
+
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               element.setType(extensionTypeCombo.getSelection());
+               element.setValue(extensionValue.getText());
+               
+               super.propertyChange(event);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               extensionTypeCombo = new ExtensionTypeComboComposite(parent, "Extension Type", null, this, style);
+               extensionValue = toolkit.createMultilineTextWithLabel(parent, "Extension Content", this, 100, style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
+        */
+       @Override
+       public void setElement(Extension element) {
+               this.element = element;
+               extensionTypeCombo.setSelection(element.getType());
+               extensionValue.setText(element.getValue());     
        }
 
 }
index 705fd12925d9491dc1aff01b4964ae2a38ae6026..cc40e223af05bb7401f907e5e89cb29f0d00c430 100644 (file)
@@ -3,15 +3,19 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import java.util.Set;
+
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
-import eu.etaxonomy.cdm.model.common.Marker;
 
 /**
  * @author nho
@@ -24,10 +28,9 @@ public class ExtensionSection extends AbstractEntitySetSection<IdentifiableEntit
         * @param entity
         * @param style
         */
-       protected ExtensionSection(Composite parent, IdentifiableEntity entity,
-                       int style) {
-               super(parent, entity, style);
-               setText("Extensions");
+       public ExtensionSection(Composite parent, IdentifiableEntity entity,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, entity, "Extensions", listener, style);
        }
 
        /* (non-Javadoc)
@@ -35,8 +38,18 @@ public class ExtensionSection extends AbstractEntitySetSection<IdentifiableEntit
         */
        @Override
        protected void createDynamicContents() {
-               // TODO Auto-generated method stub
+               Set<Extension> extensions = null;
+               if(getEntity() != null){
+                       extensions = getEntity().getExtensions();
+               }
                
+               if(extensions == null || extensions.size() == 0){
+                       toolkit.createLabel(container, "No extensions yet.");
+               }else{
+                       for(Extension extension : extensions){
+                               new ExtensionComposite(container, extension, new RemoveListener(extension), this, SWT.NULL);
+                       }
+               }
        }
        
        private class RemoveListener extends SelectionAdapter{
index 4810727b9f7edcb0703b10738f399b0dd478eddd..b89688f189a117ecfd0f2c629439f245fe5ea683 100644 (file)
@@ -3,23 +3,70 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.taxeditor.forms.TextWithLabelComposite;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.ReferenceSelectionComposite;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
  */
-public class IdentifiableSourceComposite extends AbstractFormComposite {
+public class IdentifiableSourceComposite extends AbstractEntitySetElementComposite<IdentifiableSource>{
 
        /**
         * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
         * @param style
         */
-       public IdentifiableSourceComposite(Composite parent, int style) {
-               super(parent, style);
-               // TODO Auto-generated constructor stub
+       public IdentifiableSourceComposite(Composite parent, IdentifiableSource element,
+                       SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
+       }
+
+
+       private ReferenceSelectionComposite citationSelection;
+       private TextWithLabelComposite microCitation;
+
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       public void propertyChange(PropertyChangeEvent event) {
+               element.setCitation(citationSelection.getSelection());
+               element.setCitationMicroReference(microCitation.getText());
+               super.propertyChange(event);
        }
 
-}
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               citationSelection = new ReferenceSelectionComposite(parent, "Citation", null, this, SWT.NULL);          
+               microCitation = new TextWithLabelComposite(parent, "Citation Detail", null, this, SWT.NULL);
+       }
+
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
+        */
+       @Override
+       public void setElement(IdentifiableSource element) {
+               this.element = element;
+               citationSelection.setSelection(element.getCitation());
+               microCitation.setText(element.getCitationMicroReference());
+       }       
+}
\ No newline at end of file
index 15dcf860a19bb2c3a4d83b2a66705a859f7585d9..1caf5798b00f79240663b6d301b9a6f0ae992ad9 100644 (file)
@@ -3,23 +3,73 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.taxeditor.forms.CheckboxComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.MarkerTypeComboComposite;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
  */
-public class MarkerComposite extends AbstractFormComposite {
+public class MarkerComposite extends AbstractEntitySetElementComposite<Marker>{
 
        /**
         * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
         * @param style
         */
-       public MarkerComposite(Composite parent, int style) {
-               super(parent, style);
-               // TODO Auto-generated constructor stub
+       public MarkerComposite(Composite parent, Marker element,
+                       SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
+       }
+       
+       private MarkerTypeComboComposite markerTypeCombo;
+       private CheckboxComposite markerStateCheckbox;
+
+
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               element.setMarkerType(markerTypeCombo.getSelection());
+               element.setFlag(markerStateCheckbox.getSelection());
+
+               super.propertyChange(event);
        }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               parent.setLayout(new GridLayout(2, false));
+               
+               markerStateCheckbox = toolkit.createCheckbox(parent, null, false, this);
+               
+               markerTypeCombo = new MarkerTypeComboComposite(parent, null, null, this, style);
+               markerTypeCombo.setLayoutData(FILL_GRID_HORIZONTALLY());
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
+        */
+       @Override
+       public void setElement(Marker element) {
+               this.element = element;
+               markerStateCheckbox.setSelection(element.getFlag());
+               markerTypeCombo.setSelection(element.getMarkerType());
+       }
 }
index d25bec147062610ddaa3ff14b648e03601581e70..847d5874e8f46a88f25dfd3d3433d2bb13396c7b 100644 (file)
@@ -3,10 +3,15 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import java.util.Set;
+
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
@@ -23,9 +28,8 @@ public class MarkerSection extends AbstractEntitySetSection<AnnotatableEntity> {
         * @param entity
         * @param style
         */
-       protected MarkerSection(Composite parent, AnnotatableEntity entity, int style) {
-               super(parent, entity, style);
-               setText("Marker");
+       public MarkerSection(Composite parent, AnnotatableEntity entity, IPropertyChangeListener listener, int style) {
+               super(parent, entity, "Marker", listener, style);
        }
 
        /* (non-Javadoc)
@@ -33,7 +37,18 @@ public class MarkerSection extends AbstractEntitySetSection<AnnotatableEntity> {
         */
        @Override
        protected void createDynamicContents() {
-               // TODO
+               Set<Marker> markers = null;
+               if(getEntity() != null){
+                       markers = getEntity().getMarkers();
+               }
+               
+               if(markers == null || markers.size() == 0){
+                       toolkit.createLabel(container, "No markers yet.");
+               }else{
+                       for(Marker marker : markers){
+                               new MarkerComposite(container, marker, new RemoveListener(marker), this, SWT.NULL);
+                       }
+               }
        }
        
        private class RemoveListener extends SelectionAdapter{
index 3b202f82131907ab6337924164a62474130368c5..8eec96497049045d3a667de7848ecfde1c22ed0e 100644 (file)
@@ -3,23 +3,60 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.cdm.model.media.Media;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
  */
-public class MediaComposite extends AbstractFormComposite {
+public class MediaComposite extends AbstractEntitySetElementComposite<Media> {
 
        /**
         * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
         * @param style
         */
-       public MediaComposite(Composite parent, int style) {
-               super(parent, style);
+       public MediaComposite(Composite parent, Media element,
+                       SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
                // TODO Auto-generated constructor stub
        }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
+        */
+       @Override
+       public void setElement(Media element) {
+               // TODO Auto-generated method stub
+               
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               // TODO Auto-generated method stub
+               super.propertyChange(event);
+       }
+
 }
index 731b61ad927dd820898d6feb95979539e72dc43e..8da7d162f8ebfd8fbaf9cce10aeba6b0f260e6f5 100644 (file)
@@ -5,6 +5,7 @@ package eu.etaxonomy.taxeditor.forms.entitysections;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
@@ -13,6 +14,7 @@ import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
 import eu.etaxonomy.cdm.model.media.Media;
 
 /**
+ * 
  * @author nho
  *
  */
@@ -24,9 +26,8 @@ public class MediaSection extends AbstractEntitySetSection<IdentifiableMediaEnti
         * @param style
         */
        protected MediaSection(Composite parent, IdentifiableMediaEntity entity,
-                       int style) {
-               super(parent, entity, style);
-               setText("Media");
+                       IPropertyChangeListener listener, int style) {
+               super(parent, entity, "Media", listener, style);
        }
 
        /* (non-Javadoc)
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusComposite.java
new file mode 100644 (file)
index 0000000..3a25129
--- /dev/null
@@ -0,0 +1,85 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
+import eu.etaxonomy.taxeditor.forms.TextWithLabelComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.NomenclaturalStatusTypeComboComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class NomenclaturalStatusComposite extends AbstractEntitySetElementComposite<NomenclaturalStatus> {
+       /**
+        * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
+        * @param style
+        */
+       public NomenclaturalStatusComposite(Composite parent,
+                       NomenclaturalStatus element, SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
+       }
+
+       private static final Logger logger = Logger
+                       .getLogger(NomenclaturalStatusComposite.class);
+       
+
+       private NomenclaturalStatusTypeComboComposite nomenclaturalStatusTypeCombo;
+
+       private TextWithLabelComposite ruleConsideredText;
+       
+       private static final int VISIBLE_ITEMS = 10;
+
+
+
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               element.setType(nomenclaturalStatusTypeCombo.getSelection());
+               element.setRuleConsidered(ruleConsideredText.getText());                
+               
+               super.propertyChange(event);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               nomenclaturalStatusTypeCombo = new NomenclaturalStatusTypeComboComposite(parent, "Nomenclatural Status", null, this, VISIBLE_ITEMS, style);
+               ruleConsideredText = toolkit.createTextWithLabelComposite(parent, "Rule Considered", "", this, style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
+        */
+       @Override
+       public void setElement(NomenclaturalStatus element) {
+               this.element = element;
+               
+               nomenclaturalStatusTypeCombo.setSelection(element.getType());
+               ruleConsideredText.setText(element.getRuleConsidered());
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusSection.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NomenclaturalStatusSection.java
new file mode 100644 (file)
index 0000000..809278d
--- /dev/null
@@ -0,0 +1,107 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class NomenclaturalStatusSection extends AbstractEntitySetSection<TaxonNameBase> {
+       /**
+        * @param parent
+        * @param entity
+        * @param title
+        * @param listener
+        * @param style
+        */
+       public NomenclaturalStatusSection(Composite parent,
+                       TaxonNameBase entity, IPropertyChangeListener listener, int style) {
+               super(parent, entity, "Nomenclatural Status", listener, style);
+       }
+
+       private static final Logger logger = Logger
+                       .getLogger(NomenclaturalStatusSection.class);
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetSection#createDynamicContents()
+        */
+       @Override
+       protected void createDynamicContents() {
+               Set<NomenclaturalStatus> nomenclaturalStatusSet = null;
+               if(getEntity() != null){
+                       nomenclaturalStatusSet = getEntity().getStatus();
+               }
+               
+               if(nomenclaturalStatusSet == null || nomenclaturalStatusSet.size() == 0){
+                       toolkit.createLabel(container, "No nomenclatural status yet.");
+               }else{
+                       for(NomenclaturalStatus nomenclaturalStatus : nomenclaturalStatusSet){
+                               new NomenclaturalStatusComposite(container, nomenclaturalStatus, new RemoveListener(nomenclaturalStatus), this, SWT.NULL);
+                       }
+               }
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetSection#getAddAction()
+        */
+       @Override
+       protected IAction getAddAction() {
+               Action addNomenclaturalStatus = new Action("add", Action.AS_PUSH_BUTTON){
+                       /* (non-Javadoc)
+                        * @see org.eclipse.jface.action.Action#run()
+                        */
+                       @Override
+                       public void run() {
+                               NomenclaturalStatus nomenclaturalStatus = NomenclaturalStatus.NewInstance(null);
+                               getEntity().addStatus(nomenclaturalStatus);
+                               if(! getSection().isExpanded())
+                                       getSection().setExpanded(true);
+                               internalUpdateSection(true);
+                       }
+               };
+               addNomenclaturalStatus.setToolTipText("Create a new nomenclatural status");
+               return addNomenclaturalStatus;
+       }
+       
+       private class RemoveListener extends SelectionAdapter{
+               private NomenclaturalStatus nomenclaturalStatus;
+               
+               public RemoveListener(NomenclaturalStatus nomenclaturalStatus){
+                       this.nomenclaturalStatus = nomenclaturalStatus;
+               }
+               
+               /* (non-Javadoc)
+                * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+                */
+               @Override
+               public void widgetSelected(SelectionEvent e) {
+                       getEntity().removeStatus(nomenclaturalStatus);
+                       internalUpdateSection(true);
+               }
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NonViralNameDetailsComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/NonViralNameDetailsComposite.java
new file mode 100644 (file)
index 0000000..b32074f
--- /dev/null
@@ -0,0 +1,115 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.taxeditor.forms.TextWithLabelComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.NomenclaturalStatusTypeComboComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.RankComboComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class NonViralNameDetailsComposite extends AbstractFormComposite {
+
+       private static final Logger logger = Logger
+                       .getLogger(NonViralNameDetailsComposite.class);
+       private Label label_parsingStatus;
+       private TextWithLabelComposite text_cache;
+       private RankComboComposite combo_rank;
+       private TextWithLabelComposite text_uninomial;
+       private TextWithLabelComposite text_infragenericEpithet;
+       private TextWithLabelComposite text_specificEpithet;
+       private TextWithLabelComposite text_infraspecificEpithet;
+       private TextWithLabelComposite text_appendedPhrase;
+       private NomenclaturalStatusTypeComboComposite combo_nomenclaturalStatus;
+       private NonViralName nonViralName;
+       private Composite composite_nameParts;
+       private Rank rank;
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public NonViralNameDetailsComposite(Composite parent,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
+       }
+       
+       public void setInput(NonViralName name){
+               nonViralName = name;
+               rank = name.getRank();
+               createControls(this, this, SWT.NULL);
+       }
+       
+       private void createControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(composite_nameParts != null)
+                       composite_nameParts.dispose();
+               composite_nameParts = toolkit.createComposite(this);
+               composite_nameParts.setLayout(new GridLayout(2, false));
+               composite_nameParts.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+               
+               createGenusOrUninomialControls(composite_nameParts, listener, style);
+               createInfragenerericEpithetControls(composite_nameParts, listener, style);
+               createSpecificEpithetControls(composite_nameParts, listener, style);
+               createInfraSpecificEpithetControls(composite_nameParts, listener, style);
+               
+               parent.layout();
+       }
+       
+       private void createGenusOrUninomialControls(Composite parent, IPropertyChangeListener listener, int style){             
+               toolkit.createLabel(composite_nameParts, "Uninomial");
+               text_uninomial = toolkit.createTextWithLabelComposite(parent, null, nonViralName.getGenusOrUninomial(), listener, style);
+       }
+       
+       private void createInfragenerericEpithetControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(rank.isInfraGeneric()){
+                       toolkit.createLabel(composite_nameParts, "Infrageneric Epithet");
+                       text_infragenericEpithet = toolkit.createTextWithLabelComposite(parent, null, nonViralName.getInfraGenericEpithet(), listener, style);
+               }
+       }
+       
+       private void createSpecificEpithetControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(rank.isSpecies() || rank.isInfraSpecific()){
+                       toolkit.createLabel(composite_nameParts, "Specific Epithet");
+                       text_specificEpithet = toolkit.createTextWithLabelComposite(composite_nameParts, null, nonViralName.getSpecificEpithet(), this, SWT.NULL);
+               }
+       }
+       
+       private void createInfraSpecificEpithetControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(rank.isInfraSpecific()){
+                       toolkit.createLabel(composite_nameParts, "Infraspecific Epithet");
+                       text_infraspecificEpithet = toolkit.createTextWithLabelComposite(composite_nameParts, null, nonViralName.getInfraSpecificEpithet(), this, SWT.NULL);
+               }
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.propertysheet.tabbed.section.AbstractCdmPropertySection#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               super.propertyChange(event);
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologComposite.java
new file mode 100644 (file)
index 0000000..19c5434
--- /dev/null
@@ -0,0 +1,98 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
+import eu.etaxonomy.taxeditor.forms.TextWithLabelComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class ProtologComposite extends AbstractEntitySetElementComposite<DescriptionElementBase> {
+
+       /**
+        * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
+        * @param style
+        */
+       public ProtologComposite(Composite parent, DescriptionElementBase element,
+                       SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
+       }
+
+       private static final Logger logger = Logger
+                       .getLogger(ProtologComposite.class);
+
+       private TextWithLabelComposite protologUriText;
+       private MediaRepresentationPart mediaRepresentationPart;
+       private Media media;
+       private MediaRepresentation mediaRepresentation;
+       
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               mediaRepresentationPart.setUri(protologUriText.getText());              
+               
+               super.propertyChange(event);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               protologUriText = toolkit.createTextWithLabelComposite(parent, "Protolog URI", "", this, style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
+        */
+       @Override
+       public void setElement(DescriptionElementBase element) {
+               this.element = element;
+               
+               if(element.getMedia().size() == 0){
+                       element.addMedia(Media.NewInstance());
+               }
+               media = element.getMedia().iterator().next();
+               
+               
+               if(media.getRepresentations().size() == 0){
+                       media.addRepresentation(MediaRepresentation.NewInstance());
+               }               
+               mediaRepresentation = media.getRepresentations().iterator().next();
+               
+               if(mediaRepresentation.getParts().size() == 0){
+                       mediaRepresentation.addRepresentationPart(MediaRepresentationPart.NewInstance(null, null));
+               }
+               
+               mediaRepresentationPart = mediaRepresentation.getParts().iterator().next();
+                               
+               protologUriText.setText(mediaRepresentationPart.getUri());
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologSection.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ProtologSection.java
new file mode 100644 (file)
index 0000000..7ae7983
--- /dev/null
@@ -0,0 +1,114 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.description.TextData;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class ProtologSection extends AbstractEntitySetSection<TaxonNameDescription> {
+       
+       private static final Logger logger = Logger
+       .getLogger(ProtologSection.class);
+
+       /**
+        * @param parent
+        * @param entity
+        * @param title
+        * @param listener
+        * @param style
+        */
+       public ProtologSection(Composite parent, TaxonNameDescription entity,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, entity, "Protologs", listener, style);
+       }
+
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetSection#createDynamicContents()
+        */
+       @Override
+       protected void createDynamicContents() {
+               Set<DescriptionElementBase> descriptions = null;
+               if(getEntity() != null){
+                       descriptions = getEntity().getElements();
+               }
+               
+               if(descriptions == null || descriptions.size() == 0){
+                       toolkit.createLabel(container, "No protologs yet.");
+               }else{
+                       for(DescriptionElementBase description : descriptions){
+                               if(description.getFeature().equals(Feature.PROTOLOG())){
+                                       new ProtologComposite(container, description, new RemoveListener(description), this, SWT.NULL);
+                               }
+                       }
+               }
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetSection#getAddAction()
+        */
+       @Override
+       protected IAction getAddAction() {
+               Action addProtolog = new Action("add", Action.AS_PUSH_BUTTON){
+                       /* (non-Javadoc)
+                        * @see org.eclipse.jface.action.Action#run()
+                        */
+                       @Override
+                       public void run() {
+                               getEntity().addElement(TextData.NewInstance(Feature.PROTOLOG()));
+                               
+                               if(! getSection().isExpanded())
+                                       getSection().setExpanded(true);
+                               internalUpdateSection(true);
+                       }
+               };
+               addProtolog.setToolTipText("Create a new protolog");
+               return addProtolog;
+       }
+       
+       
+       private class RemoveListener extends SelectionAdapter{
+               private DescriptionElementBase description;
+               
+               public RemoveListener(DescriptionElementBase description){
+                       this.description = description;
+               }
+               
+               /* (non-Javadoc)
+                * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+                */
+               @Override
+               public void widgetSelected(SelectionEvent e) {
+                       getEntity().removeElement(description);
+                       internalUpdateSection(true);
+               }
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ReferenceBaseDetailComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ReferenceBaseDetailComposite.java
new file mode 100644 (file)
index 0000000..b087aad
--- /dev/null
@@ -0,0 +1,268 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;
+import eu.etaxonomy.cdm.model.reference.ReferenceType;
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.taxeditor.forms.MultilineTextWithLabel;
+import eu.etaxonomy.taxeditor.forms.TextWithLabelComposite;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.AgentSelectionComposite;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.InstitutionSelectionComposite;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.ReferenceSelectionComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.ReferenceTypeComboComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
+ */
+public class ReferenceBaseDetailComposite extends AbstractFormComposite {
+       private static final Logger logger = Logger
+                       .getLogger(ReferenceBaseDetailComposite.class);
+       private ReferenceBase referenceBase;
+       private Composite composite_referenceParts;
+       private TextWithLabelComposite text_edition;
+       private TextWithLabelComposite text_editor;
+       private TextWithLabelComposite text_isbn;
+       private TextWithLabelComposite text_issn;
+       private TextWithLabelComposite text_organisation;
+       private TextWithLabelComposite text_pages;
+       private TextWithLabelComposite text_placePublished;
+       private TextWithLabelComposite text_publisher;
+       private MultilineTextWithLabel text_referenceAbstract;
+       private InstitutionSelectionComposite selection_school;
+       private TextWithLabelComposite text_series;
+       private TextWithLabelComposite text_seriesPart;
+       private TextWithLabelComposite text_title;
+       private TextWithLabelComposite text_volume;
+       private TextWithLabelComposite text_uri;
+       private AgentSelectionComposite selection_agent;
+       private TimePeriodComposite composite_timePeriod;
+       private ReferenceSelectionComposite selection_inReference;
+       private InstitutionSelectionComposite selection_institution;
+       private ReferenceTypeComboComposite combo_referenceType;
+       private ReferenceType referenceType;
+       
+       public void setInput(ReferenceBase referenceBase){
+               this.referenceBase = referenceBase;
+               referenceType = referenceBase.getType();
+                       
+               createControls(this, this, SWT.NULL);
+       }
+
+
+       public ReferenceBaseDetailComposite(Composite parent,
+                       IPropertyChangeListener listener, int containerStyle){
+               super(parent, listener, containerStyle);
+       }
+
+       public void setEnabled(boolean enabled){
+               if(composite_referenceParts != null){
+                       for(Control control : composite_referenceParts.getChildren()){
+                               if(control instanceof Composite){
+                                       ((Composite) control).setEnabled(enabled);
+                               }
+                       }
+               }
+       }
+       
+       private void createControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(composite_referenceParts != null)
+                       composite_referenceParts.dispose();
+               
+               composite_referenceParts = toolkit.createComposite(parent);
+               composite_referenceParts.setLayout(new GridLayout(2, false));
+               composite_referenceParts.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+               
+               // title
+               toolkit.createLabel(composite_referenceParts, "Title");
+               text_title = toolkit.createTextComposite(composite_referenceParts, referenceBase.getTitle(), listener, style);
+               text_title.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               // author team
+               toolkit.createLabel(composite_referenceParts, "Author Team");
+               selection_agent = new AgentSelectionComposite(composite_referenceParts, null, referenceBase.getAuthorTeam(), listener, style);
+               
+               // date published
+               toolkit.createLabel(composite_referenceParts, "Date Published");
+               composite_timePeriod = new TimePeriodComposite(composite_referenceParts, referenceBase.getDatePublished(), listener, style);
+               
+               /* ReferenceBase END */
+               
+               /* Generic */
+               if(referenceType != null && referenceType.equals(ReferenceType.Generic)){
+                       createGenericControls(composite_referenceParts, listener, style);
+               }else if(referenceType != null){
+               
+                       createPublicationControls(composite_referenceParts, listener, style);
+
+                       createVolumeControls(composite_referenceParts, listener, style);
+
+                       createSectionControls(composite_referenceParts, listener, style);
+
+                       createPrintedUnitControls(composite_referenceParts, listener, style);                           
+                       
+               }
+               
+               // uri
+               toolkit.createLabel(composite_referenceParts, "URI");
+               text_uri = toolkit.createTextComposite(composite_referenceParts, referenceBase.getUri(), listener, style);
+               
+               
+               // reference abstract
+               text_referenceAbstract = toolkit.createMultilineTextWithLabel(composite_referenceParts, "Reference Abstract", listener, 100, style);
+               text_referenceAbstract.setText(referenceBase.getReferenceAbstract());
+               text_referenceAbstract.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+               
+               parent.layout();
+       }
+       
+       /**
+        * Creates additional controls to edit a generic reference 
+        * 
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       private void createGenericControls(Composite parent, IPropertyChangeListener listener, int style){
+               //editor
+               toolkit.createLabel(parent, "Editor");
+               text_editor = toolkit.createTextComposite(parent, referenceBase.getEditor(), listener, style);
+               
+               // series
+               toolkit.createLabel(parent, "Series");
+               text_series = toolkit.createTextComposite(parent, referenceBase.getSeries(), listener, style);
+               
+               // volume 
+               toolkit.createLabel(parent, "Volume");
+               text_volume = toolkit.createTextComposite(parent, referenceBase.getVolume(), listener, style);
+               
+               // pages
+               toolkit.createLabel(parent, "Pages");
+               text_pages = toolkit.createTextComposite(parent, referenceBase.getPages(), listener, style);
+       }
+       
+       /**
+        * Creates addition controls to edit a publication
+        * 
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       private void createPublicationControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(! referenceType.isPublication()){
+                       return;
+               }
+               
+               // placePublished
+               toolkit.createLabel(parent, "Place Published");
+               text_placePublished = toolkit.createTextComposite(parent, referenceBase.getPlacePublished(), listener, style);
+               
+               // publisher
+               toolkit.createLabel(parent, "Publisher");
+               text_publisher = toolkit.createTextComposite(parent, referenceBase.getPublisher(), listener, style);
+               
+               if(referenceType.equals(ReferenceType.Journal)){
+                       //issn
+                       toolkit.createLabel(parent, "ISSN");
+                       text_issn = toolkit.createTextComposite(parent, referenceBase.getIssn(), listener, style);
+               }
+               
+               if(referenceType.equals(ReferenceType.Report)){
+                       // institution
+                       toolkit.createLabel(parent, "Institution");
+                       selection_institution = new InstitutionSelectionComposite(parent, null, referenceBase.getInstitution(), listener, style);
+               }
+               
+               if(referenceType.equals(ReferenceType.Thesis)){
+                       // school
+                       toolkit.createLabel(parent, "School");
+                       selection_school = new InstitutionSelectionComposite(parent, null, referenceBase.getSchool(), listener, style);
+               }
+               
+               if(referenceType.equals(ReferenceType.Proceedings)){
+                       //organization
+                       toolkit.createLabel(parent, "Organisation");
+                       text_organisation = toolkit.createTextComposite(parent, referenceBase.getOrganization(), listener, style);
+               }
+       }
+       
+       private void createSectionControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(! referenceType.isSection()){
+                       return;
+               }
+               
+               // pages
+               toolkit.createLabel(parent, "Pages");
+               text_pages = toolkit.createTextComposite(parent, referenceBase.getPages(), listener, style);
+               
+               // in reference
+               toolkit.createLabel(parent, "In Reference"); // TODO Label May differ according to ReferenceType
+               selection_inReference = new ReferenceSelectionComposite(parent, null, referenceBase.getInReference(), listener, style);
+       }
+       
+       private void createVolumeControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(!referenceType.isVolumeReference()){
+                       return;
+               }
+               
+               // volume 
+               toolkit.createLabel(parent, "Volume");
+               text_volume = toolkit.createTextComposite(parent, referenceBase.getVolume(), listener, style);          
+       }
+       
+       private void createPrintedUnitControls(Composite parent, IPropertyChangeListener listener, int style){
+               if(! referenceType.isPrintedUnit()){
+                       return;
+               }
+               
+               //editor
+               toolkit.createLabel(parent, "Editor");
+               text_editor = toolkit.createTextComposite(parent, referenceBase.getEditor(), listener, style);
+               
+               // series part
+               toolkit.createLabel(parent, "Series Part");
+               text_seriesPart = toolkit.createTextComposite(parent, referenceBase.getSeriesPart(), listener, style);
+               
+               if(referenceType.equals(ReferenceType.Book)){
+                       // edition
+                       toolkit.createLabel(parent, "Edition");
+                       text_edition = toolkit.createTextComposite(parent, referenceBase.getEdition(), listener, style);
+                       
+                       //isbn
+                       toolkit.createLabel(parent, "ISBN");
+                       text_isbn = toolkit.createTextComposite(parent, referenceBase.getIsbn(), listener, style);
+               }
+       }
+
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               
+               
+               
+               super.propertyChange(event);
+       }
+
+}
index 5265786bc51d7592c44326993aa150f710d7ee19..1608ab8f7ab6547e19cb76d3827ef0882b95e6e6 100644 (file)
@@ -3,23 +3,76 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Composite;
 
+import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.taxeditor.forms.MultilineTextWithLabel;
+import eu.etaxonomy.taxeditor.forms.selectioncomposites.AgentSelectionComposite;
+import eu.etaxonomy.taxeditor.forms.termcombos.RightsTypeComboComposite;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
  */
-public class RightsComposite extends AbstractFormComposite {
+public class RightsComposite extends AbstractEntitySetElementComposite<Rights> {
 
        /**
         * @param parent
+        * @param element
+        * @param removeListener
+        * @param propertyChangelistener
         * @param style
         */
-       public RightsComposite(Composite parent, int style) {
-               super(parent, style);
-               // TODO Auto-generated constructor stub
+       public RightsComposite(Composite parent, Rights element,
+                       SelectionListener removeListener,
+                       IPropertyChangeListener propertyChangelistener, int style) {
+               super(parent, element, removeListener, propertyChangelistener, style);
+       }
+
+       private RightsTypeComboComposite rightsTypeCombo;
+       private AgentSelectionComposite agentSelection;
+       private MultilineTextWithLabel text;
+       
+
+
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractFormComposite#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+        */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               element.setType(rightsTypeCombo.getSelection());
+               element.setAgent(agentSelection.getSelection());
+               element.setText(text.getText());
+               
+               super.propertyChange(event);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
+        */
+       @Override
+       public void createControls(Composite parent, int style) {
+               rightsTypeCombo = new RightsTypeComboComposite(parent, "Rights Type", null, this, style);
+               agentSelection = new AgentSelectionComposite(parent, "Agent", null, this, style);
+               text = toolkit.createMultilineTextWithLabel(parent, "Text", this, 100, style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
+        */
+       @Override
+       public void setElement(Rights element) {
+               this.element = element;
+               rightsTypeCombo.setSelection(element.getType());
+               agentSelection.setSelection(element.getAgent());
+               text.setText(element.getText());
        }
 
 }
index 621d28b8c43b469ea47aa789153d63b54b8448f9..af6546122d663c370ff8f1af745853d99fe62380 100644 (file)
@@ -3,10 +3,15 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import java.util.Set;
+
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
@@ -23,10 +28,9 @@ public class RightsSection extends AbstractEntitySetSection<IdentifiableEntity>
         * @param entity
         * @param style
         */
-       protected RightsSection(Composite parent, IdentifiableEntity entity,
-                       int style) {
-               super(parent, entity, style);
-               setText("Rights");
+       public RightsSection(Composite parent, IdentifiableEntity entity,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, entity, "Rights", listener, style);
        }
 
        /* (non-Javadoc)
@@ -34,8 +38,18 @@ public class RightsSection extends AbstractEntitySetSection<IdentifiableEntity>
         */
        @Override
        protected void createDynamicContents() {
-               // TODO Auto-generated method stub
+               Set<Rights> rights = null;
+               if(getEntity() != null){
+                       rights = getEntity().getRights();
+               }
                
+               if(rights == null || rights.size() == 0){
+                       toolkit.createLabel(container, "No rights yet.");
+               }else{
+                       for(Rights right : rights){
+                               new RightsComposite(container, right, new RemoveListener(right), this, SWT.NULL);
+                       }
+               }
        }
        
        private class RemoveListener extends SelectionAdapter{
index c3c1ba549115797d8f39a00b00e1e844782cdd99..55540cb44f2c03cc843f77cea7a51e1bd88bb768 100644 (file)
@@ -3,18 +3,25 @@
  */
 package eu.etaxonomy.taxeditor.forms.entitysections;
 
+import java.util.Set;
+
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
  */
 public class SourceSection extends AbstractEntitySetSection<IdentifiableEntity> {
 
@@ -23,10 +30,9 @@ public class SourceSection extends AbstractEntitySetSection<IdentifiableEntity>
         * @param entity
         * @param style
         */
-       protected SourceSection(Composite parent, IdentifiableEntity entity,
-                       int style) {
-               super(parent, entity, style);
-               setText("Sources");
+       public SourceSection(Composite parent, IdentifiableEntity entity,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, entity, "Sources", listener, style);
        }
 
        /* (non-Javadoc)
@@ -34,14 +40,24 @@ public class SourceSection extends AbstractEntitySetSection<IdentifiableEntity>
         */
        @Override
        protected void createDynamicContents() {
-               // TODO Auto-generated method stub
+               Set<IdentifiableSource> sources = null;
+               if(getEntity() != null){
+                       sources = getEntity().getSources();
+               }
                
+               if(sources == null || sources.size() == 0){
+                       toolkit.createLabel(container, "No citations yet.");
+               }else{
+                       for(IdentifiableSource source : sources){
+                               new IdentifiableSourceComposite(container, source, new RemoveListener(source), this, SWT.NULL);
+                       }
+               }
        }
        
        private class RemoveListener extends SelectionAdapter{
-               private IdentifiableSource source;
+               private OriginalSourceBase source;
                
-               public RemoveListener(IdentifiableSource source){
+               public RemoveListener(OriginalSourceBase source){
                        this.source = source;
                }
                
@@ -50,7 +66,7 @@ public class SourceSection extends AbstractEntitySetSection<IdentifiableEntity>
                 */
                @Override
                public void widgetSelected(SelectionEvent e) {
-                       getEntity().removeSource(source);
+                       getEntity().removeSource((IdentifiableSource) source);
                        internalUpdateSection(true);
                }
        }
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/TimePeriodComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/TimePeriodComposite.java
new file mode 100644 (file)
index 0000000..aba6917
--- /dev/null
@@ -0,0 +1,41 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
+ */
+public class TimePeriodComposite extends AbstractFormComposite {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(TimePeriodComposite.class);
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public TimePeriodComposite(Composite parent, TimePeriod timePeriod,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
+               // TODO Auto-generated constructor stub
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ToggleableTextField.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/entitysections/ToggleableTextField.java
new file mode 100644 (file)
index 0000000..9df6978
--- /dev/null
@@ -0,0 +1,96 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.entitysections;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.taxeditor.forms.TextWithLabelComposite;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 18, 2009
+ * @version 1.0
+ */
+public class ToggleableTextField extends AbstractFormComposite implements SelectionListener {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(ToggleableTextField.class);
+       private TextWithLabelComposite text_cache;
+       private Composite container;
+       private Button button_toggle;
+       
+       private boolean state;
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public ToggleableTextField(Composite parent,
+                       IPropertyChangeListener listener, String label, String initialText, boolean initialState, int style) {
+               super(parent, listener, style);
+               
+                               
+               container = toolkit.createComposite(this);
+               container.setLayout(new GridLayout(2, false));
+               container.setLayoutData(FILL_GRID_HORIZONTALLY());
+               
+               text_cache = toolkit.createTextWithLabelComposite(container, label, initialText, this, SWT.NULL);
+               text_cache.setLayoutData(FILL_GRID_HORIZONTALLY());
+               button_toggle = toolkit.createButton(container, "Toggle", SWT.TOGGLE);
+               button_toggle.setLayoutData(new GridData(SWT.RIGHT, SWT.END, false, false));
+               button_toggle.addSelectionListener(this);
+               
+               setState(initialState);
+       }
+
+       public void setText(String text){
+               if(text != null){
+                       text_cache.setText(text);
+               }
+       }
+       
+       public String getText(){
+               return text_cache.getText();
+       }
+       
+       /**
+        * @param initialState
+        */
+       public void setState(boolean state) {
+               this.state = state;
+               text_cache.setEnabled(state);
+               button_toggle.setSelection(state);
+       }
+
+       public boolean getState(){
+               return state;
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+        */
+       public void widgetSelected(SelectionEvent e) {
+               setState(button_toggle.getSelection());
+       }
+       
+       public void widgetDefaultSelected(SelectionEvent e) {}
+}
index 7374bd7dbb9294a71b351aeb4d34c2876bfe3486..41a682029ff26ad77cf31df7bf5aa4634f15e4bf 100644 (file)
@@ -3,6 +3,7 @@
  */
 package eu.etaxonomy.taxeditor.forms.selectioncomposites;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
@@ -17,8 +18,11 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
+ * @param <T>
  */
 public abstract class AbstractSelectionComposite<T extends IdentifiableEntity> extends AbstractFormComposite implements SelectionListener{
 
@@ -32,8 +36,8 @@ public abstract class AbstractSelectionComposite<T extends IdentifiableEntity> e
         * @param parent
         * @param style
         */
-       public AbstractSelectionComposite(Composite parent, String labelString, T selection, int style) {
-               super(parent, style);
+       public AbstractSelectionComposite(Composite parent, String labelString, T selection, IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
                
                this.selection = selection;
                
@@ -41,10 +45,12 @@ public abstract class AbstractSelectionComposite<T extends IdentifiableEntity> e
                GridLayout layout = (GridLayout) this.getLayout();
                layout.numColumns = 2;
                                
-               label = toolkit.createLabel(this, labelString, SWT.WRAP);
-               GridData labelData = new GridData();
-               labelData.horizontalSpan = 2;
-               label.setLayoutData(labelData);
+               if(labelString != null){
+                       label = toolkit.createLabel(this, labelString, SWT.WRAP);
+                       GridData labelData = new GridData();
+                       labelData.horizontalSpan = 2;
+                       label.setLayoutData(labelData);
+               }
                
                text = toolkit.createText(this, "", SWT.BORDER | SWT.WRAP);
                text.setEditable(false);
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/AgentSelectionComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/AgentSelectionComposite.java
new file mode 100644 (file)
index 0000000..ecf6397
--- /dev/null
@@ -0,0 +1,53 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.selectioncomposites;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.taxeditor.dialogs.filteredSelection.FilteredAgentSelectionDialog;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ */
+public class AgentSelectionComposite extends AbstractSelectionComposite<AgentBase> {
+       
+
+       private static final Logger logger = Logger
+                       .getLogger(AgentSelectionComposite.class);
+       /**
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param listener
+        * @param style
+        */
+       public AgentSelectionComposite(Composite parent, String labelString,
+                       AgentBase selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, style);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.selectioncomposites.AbstractSelectionComposite#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+        */
+       @Override
+       public void widgetSelected(SelectionEvent e) {
+               super.widgetSelected(e);
+               selection = FilteredAgentSelectionDialog.selectAgent(getShell(), selection);
+               updateText();
+       }
+
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/InstitutionSelectionComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/selectioncomposites/InstitutionSelectionComposite.java
new file mode 100644 (file)
index 0000000..5c32891
--- /dev/null
@@ -0,0 +1,43 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.selectioncomposites;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.agent.Institution;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 17, 2009
+ * @version 1.0
+ */
+public class InstitutionSelectionComposite extends
+               AbstractSelectionComposite<Institution> {
+
+
+       private static final Logger logger = Logger
+                       .getLogger(InstitutionSelectionComposite.class);
+       
+       /**
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param listener
+        * @param style
+        */
+       public InstitutionSelectionComposite(Composite parent, String labelString,
+                       Institution selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, style);
+               // TODO Auto-generated constructor stub
+       }
+}
index c0671998ca86e5858f32dc47a7b8b0b408caea29..bf8564296d60f65ac6534ec476e6c825cff4ee54 100644 (file)
@@ -3,6 +3,7 @@
  */
 package eu.etaxonomy.taxeditor.forms.selectioncomposites;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
 
@@ -22,8 +23,8 @@ public class NameSelectionComposite extends AbstractSelectionComposite<TaxonName
         * @param style
         */
        public NameSelectionComposite(Composite parent, String labelString,
-                       TaxonNameBase selection, int style) {
-               super(parent, labelString, selection, style);
+                       TaxonNameBase selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, style);
        }
 
        /* (non-Javadoc)
index d88ffcc73d02491cc58dfb90243dd26c9203f908..62266e75210620eed974a0a88c452a9c80d6e752 100644 (file)
@@ -3,6 +3,7 @@
  */
 package eu.etaxonomy.taxeditor.forms.selectioncomposites;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
 
@@ -22,8 +23,8 @@ public class ReferenceSelectionComposite extends AbstractSelectionComposite<Refe
         * @param style
         */
        public ReferenceSelectionComposite(Composite parent, String labelString,
-                       ReferenceBase selection, int style) {
-               super(parent, labelString, selection, style);
+                       ReferenceBase selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, style);
        }
 
        /* (non-Javadoc)
index 8275fc19ade40001c1541ff693d90b6dd577e77a..9d0bceda4daca8e94fd785f0dc5d52d649155e78 100644 (file)
@@ -3,6 +3,7 @@
  */
 package eu.etaxonomy.taxeditor.forms.selectioncomposites;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
 
@@ -22,8 +23,8 @@ public class TaxonSelectionComposite extends AbstractSelectionComposite<TaxonBas
         * @param style
         */
        public TaxonSelectionComposite(Composite parent, String labelString,
-                       TaxonBase selection, int style) {
-               super(parent, labelString, selection, style);   }
+                       TaxonBase selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, style); }
 
        /* (non-Javadoc)
         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
index 5edc136db5ff1bad6178e44c2f7a352b33206635..31362575394bb4e66ed76f1d5536fabe4e880c02 100644 (file)
@@ -29,12 +29,16 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
 import eu.etaxonomy.taxeditor.preference.LanguageMenuPreferences;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
- * @author nho
- *
+ * 
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ * @param <T>
  */
-public abstract class AbstractTermComboComposite<T extends DefinedTermBase> extends AbstractFormComposite implements SelectionListener, IPropertyChangeListener{
+public abstract class AbstractTermComboComposite<T extends DefinedTermBase> extends AbstractFormComposite implements SelectionListener{
 
        private static final Logger logger = Logger.getLogger(AbstractTermComboComposite.class);
        
@@ -53,11 +57,13 @@ public abstract class AbstractTermComboComposite<T extends DefinedTermBase> exte
         * @param parent
         * @param style
         */
-       public AbstractTermComboComposite(Composite parent, String labelString, T selection, int visibleItems, int style) {
-               super(parent, style);
+       public AbstractTermComboComposite(Composite parent, String labelString, T selection, IPropertyChangeListener listener, int visibleItems, int style) {
+               super(parent, listener, style);
                
-               label = toolkit.createLabel(this, labelString);
-               label.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+               if(labelString != null){
+                       label = toolkit.createLabel(this, labelString);
+                       label.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+               }
                
         // create combo
         combo = new Combo(this, SWT.BORDER | SWT.READ_ONLY);
@@ -100,12 +106,12 @@ public abstract class AbstractTermComboComposite<T extends DefinedTermBase> exte
                if(termComparator != null)
                        Collections.sort(preferredTerms, termComparator);
                for (T term : preferredTerms) {
-                       String description = term.getDescription(); 
-                       if (description == null) {
-                               logger.warn("No description for " + term + " - not added to combo");
+                       String label = term.getLabel(CdmStore.getDefaultLanguage()); 
+                       if (label == null) {
+                               logger.warn("No label for " + term + " - not added to combo");
                                continue;
                        }
-                       combo.add(description);
+                       combo.add(label);
                        terms.add(term);
 
                        i++;
@@ -186,13 +192,15 @@ public abstract class AbstractTermComboComposite<T extends DefinedTermBase> exte
         */
        public void widgetSelected(SelectionEvent e) {
                selection = terms.get(combo.getSelectionIndex());
+               firePropertyChangeEvent(null);
        }
        
        /* (non-Javadoc)
         * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
         */
        public void propertyChange(PropertyChangeEvent event) {
-               if (PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event.getProperty())) {
+               super.propertyChange(event);
+               if (event != null && PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event.getProperty())) {
                        populateTerms();
                }
        }
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ExtensionTypeComboComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ExtensionTypeComboComposite.java
new file mode 100644 (file)
index 0000000..994970d
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.termcombos;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.common.ExtensionType;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ */
+public class ExtensionTypeComboComposite extends AbstractTermComboComposite<ExtensionType> {
+
+       private static final Logger logger = Logger
+                       .getLogger(ExtensionTypeComboComposite.class);
+       
+       private static final int VISIBLE_ITEMS = 10;
+       
+       /**
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param listener
+        * @param visibleItems
+        * @param style
+        */
+       public ExtensionTypeComboComposite(Composite parent, String labelString,
+                       ExtensionType selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, VISIBLE_ITEMS, style);
+       }
+
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.termcombos.AbstractTermComboComposite#preferredTerms()
+        */
+       @Override
+       protected List<ExtensionType> preferredTerms() {
+               return PreferencesUtil.getPreferredExtensionTypes();
+       }
+}
index b2c677b44678c6303e2b42dd3ba96d00ef05c3fe..14b83638f2502a6af402c8b06ee2e1ec0de4f595 100644 (file)
@@ -5,6 +5,7 @@ package eu.etaxonomy.taxeditor.forms.termcombos;
 
 import java.util.List;
 
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.Language;
@@ -25,8 +26,8 @@ public class LanguageComboComposite extends AbstractTermComboComposite<Language>
         * @param selection
         * @param style
         */
-       public LanguageComboComposite(Composite parent, String labelString, Language selection, int style) {
-               super(parent, labelString, selection, VISIBLE_ITEMS, style);
+       public LanguageComboComposite(Composite parent, String labelString, Language selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, VISIBLE_ITEMS, style);
        }
 
        /* (non-Javadoc)
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/MarkerTypeComboComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/MarkerTypeComboComposite.java
new file mode 100644 (file)
index 0000000..a92ae9d
--- /dev/null
@@ -0,0 +1,54 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.termcombos;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ */
+public class MarkerTypeComboComposite extends AbstractTermComboComposite<MarkerType> {
+
+       private static final Logger logger = Logger
+                       .getLogger(MarkerTypeComboComposite.class);
+       
+       private static final int VISIBLE_ITEMS = 10;
+       
+       /**
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param listener
+        * @param visibleItems
+        * @param style
+        */
+       public MarkerTypeComboComposite(Composite parent, String labelString,
+                       MarkerType selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, VISIBLE_ITEMS, style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.termcombos.AbstractTermComboComposite#preferredTerms()
+        */
+       @Override
+       protected List<MarkerType> preferredTerms() {
+               return PreferencesUtil.getPreferredMarkerTypes();
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/NomenclaturalStatusTypeComboComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/NomenclaturalStatusTypeComboComposite.java
new file mode 100644 (file)
index 0000000..3b0f11c
--- /dev/null
@@ -0,0 +1,50 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.termcombos;
+
+import java.util.List;
+
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class NomenclaturalStatusTypeComboComposite extends
+               AbstractTermComboComposite<NomenclaturalStatusType> {
+       /**
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param listener
+        * @param visibleItems
+        * @param style
+        */
+       public NomenclaturalStatusTypeComboComposite(Composite parent,
+                       String labelString, NomenclaturalStatusType selection,
+                       IPropertyChangeListener listener, int visibleItems, int style) {
+               super(parent, labelString, selection, listener, visibleItems, style);
+       }
+
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.termcombos.AbstractTermComboComposite#preferredTerms()
+        */
+       @Override
+       protected List<NomenclaturalStatusType> preferredTerms() {
+               return PreferencesUtil.getPreferredNomenclaturalStatusTypes();
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RankComboComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RankComboComposite.java
new file mode 100644 (file)
index 0000000..4d2361e
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.termcombos;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ * @version 1.0
+ */
+public class RankComboComposite extends AbstractTermComboComposite<Rank> {
+
+       private static final Logger logger = Logger
+                       .getLogger(RankComboComposite.class);
+       
+       private static final int VISIBLE_ITEMS = 10;
+       
+       /**
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param listener
+        * @param visibleItems
+        * @param style
+        */
+       public RankComboComposite(Composite parent, String labelString,
+                       Rank selection, IPropertyChangeListener listener, int style) {
+               super(parent, labelString, selection, listener, VISIBLE_ITEMS, style);
+       }
+
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.termcombos.AbstractTermComboComposite#preferredTerms()
+        */
+       @Override
+       protected List<Rank> preferredTerms() {
+               return PreferencesUtil.getPreferredRanks();
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ReferenceTypeComboComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/ReferenceTypeComboComposite.java
new file mode 100644 (file)
index 0000000..5dda104
--- /dev/null
@@ -0,0 +1,110 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.termcombos;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.reference.ReferenceType;
+import eu.etaxonomy.taxeditor.forms.AbstractFormComposite;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ */
+public class ReferenceTypeComboComposite extends AbstractFormComposite implements SelectionListener{
+       private static final Logger logger = Logger
+                       .getLogger(ReferenceTypeComboComposite.class);
+
+       private static final int VISIBLE_ITEMS = 5;
+       
+       private ReferenceType selection;
+       
+       private Combo combo;
+
+       private List<ReferenceType> referenceTypeList;
+       
+       /**
+        * @param parent
+        * @param listener
+        * @param style
+        */
+       public ReferenceTypeComboComposite(Composite parent, ReferenceType referenceType,
+                       IPropertyChangeListener listener, int style) {
+               super(parent, listener, style);
+               // create combo
+           combo = new Combo(this, SWT.BORDER | SWT.READ_ONLY);
+           combo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+           combo.setVisibleItemCount(VISIBLE_ITEMS);
+           
+           referenceTypeList = new ArrayList<ReferenceType>();
+           
+           populateTypes();
+           
+           combo.addSelectionListener(this);
+           setSelection(referenceType);
+       }
+
+       /**
+        * 
+        */
+       private void populateTypes() {
+               for(ReferenceType referenceType : ReferenceType.values()){
+                       referenceTypeList.add(referenceType);
+                       combo.add(referenceType.getMessage(CdmStore.getDefaultLanguage()));
+               }
+       }
+       
+       
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+        */
+       public void widgetSelected(SelectionEvent e) {
+               selection = referenceTypeList.get(combo.getSelectionIndex());
+       }
+
+       public void widgetDefaultSelected(SelectionEvent e) {}
+
+       /**
+        * @param selection the selection to set
+        */
+       public void setSelection(ReferenceType selection) {
+               this.selection = selection;
+               combo.select(referenceTypeList.indexOf(selection));
+       }
+       
+       public void addSelectionListener(SelectionListener listener){
+               combo.addSelectionListener(listener);
+       }
+       
+       public void removeSelectionListener(SelectionListener listener){
+               combo.removeSelectionListener(listener);
+       }
+
+       /**
+        * @return the selection
+        */
+       public ReferenceType getSelection() {
+               return selection;
+       }
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RightsTypeComboComposite.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/termcombos/RightsTypeComboComposite.java
new file mode 100644 (file)
index 0000000..4d7622f
--- /dev/null
@@ -0,0 +1,54 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.forms.termcombos;
+
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.media.RightsTerm;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ */
+public class RightsTypeComboComposite extends AbstractTermComboComposite<RightsTerm> {
+
+       private static final Logger logger = Logger
+                       .getLogger(RightsTypeComboComposite.class);
+
+       private static final int VISIBLE_ITEMS = 10;
+       
+       /**
+        * @param parent
+        * @param labelString
+        * @param selection
+        * @param listener
+        * @param visibleItems
+        * @param style
+        */
+       public RightsTypeComboComposite(Composite parent, String labelString,
+                       RightsTerm selection, IPropertyChangeListener listener,  int style) {
+               super(parent, labelString, selection, listener, VISIBLE_ITEMS, style);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.termcombos.AbstractTermComboComposite#preferredTerms()
+        */
+       @Override
+       protected List<RightsTerm> preferredTerms() {
+               return PreferencesUtil.getPreferredRightsTypes();
+       }
+}
index 9e45a435d0f9923244e4c5b69b1649597133ff75..38fa4e4ad1b6a3812bb8ca8582e4610abc9ba56e 100644 (file)
@@ -29,6 +29,7 @@ import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;\r
+import eu.etaxonomy.cdm.model.media.RightsTerm;\r
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
@@ -188,6 +189,9 @@ public class PreferencesUtil {
        /** @return a <code>List</code> containing user preferred  <code>ExtensionType</code> terms */\r
        public static List<ExtensionType> getPreferredExtensionTypes() { return getPreferredTerms(VocabularyStore.getExtensionTypes()); }\r
        \r
+       /** @return     a <code>List</code> containing user preferred  <code>RightsType</code> terms  */\r
+       public static List<RightsTerm> getPreferredRightsTypes() {      return getPreferredTerms(VocabularyStore.getRightsTypes());}\r
+       \r
        \r
        /**\r
         * Generic method to set term preferences\r
index 9be7317ac4c2b7e000b64a5e06c0a0cfefded482..f2511b9e5b23da1b3f903c02ead60410f4871b82 100644 (file)
@@ -25,6 +25,7 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.VocabularyEnum;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.media.RightsTerm;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -167,6 +168,15 @@ public class VocabularyStore {
                return extensionTypes;
        }
        
+       /**
+        * @return
+        */
+       public static Set<RightsTerm> getRightsTypes() {
+               Set rightsTypes = getTermVocabulary(VocabularyEnum.RightsTerm).getTermsOrderedByLabels(CdmStore.getDefaultLanguage());
+               return rightsTypes;
+       }
+       
+       
        /**
         * Retrieve all ranks from data store.
         * 
@@ -229,5 +239,4 @@ public class VocabularyStore {
        public static TermVocabulary<DefinedTermBase> getTermVocabulary(VocabularyEnum vocabularyType){
                return CdmStore.getVocabularyService().getVocabulary(vocabularyType);
        }
-
 }