Basically fixes #2282. I will create new tickets for still open issues.
[taxeditor.git] / taxeditor-store / src / main / java / eu / etaxonomy / taxeditor / ui / forms / CdmFormFactory.java
index 7cd0c9b60f411d1edeabe9cb8f62824d143eafa8..763683062c8abba8411349b88f788fc912dd39ac 100644 (file)
@@ -39,8 +39,10 @@ import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 import org.eclipse.ui.internal.forms.widgets.FormFonts;
 import org.joda.time.Partial;
+import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.Person;
@@ -53,15 +55,16 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.ExtensionType;
+import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.IVersionableEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
@@ -121,6 +124,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.forms.password.EditPasswordElement;
 import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
 import eu.etaxonomy.taxeditor.ui.openurl.OpenUrlSelectorElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
@@ -170,6 +174,12 @@ import eu.etaxonomy.taxeditor.ui.section.description.detail.TaxonInteractionDeta
 import eu.etaxonomy.taxeditor.ui.section.description.detail.TextDataDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.group.GrantedAuthorityDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.group.GrantedAuthorityDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.GeographicalScopeDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailSection;
@@ -252,6 +262,7 @@ import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.FeatureSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.FeatureTreeSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.FieldObservationSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.GroupSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.InstitutionSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
@@ -265,6 +276,7 @@ import eu.etaxonomy.taxeditor.ui.selection.TaxonBaseSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.TeamSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.UserSelectionElement;
 import eu.etaxonomy.taxeditor.ui.term.AbstractEnumComboElement;
 import eu.etaxonomy.taxeditor.ui.term.AbstractTermComboElement;
 import eu.etaxonomy.taxeditor.ui.term.AnnotationTypeComboElement;
@@ -654,6 +666,23 @@ public class CdmFormFactory extends FormToolkit{
                return element;
        }
        
+       /**
+        * 
+        * @param parentElement
+        * @param labelString
+        * @param conversationEnabled
+        * @param user
+        * @param style
+        * @return
+        */
+       public EditPasswordElement createEditPasswordElement(ICdmFormElement parentElement, String labelString,
+                       ConversationHolder conversation, User user, int style){
+               EditPasswordElement element = new EditPasswordElement(this, parentElement, labelString, user, conversation);
+               adapt(element);
+               parentElement.addElement(element);
+               return element;
+       }
+       
        /**
         * <p>createIntegerTextWithLabelElement</p>
         *
@@ -971,7 +1000,9 @@ public class CdmFormFactory extends FormToolkit{
                COLLECTION, 
                FEATURE, 
                POLYTOMOUS_KEY, 
-               POLYTOMOUS_KEY_NODE
+               POLYTOMOUS_KEY_NODE, 
+               USER, 
+               GROUP
        }       
                
        /**
@@ -1305,8 +1336,8 @@ public class CdmFormFactory extends FormToolkit{
                INSTITUTION, 
                DERIVED_UNIT_GENERAL, 
                HYBRID, 
-               USER, 
-               GROUPS_BY_USER
+               USER,
+               GROUP
        }
        
        /**
@@ -1404,8 +1435,8 @@ public class CdmFormFactory extends FormToolkit{
                case USER:
                        section = new UserDetailSection(this, conversation, parentElement, selectionProvider, style);
                        break;
-               case GROUPS_BY_USER:
-                       section = new GroupsByUserDetailSection(this, conversation, parentElement, selectionProvider, style);
+               case GROUP:
+                       section = new GroupDetailSection(this, conversation, parentElement, selectionProvider, style);
                        break;
                }
                
@@ -1505,8 +1536,8 @@ public class CdmFormFactory extends FormToolkit{
                case USER:
                        element = new UserDetailElement(this, parentElement);
                        break;
-               case GROUPS_BY_USER:
-                       element = new GroupsByUserDetailElement(this, parentElement);
+               case GROUP:
+                       element = new GroupDetailElement(this, parentElement);
                        break;
                }
                
@@ -1554,7 +1585,10 @@ public class CdmFormFactory extends FormToolkit{
                SPECIMEN_COLLECTION, 
                IDENTIFIABLE_SOURCE_COLLECTION, 
                GEOGRAPHICAL_SCOPE, 
-               SCOPE_RESTRICTION
+               SCOPE_RESTRICTION,
+               MEMBER, 
+               GRANTED_AUTHORITY, 
+               GROUPS_BY_USER
        }
        
        /**
@@ -1657,6 +1691,15 @@ public class CdmFormFactory extends FormToolkit{
                case SCOPE_RESTRICTION:
                        section = new ScopeRestrictionSection(this, conversation, parentElement, style);
                        break;
+               case MEMBER:
+                       section = new MemberDetailSection(this, conversation, parentElement, style);
+                       break;
+               case GRANTED_AUTHORITY:
+                       section = new GrantedAuthorityDetailSection(this, conversation, parentElement, style);
+                       break;
+               case GROUPS_BY_USER:
+                       section = new GroupsByUserDetailSection(this, conversation, parentElement, style);
+                       break;
                }
                parentElement.addElement(section);
                adapt(section);
@@ -1673,10 +1716,10 @@ public class CdmFormFactory extends FormToolkit{
         * @param backgroundColor a {@link org.eclipse.swt.graphics.Color} object.
         * @return a {@link eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement} object.
         */
-       public AbstractEntityCollectionElement createEntityCollectionElement(AbstractFormSection parentElement, IVersionableEntity versionableEntity, SelectionListener removeListener, Color backgroundColor, int style){
+       public AbstractEntityCollectionElement createEntityCollectionElement(AbstractFormSection parentElement, Object versionableEntity, SelectionListener removeListener, Color backgroundColor, int style){
                AbstractEntityCollectionElement element = null;
                
-               VersionableEntity entity = (VersionableEntity) HibernateProxyHelper.deproxy(versionableEntity);
+               Object entity = HibernateProxyHelper.deproxy(versionableEntity);
                
                if(entity instanceof Annotation){
                        element = new AnnotationElement(this, parentElement, (Annotation) entity, removeListener, style);
@@ -1750,7 +1793,15 @@ public class CdmFormFactory extends FormToolkit{
                else if(entity instanceof Specimen){
                        element = new SpecimenCollectionDetailElement(this, parentElement, (Specimen) entity, removeListener, style);
                }
-               
+               else if(entity instanceof User){
+                       element = new MemberDetailElement(this, parentElement, (User) entity, removeListener, style);
+               }
+               else if(entity instanceof GrantedAuthority){
+                       element = new GrantedAuthorityDetailElement(this, parentElement, (GrantedAuthority) entity, removeListener, style);
+               }
+               else if(entity instanceof Group){
+                       element = new GroupsByUserDetailElement(this, parentElement, (Group) entity, removeListener, style);
+               }
                else if(entity instanceof DescriptionElementBase){
                        // this is the special case for protologs, maybe we can do this differently when API improves
                        DescriptionElementBase descriptionElement = (DescriptionElementBase) entity;
@@ -1848,6 +1899,12 @@ public class CdmFormFactory extends FormToolkit{
                case POLYTOMOUS_KEY_NODE:
                        element = new PolytomousKeyNodeSelectionElement(this, conversation, parentElement, labelString, (PolytomousKeyNode) entity, style);
                        break;
+               case USER:
+                       element = new UserSelectionElement(this, conversation, parentElement, labelString, (User) entity, style);
+                       break;
+               case GROUP:
+                       element = new GroupSelectionElement(this, conversation, parentElement, labelString, (Group) entity, style);
+                       break;
                default:
                        new RuntimeException("There is no selection composite for the desired selection type.");
                        break;