diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java index 3cad146539e..74413e5f017 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/AssignmentPopup.java @@ -22,6 +22,7 @@ import com.evolveum.midpoint.web.component.AjaxButton; import com.evolveum.midpoint.web.component.TabbedPanel; import com.evolveum.midpoint.web.component.dialog.Popupable; +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.Component; @@ -118,13 +119,11 @@ public boolean isEnabled(){ form.add(addButton); } - private List createAssignmentTabs() { + protected List createAssignmentTabs() { List tabs = new ArrayList<>(); - //TODO check authorization for each tab - VisibleEnableBehaviour authorization = new VisibleEnableBehaviour(){ - }; - tabs.add(new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ROLE"), authorization) { + tabs.add(new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ROLE"), + new VisibleBehaviour(() -> isTabVisible(ObjectTypes.ROLE))) { private static final long serialVersionUID = 1L; @@ -152,7 +151,8 @@ public String getCount() { }); tabs.add( - new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ORG"), authorization) { + new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.ORG"), + new VisibleBehaviour(() -> isTabVisible(ObjectTypes.ORG))) { private static final long serialVersionUID = 1L; @@ -186,7 +186,8 @@ public String getCount() { }); - tabs.add(new CountablePanelTab(createStringResource("TypedAssignablePanel.orgTreeView"), authorization) { + tabs.add(new CountablePanelTab(createStringResource("TypedAssignablePanel.orgTreeView"), + new VisibleBehaviour(() -> isTabVisible(ObjectTypes.ORG))) { private static final long serialVersionUID = 1L; @@ -214,7 +215,8 @@ public String getCount() { }); tabs.add( - new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.SERVICE"), authorization) { + new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.SERVICE"), + new VisibleBehaviour(() -> isTabVisible(ObjectTypes.SERVICE))) { private static final long serialVersionUID = 1L; @@ -243,7 +245,8 @@ public String getCount() { }); tabs.add( - new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.RESOURCE"), authorization) { + new CountablePanelTab(getPageBase().createStringResource("ObjectTypes.RESOURCE"), + new VisibleBehaviour(() -> isTabVisible(ObjectTypes.RESOURCE))) { private static final long serialVersionUID = 1L; @@ -269,6 +272,15 @@ public String getCount() { return tabs; } + private boolean isTabVisible(ObjectTypes objectType){ + List availableObjectTypesList = getAvailableObjectTypesList(); + return availableObjectTypesList == null || availableObjectTypesList.size() == 0 || availableObjectTypesList.contains(objectType); + } + + protected List getAvailableObjectTypesList(){ + return WebComponentUtil.createAssignableTypesList(); + } + private int getTabPanelSelectedCount(WebMarkupContainer panel){ if (panel != null && panel instanceof AbstractAssignmentPopupTabPanel){ return ((AbstractAssignmentPopupTabPanel) panel).getSelectedObjectsList().size(); 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 db428b9f101..568ab50e03b 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 @@ -200,6 +200,11 @@ protected void addPerformed(AjaxRequestTarget target, List newAssignmentsList) { super.addPerformed(target, newAssignmentsList); addSelectedAssignmentsPerformed(target, newAssignmentsList); } + + @Override + protected List getAvailableObjectTypesList(){ + return getObjectTypesList(); + } }; popupPanel.setOutputMarkupId(true); getPageBase().showMainPopup(popupPanel, target);