4 package eu
.etaxonomy
.taxeditor
.ui
.section
.description
;
6 import java
.util
.ArrayList
;
7 import java
.util
.Collection
;
8 import java
.util
.Collections
;
9 import java
.util
.Comparator
;
10 import java
.util
.List
;
12 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
13 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSourceType
;
14 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionElementBase
;
15 import eu
.etaxonomy
.cdm
.model
.description
.DescriptionElementSource
;
16 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
17 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
18 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
19 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractEntityCollectionSection
;
23 * DescriptionElementSourceSection class.
27 * @created Nov 17, 2009
30 public class DescriptionElementSourceSection
extends
31 AbstractEntityCollectionSection
<DescriptionElementBase
, DescriptionElementSource
> {
35 * Constructor for DescriptionElementSourceSection.
38 * @param parentElement
39 * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
43 * @param cdmFormFactory
44 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
47 * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
50 public DescriptionElementSourceSection(CdmFormFactory cdmFormFactory
, ConversationHolder conversation
,
51 ICdmFormElement parentElement
, int style
) {
52 super(cdmFormFactory
, conversation
, parentElement
, "References", style
);
57 public DescriptionElementSource
createNewElement() {
58 return DescriptionElementSource
.NewInstance(OriginalSourceType
.PrimaryTaxonomicSource
);
63 public Collection
<DescriptionElementSource
> getCollection(DescriptionElementBase entity
) {
64 List
<DescriptionElementSource
> sources
= new ArrayList
<DescriptionElementSource
>(entity
.getSources());
65 Collections
.sort(sources
, new Comparator
<DescriptionElementSource
>() {
68 public int compare(DescriptionElementSource o1
, DescriptionElementSource o2
) {
71 OriginalSourceType type1
= o1
.getType();
72 OriginalSourceType type2
= o2
.getType();
73 Reference citation1
= o1
.getCitation();
74 Reference citation2
= o2
.getCitation();
76 // the newly created should always be on top
84 // sort by type (Primary taxonomic > Primary Media > others
85 // alphabetically by reference title cache)
86 if (type1
!= null && type1
.equals(OriginalSourceType
.PrimaryTaxonomicSource
)) {
89 if (type1
!= null && type1
.equals(OriginalSourceType
.PrimaryMediaSource
)
90 && type2
!=null && !type2
.equals(OriginalSourceType
.PrimaryTaxonomicSource
)) {
93 if (type2
!= null && type2
.equals(OriginalSourceType
.PrimaryTaxonomicSource
)) {
96 if (type2
!= null && type2
.equals(OriginalSourceType
.PrimaryMediaSource
)
97 && type1
!=null && !type1
.equals(OriginalSourceType
.PrimaryTaxonomicSource
)) {
101 //sort by citation title cache
108 if(citation1
!=null && citation2
!=null){
109 return citation1
.getTitleCache().compareTo(citation2
.getTitleCache());
119 public String
getEmptyString() {
120 return "No references yet.";
125 protected String
getTooltipString() {
126 return "Create a new reference";
131 public void addElement(DescriptionElementSource element
) {
132 getEntity().addSource(element
);
137 public void removeElement(DescriptionElementSource element
) {
138 getEntity().removeSource(element
);