diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java index 9777151b340..a47a958b2e9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.java @@ -268,31 +268,6 @@ private IModel getIdentifierLabelModel(ContainerV // return WebComponentUtil.createAssignableTypesList(); // } - @Override - protected Fragment getCustomSpecificContainers(String contentAreaId, ContainerValueWrapper modelObject) { - Fragment specificContainers = new Fragment(contentAreaId, AssignmentPanel.ID_SPECIFIC_CONTAINERS_FRAGMENT, this); - specificContainers.add(getSpecificContainerPanel(modelObject)); - return specificContainers; - } - - @Override - protected IModel getSpecificContainerModel(ContainerValueWrapper modelObject) { - if (ConstructionType.COMPLEX_TYPE.equals(AssignmentsUtil.getTargetType(modelObject.getContainerValue().getValue()))) { - ContainerWrapper constructionWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), - AssignmentType.F_CONSTRUCTION)); - - return Model.of(constructionWrapper); - } - - if (PersonaConstructionType.COMPLEX_TYPE.equals(AssignmentsUtil.getTargetType(modelObject.getContainerValue().getValue()))) { - ContainerWrapper personasWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), - AssignmentType.F_PERSONA_CONSTRUCTION)); - - return Model.of(personasWrapper); - } - return Model.of(); - } - @Override protected List createSearchableItems(PrismContainerDefinition containerDef) { List defs = new ArrayList<>(); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html index e6c46b029c6..f905384b0d2 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AssignmentPanel.html @@ -21,6 +21,7 @@ +
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 e4f25342661..3c611c552cd 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 @@ -341,6 +341,14 @@ protected IModel createLinkModel(IModel> rowModel) { + if (rowModel.getObject().getContainerValue().asContainerable().getFocusMappings() != null){ + return false; + } + return true; + } + @Override public void onClick(AjaxRequestTarget target, IModel> rowModel) { AssignmentPanel.this.assignmentDetailsPerformed(target); @@ -610,6 +618,7 @@ protected Fragment getCustomSpecificContainers(String contentAreaId, ContainerVa specificContainers.add(getSpecificContainerPanel(modelObject)); return specificContainers; } + protected PrismContainerPanel getSpecificContainerPanel(ContainerValueWrapper modelObject) { Form form = new Form<>("form"); ItemPath assignmentPath = modelObject.getPath(); @@ -639,6 +648,25 @@ protected ItemVisibility getSpecificContainersItemsVisibility(ItemWrapper itemWr } protected IModel getSpecificContainerModel(ContainerValueWrapper modelObject){ + if (ConstructionType.COMPLEX_TYPE.equals(AssignmentsUtil.getTargetType(modelObject.getContainerValue().getValue()))) { + ContainerWrapper constructionWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), + AssignmentType.F_CONSTRUCTION)); + + return Model.of(constructionWrapper); + } + + if (PersonaConstructionType.COMPLEX_TYPE.equals(AssignmentsUtil.getTargetType(modelObject.getContainerValue().getValue()))) { + //TODO is it correct? findContainerWrapper by path F_PERSONA_CONSTRUCTION will return PersonaConstructionType + //but not PolicyRuleType + ContainerWrapper personasWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), + AssignmentType.F_PERSONA_CONSTRUCTION)); + + return Model.of(personasWrapper); + } + if (PolicyRuleType.COMPLEX_TYPE.equals(AssignmentsUtil.getTargetType(modelObject.getContainerValue().getValue()))) { + ContainerWrapper policyRuleWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), AssignmentType.F_POLICY_RULE)); + return Model.of(policyRuleWrapper); + } return Model.of(); } @@ -654,24 +682,28 @@ protected ItemVisibility getAssignmentBasicTabVisibity(ItemWrapper itemWrapper, if (targetRef != null) { targetType = targetRef.getType(); } - pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_TARGET_REF)); + pathsToHide.add(assignmentPath.append(AssignmentType.F_TARGET_REF)); + pathsToHide.add(assignmentPath.append(AssignmentType.F_TARGET)); if (OrgType.COMPLEX_TYPE.equals(targetType) || AssignmentsUtil.isPolicyRuleAssignment(prismContainerValue.asContainerable())) { - pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_TENANT_REF)); - pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_ORG_REF)); + pathsToHide.add(assignmentPath.append(AssignmentType.F_TENANT_REF)); + pathsToHide.add(assignmentPath.append(AssignmentType.F_ORG_REF)); } if (AssignmentsUtil.isPolicyRuleAssignment(prismContainerValue.asContainerable())){ - pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_FOCUS_TYPE)); + pathsToHide.add(assignmentPath.append(AssignmentType.F_FOCUS_TYPE)); } if (assignment.getConstruction() == null) { - pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_CONSTRUCTION)); + pathsToHide.add(assignmentPath.append(AssignmentType.F_CONSTRUCTION)); + } + if (assignment.getPersonaConstruction() == null) { + pathsToHide.add(assignmentPath.append(AssignmentType.F_PERSONA_CONSTRUCTION)); + } + if (assignment.getPolicyRule() == null) { + pathsToHide.add(assignmentPath.append(AssignmentType.F_POLICY_RULE)); } - pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_PERSONA_CONSTRUCTION)); - pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_POLICY_RULE)); - - if (PropertyOrReferenceWrapper.class.isAssignableFrom(itemWrapper.getClass()) && !WebComponentUtil.isItemVisible(pathsToHide, itemWrapper.getPath())) { + if (PropertyOrReferenceWrapper.class.isAssignableFrom(itemWrapper.getClass()) && !WebComponentUtil.isItemVisible(pathsToHide, itemWrapper.getItem().getPath())) { return ItemVisibility.AUTO; } else { return ItemVisibility.HIDDEN; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssignmentPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssignmentPanel.java index 4235679c740..be2c807ed18 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssignmentPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/ConstructionAssignmentPanel.java @@ -100,33 +100,4 @@ protected ObjectQuery createObjectQuery(){ .build(); } - @Override - protected IModel getSpecificContainerModel(ContainerValueWrapper modelObject) { - if (ConstructionType.COMPLEX_TYPE.equals(AssignmentsUtil.getTargetType(modelObject.getContainerValue().getValue()))) { - ContainerWrapper constructionWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), - AssignmentType.F_CONSTRUCTION)); - - return Model.of(constructionWrapper); - } - - if (PersonaConstructionType.COMPLEX_TYPE.equals(AssignmentsUtil.getTargetType(modelObject.getContainerValue().getValue()))) { - //TODO is it correct? findContainerWrapper by path F_PERSONA_CONSTRUCTION will return PersonaConstructionType - //but not PolicyRuleType - ContainerWrapper personasWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), - AssignmentType.F_PERSONA_CONSTRUCTION)); - - return Model.of(personasWrapper); - } - return Model.of(); - } - - @Override - protected ItemVisibility getAssignmentBasicTabVisibity(ItemWrapper itemWrapper, ItemPath parentAssignmentPath, ItemPath assignmentPath, PrismContainerValue prismContainerValue) { - if (itemWrapper.getPath().containsNameExactly(AssignmentType.F_CONSTRUCTION)) { - return ItemVisibility.AUTO; - } else { - return super.getAssignmentBasicTabVisibity(itemWrapper, parentAssignmentPath, assignmentPath, prismContainerValue); - } - - } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java index 81ed40b55cc..cb7160ae64f 100755 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/PolicyRulesPanel.java @@ -156,12 +156,6 @@ protected ObjectQuery createObjectQuery() { .build(); } - @Override - protected IModel getSpecificContainerModel(ContainerValueWrapper modelObject) { - ContainerWrapper policyRuleWrapper = modelObject.findContainerWrapper(ItemPath.create(modelObject.getPath(), AssignmentType.F_POLICY_RULE)); - return Model.of(policyRuleWrapper); - } - @Override protected List createSearchableItems(PrismContainerDefinition containerDef) { List defs = new ArrayList<>(); 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 8863f98db62..532c769cb3f 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 @@ -363,6 +363,11 @@ protected boolean isNewObjectButtonVisible(PrismObject focusObject){ return false; } + @Override + protected QName getAssignmentType() { + return AssignmentType.F_FOCUS_MAPPINGS; + } + }; assignmentPanel.setOutputMarkupId(true); switchAssignmentTypePerformed(target, assignmentPanel, ID_FOCUS_MAPPING_ASSIGNMENTS);