diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java index 2a030d753c3..bac664f4784 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanelWithDetailsPanel.java @@ -139,6 +139,7 @@ public void onClick(AjaxRequestTarget ajaxRequestTarget) { @Override public void onClick(AjaxRequestTarget ajaxRequestTarget) { itemDetailsVisible = false; + cancelItemDetailsPerformed(ajaxRequestTarget); ajaxRequestTarget.add(MultivalueContainerListPanelWithDetailsPanel.this); } }; @@ -152,6 +153,9 @@ public void itemDetailsPerformed(AjaxRequestTarget target, IModel> listItems) { itemPerformedForDefaultAction(target, null, listItems); } + + protected void cancelItemDetailsPerformed(AjaxRequestTarget target){ + } @Override protected void itemPerformedForDefaultAction(AjaxRequestTarget target, IModel> rowModel, @@ -177,7 +181,7 @@ protected void itemPerformedForDefaultAction(AjaxRequestTarget target, IModel IModel getIdentifierLabelModel(ContainerV return Model.of(""); } - protected List getObjectTypesList(){ - return WebComponentUtil.createAssignableTypesList(); - } +// protected List getObjectTypesList(){ +// return WebComponentUtil.createAssignableTypesList(); +// } @Override protected Fragment getCustomSpecificContainers(String contentAreaId, ContainerValueWrapper modelObject) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java index 878e197cc4c..771cc277865 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.java @@ -121,6 +121,11 @@ AuthorizationPhaseType.REQUEST, getFocusObject(), } } + @Override + protected void cancelItemDetailsPerformed(AjaxRequestTarget target){ + AssignmentPanel.this.cancelAssignmentDetailsPerformed(target); + } + @Override protected ObjectQuery createQuery() { return createObjectQuery(); @@ -250,6 +255,9 @@ protected ObjectQuery createObjectQuery(){ .build(); } + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target){ + } + private List, String>> initBasicColumns() { List, String>> columns = new ArrayList<>(); @@ -288,6 +296,7 @@ protected IModel createLinkModel(IModel> rowModel) { + AssignmentPanel.this.assignmentDetailsPerformed(target); getMultivalueContainerListPanel().itemDetailsPerformed(target, rowModel); } }); @@ -322,6 +331,9 @@ protected List, String>> initColum return new ArrayList<>(); } + protected void assignmentDetailsPerformed(AjaxRequestTarget target){ + } + protected void newAssignmentClickPerformed(AjaxRequestTarget target){ AssignmentPopup popupPanel = new AssignmentPopup(getPageBase().getMainPopupBodyId()) { @@ -708,7 +720,7 @@ protected MultivalueContainerListPanelWithDetailsPanel getMultiv return ((MultivalueContainerListPanelWithDetailsPanel)get(ID_ASSIGNMENTS)); } - protected MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel() { + public MultivalueContainerDetailsPanel getMultivalueContainerDetailsPanel() { return ((MultivalueContainerDetailsPanel)get(MultivalueContainerListPanelWithDetailsPanel.ID_ITEM_DETAILS)); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.html index dfc4037f052..20d496645f3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.html @@ -17,7 +17,7 @@ -
+
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java index b156dbc6bbd..230e2c7166b 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/SwitchAssignmentTypePanel.java @@ -18,16 +18,20 @@ import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.web.component.AjaxButton; +import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper; import com.evolveum.midpoint.web.component.prism.ContainerWrapper; import com.evolveum.midpoint.web.component.util.EnableBehaviour; import com.evolveum.midpoint.web.component.util.VisibleBehaviour; +import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.wicket.AttributeModifier; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; import javax.xml.namespace.QName; +import java.util.List; /** * Created by honchar @@ -35,6 +39,7 @@ public class SwitchAssignmentTypePanel extends BasePanel> { private static final long serialVersionUID = 1L; + private static final String ID_ASSIGNMENT_TYPE_BUTTONS = "assignmentTypeButtons"; private static final String ID_ALL_ASSIGNMENTS = "allAssignments"; private static final String ID_ROLE_TYPE_ASSIGNMENTS = "roleTypeAssignments"; private static final String ID_ORG_TYPE_ASSIGNMENTS = "orgTypeAssignments"; @@ -61,21 +66,40 @@ protected void onInitialize(){ } private void initButtonsPanel(){ + WebMarkupContainer buttonsContainer = new WebMarkupContainer(ID_ASSIGNMENT_TYPE_BUTTONS); + buttonsContainer.setOutputMarkupId(true); + buttonsContainer.add(new VisibleBehaviour(() -> getButtonsContainerVisibilityModel().getObject())); + add(buttonsContainer); + AjaxButton allAssignmentsButton = new AjaxButton(ID_ALL_ASSIGNMENTS, createStringResource("AssignmentPanel.allLabel")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { AssignmentPanel assignmentPanel = - new AssignmentPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()); + new AssignmentPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()) { + private static final long serialVersionUID = 1L; + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + }; assignmentPanel.setOutputMarkupId(true); switchAssignmentTypePerformed(target, assignmentPanel, ID_ALL_ASSIGNMENTS); } }; allAssignmentsButton.add(AttributeAppender.append("class", getButtonStyleModel(ID_ALL_ASSIGNMENTS))); allAssignmentsButton.setOutputMarkupId(true); - add(allAssignmentsButton); + buttonsContainer.add(allAssignmentsButton); AjaxButton roleTypeAssignmentsButton = new AjaxButton(ID_ROLE_TYPE_ASSIGNMENTS, createStringResource("ObjectType.RoleType")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -87,6 +111,16 @@ public void onClick(AjaxRequestTarget target) { protected QName getAssignmentType() { return RoleType.COMPLEX_TYPE; } + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } }; assignmentPanel.setOutputMarkupId(true); switchAssignmentTypePerformed(target, assignmentPanel, ID_ROLE_TYPE_ASSIGNMENTS); @@ -94,9 +128,10 @@ protected QName getAssignmentType() { }; roleTypeAssignmentsButton.add(AttributeAppender.append("class", getButtonStyleModel(ID_ROLE_TYPE_ASSIGNMENTS))); roleTypeAssignmentsButton.setOutputMarkupId(true); - add(roleTypeAssignmentsButton); + buttonsContainer.add(roleTypeAssignmentsButton); AjaxButton orgTypeAssignmentsButton = new AjaxButton(ID_ORG_TYPE_ASSIGNMENTS, createStringResource("ObjectType.OrgType")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -108,6 +143,16 @@ public void onClick(AjaxRequestTarget target) { protected QName getAssignmentType() { return OrgType.COMPLEX_TYPE; } + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } }; assignmentPanel.setOutputMarkupId(true); switchAssignmentTypePerformed(target, assignmentPanel, ID_ORG_TYPE_ASSIGNMENTS); @@ -115,9 +160,10 @@ protected QName getAssignmentType() { }; orgTypeAssignmentsButton.add(AttributeAppender.append("class", getButtonStyleModel(ID_ORG_TYPE_ASSIGNMENTS))); orgTypeAssignmentsButton.setOutputMarkupId(true); - add(orgTypeAssignmentsButton); + buttonsContainer.add(orgTypeAssignmentsButton); AjaxButton serviceTypeAssignmentsButton = new AjaxButton(ID_SERVICE_TYPE_ASSIGNMENTS, createStringResource("ObjectType.ServiceType")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { @@ -129,6 +175,16 @@ public void onClick(AjaxRequestTarget target) { protected QName getAssignmentType() { return ServiceType.COMPLEX_TYPE; } + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } }; assignmentPanel.setOutputMarkupId(true); switchAssignmentTypePerformed(target, assignmentPanel, ID_SERVICE_TYPE_ASSIGNMENTS); @@ -137,28 +193,54 @@ protected QName getAssignmentType() { }; serviceTypeAssignmentsButton.add(AttributeAppender.append("class", getButtonStyleModel(ID_SERVICE_TYPE_ASSIGNMENTS))); serviceTypeAssignmentsButton.setOutputMarkupId(true); - add(serviceTypeAssignmentsButton); + buttonsContainer.add(serviceTypeAssignmentsButton); AjaxButton resourceTypeAssignmentsButton = new AjaxButton(ID_RESOURCE_TYPE_ASSIGNMENTS, createStringResource("ObjectType.ResourceType")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { ConstructionAssignmentPanel constructionsPanel = - new ConstructionAssignmentPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()); + new ConstructionAssignmentPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()){ + private static final long serialVersionUID = 1L; + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + }; constructionsPanel.setOutputMarkupId(true); switchAssignmentTypePerformed(target, constructionsPanel, ID_RESOURCE_TYPE_ASSIGNMENTS); } }; resourceTypeAssignmentsButton.add(AttributeAppender.append("class", getButtonStyleModel(ID_RESOURCE_TYPE_ASSIGNMENTS))); resourceTypeAssignmentsButton.setOutputMarkupId(true); - add(resourceTypeAssignmentsButton); + buttonsContainer.add(resourceTypeAssignmentsButton); AjaxButton policyRuleTypeAssignmentsButton = new AjaxButton(ID_POLICY_RULE_TYPE_ASSIGNMENTS, createStringResource("AssignmentType.policyRule")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { PolicyRulesPanel policyRulesPanel = - new PolicyRulesPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()) ; + new PolicyRulesPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()){ + private static final long serialVersionUID = 1L; + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + } ; policyRulesPanel.setOutputMarkupId(true); switchAssignmentTypePerformed(target, policyRulesPanel, ID_POLICY_RULE_TYPE_ASSIGNMENTS); @@ -168,14 +250,27 @@ public void onClick(AjaxRequestTarget target) { policyRuleTypeAssignmentsButton.setOutputMarkupId(true); policyRuleTypeAssignmentsButton.add(new VisibleBehaviour(() -> getModelObject().getObjectWrapper().getObject().asObjectable() instanceof AbstractRoleType)); - add(policyRuleTypeAssignmentsButton); + buttonsContainer.add(policyRuleTypeAssignmentsButton); AjaxButton entitlementAssignmentsButton = new AjaxButton(ID_ENTITLEMENT_ASSIGNMENTS, createStringResource("AbstractRoleMainPanel.inducedEntitlements")) { + private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { InducedEntitlementsPanel entitlementAssignments = - new InducedEntitlementsPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()) ; + new InducedEntitlementsPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()) { + private static final long serialVersionUID = 1L; + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + }; entitlementAssignments.setOutputMarkupId(true); switchAssignmentTypePerformed(target, entitlementAssignments, ID_ENTITLEMENT_ASSIGNMENTS); @@ -185,22 +280,44 @@ public void onClick(AjaxRequestTarget target) { entitlementAssignmentsButton.setOutputMarkupId(true); entitlementAssignmentsButton.add(new VisibleBehaviour(() -> (getModelObject().getObjectWrapper().getObject().asObjectable() instanceof AbstractRoleType) && isInducement())); - add(entitlementAssignmentsButton); + buttonsContainer.add(entitlementAssignmentsButton); //GDPR feature.. temporary disabled MID-4281 // AjaxButton consentsButton = new AjaxButton(ID_CONSENT_ASSIGNMENTS, createStringResource("FocusType.consents")) { +// private static final long serialVersionUID = 1L; // // @Override // public void onClick(AjaxRequestTarget target) { // GdprAssignmentPanel gdprAssignmentPanel = -// new GdprAssignmentPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()); +// new GdprAssignmentPanel(ID_ASSIGNMENTS, SwitchAssignmentTypePanel.this.getModel()){ +// private static final long serialVersionUID = 1L; +// +// @Override +// protected void assignmentDetailsPerformed(AjaxRequestTarget target) { +// target.add(SwitchAssignmentTypePanel.this); +// } +// +// @Override +// protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target) { +// target.add(SwitchAssignmentTypePanel.this); +// } +// }; // gdprAssignmentPanel.setOutputMarkupId(true); // SwitchAssignmentTypePanel.this.addOrReplace(gdprAssignmentPanel); // target.add(SwitchAssignmentTypePanel.this); // } // }; // consentsButton.setOutputMarkupId(true); -// add(consentsButton); +// buttonsContainer.add(consentsButton); + } + + private LoadableModel getButtonsContainerVisibilityModel(){ + return new LoadableModel() { + @Override + protected Boolean load() { + return getAssignmentsPanel().getMultivalueContainerListPanel().isListPanelVisible(); + } + }; } private void switchAssignmentTypePerformed(AjaxRequestTarget target, AssignmentPanel assignmentsPanel, String buttonId){ @@ -223,11 +340,27 @@ protected String load() { } private void initAssignmentsPanel(){ - AssignmentPanel assignmentsPanel = new AssignmentPanel(ID_ASSIGNMENTS, getModel()); + AssignmentPanel assignmentsPanel = new AssignmentPanel(ID_ASSIGNMENTS, getModel()){ + private static final long serialVersionUID = 1L; + + @Override + protected void assignmentDetailsPerformed(AjaxRequestTarget target) { + target.add(SwitchAssignmentTypePanel.this); + } + + @Override + protected void cancelAssignmentDetailsPerformed(AjaxRequestTarget target){ + target.add(SwitchAssignmentTypePanel.this); + } + }; assignmentsPanel.setOutputMarkupId(true); add(assignmentsPanel); } + public AssignmentPanel getAssignmentsPanel(){ + return (AssignmentPanel) get(ID_ASSIGNMENTS); + } + protected boolean isInducement(){ return false; }