Basically fixes #2282. I will create new tickets for still open issues.
[taxeditor.git] / taxeditor-store / src / main / java / eu / etaxonomy / taxeditor / view / detail / DetailsViewer.java
index 0328c04bf82670c471005d2f7602bb154d2a823b..73835c64650b00b5e097cfedafe9f9436151a98d 100644 (file)
@@ -21,6 +21,7 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
@@ -34,9 +35,9 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.forms.RootElement;
 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.DetailType;
 import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.EntityDetailType;
+import eu.etaxonomy.taxeditor.ui.forms.RootElement;
 import eu.etaxonomy.taxeditor.ui.section.agent.PersonDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.agent.TeamDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.agent.TeamOrPersonBaseDetailSection;
@@ -50,6 +51,9 @@ import eu.etaxonomy.taxeditor.ui.section.description.MediaDetailsSection;
 import eu.etaxonomy.taxeditor.ui.section.description.NaturalLanguageSection;
 import eu.etaxonomy.taxeditor.ui.section.description.ScopeSection;
 import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.group.GrantedAuthorityDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.GeographicalScopeDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyNodeDetailSection;
@@ -98,7 +102,8 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                FEATURE_DISTRIBUTION,
                POLYTOMOUS_KEY,
                POLYTOMOUS_KEY_NODE,
-               USER
+               USER,
+               GROUP
        }
        
        private VIEW_PART currentViewPart;
@@ -235,12 +240,20 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                                createPolytomousKeyNodeSection(rootElement);
                                currentViewPart = VIEW_PART.POLYTOMOUS_KEY_NODE;
                        }
-               }else if(getInput() instanceof User){
+               }
+               else if(getInput() instanceof User){
                        if(currentViewPart != VIEW_PART.USER){
                                createUserSection(rootElement);
                                currentViewPart = VIEW_PART.USER;
                        }
-               }else{
+               }
+               else if(getInput() instanceof Group){
+                       if(currentViewPart != VIEW_PART.GROUP){
+                               createGroupSection(rootElement);
+                               currentViewPart = VIEW_PART.GROUP;
+                       }
+               }
+               else{
                        destroySections();
                        currentViewPart = VIEW_PART.EMPTY;
                }
@@ -248,6 +261,24 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                layout();
        }
 
+       /**
+        * @param rootElement
+        */
+       private void createGroupSection(RootElement parent) {
+               destroySections();
+               
+               GroupDetailSection groupDetailSection = (GroupDetailSection) 
+                       formFactory.createCdmDetailSection(DetailType.GROUP, getConversationHolder(), parent, this, Section.TWISTIE | Section.EXPANDED);
+               MemberDetailSection memberDetailSection = (MemberDetailSection) 
+                       formFactory.createEntityDetailSection(EntityDetailType.MEMBER, getConversationHolder(), parent, Section.TWISTIE | Section.EXPANDED);
+               GrantedAuthorityDetailSection grantedAuthorityDetailSection = (GrantedAuthorityDetailSection)
+                       formFactory.createEntityDetailSection(EntityDetailType.GRANTED_AUTHORITY, getConversationHolder(), parent, Section.TWISTIE | Section.EXPANDED);
+               
+               addPart(groupDetailSection);
+               addPart(memberDetailSection);
+               addPart(grantedAuthorityDetailSection);
+       }
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.viewers.Viewer#getSelection()
         */
@@ -562,7 +593,8 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                UserDetailSection userDetailSection = (UserDetailSection) 
                        formFactory.createCdmDetailSection(DetailType.USER, getConversationHolder(), parent, this, Section.TWISTIE | Section.EXPANDED);
                
-               GroupsByUserDetailSection groupByUserDetailSection = (GroupsByUserDetailSection) formFactory.createCdmDetailSection(DetailType.GROUPS_BY_USER, getConversationHolder(), parent, this, Section.TWISTIE | Section.EXPANDED);
+               GroupsByUserDetailSection groupByUserDetailSection = (GroupsByUserDetailSection) 
+                       formFactory.createEntityDetailSection(EntityDetailType.GROUPS_BY_USER, getConversationHolder(), parent, Section.TWISTIE | Section.EXPANDED);
                
                addPart(userDetailSection);
                addPart(groupByUserDetailSection);