From a319895da8958569141761f7debed030e472e220 Mon Sep 17 00:00:00 2001 From: honchar Date: Fri, 22 Apr 2016 15:43:24 +0200 Subject: [PATCH] fixing tenant and org popup for Request role --- .../gui/api/component/FocusBrowserPanel.java | 22 ++++++- .../gui/api/component/ObjectListPanel.java | 5 ++ .../MultipleAssignmentSelectorPanel.java | 61 ++++++++++++++----- 3 files changed, 73 insertions(+), 15 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.java index 3eb97e6a1f8..3cd9c02a26e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/FocusBrowserPanel.java @@ -19,6 +19,8 @@ import javax.xml.namespace.QName; +import com.evolveum.midpoint.prism.query.ObjectFilter; +import com.evolveum.midpoint.prism.query.ObjectQuery; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; import org.apache.wicket.markup.html.WebMarkupContainer; @@ -49,11 +51,18 @@ public class FocusBrowserPanel extends BasePanel { private IModel typeModel; private PageBase parentPage; + private ObjectFilter queryFilter; public FocusBrowserPanel(String id, final Class type, List supportedTypes, boolean multiselect, PageBase parentPage) { + this(id, type, supportedTypes, multiselect, parentPage, null); + } + + public FocusBrowserPanel(String id, final Class type, List supportedTypes, boolean multiselect, + PageBase parentPage, ObjectFilter queryFilter) { super(id); this.parentPage = parentPage; + this.queryFilter = queryFilter; typeModel = new LoadableModel(false) { @Override @@ -135,7 +144,18 @@ private ObjectListPanel createObjectListPanel(Class type, final boolean mu protected void onSelectPerformed(AjaxRequestTarget target, T object) { FocusBrowserPanel.this.onSelectPerformed(target, object); } - }; + + @Override + protected ObjectQuery addFilterToContentQuery(ObjectQuery query) { + if (queryFilter != null){ + if (query == null){ + query = new ObjectQuery(); + } + query.addFilter(queryFilter); + } + return query; + } + }; // ObjectListPanel listPanel = new ObjectListPanel(ID_TABLE, type, // parentPage) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java index 5c99cb3b277..8cfc4fa2dcb 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/ObjectListPanel.java @@ -379,9 +379,14 @@ public ObjectQuery getQuery() { protected ObjectQuery createContentQuery() { Search search = searchModel.getObject(); ObjectQuery query = search.createObjectQuery(parentPage.getPrismContext()); + query = addFilterToContentQuery(query); return query; } + protected ObjectQuery addFilterToContentQuery(ObjectQuery query){ + return query; + } + public StringResourceModel createStringResource(String resourceKey, Object... objects) { return PageBase.createStringResourceStatic(this, resourceKey, objects); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/MultipleAssignmentSelectorPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/MultipleAssignmentSelectorPanel.java index 58861087976..ad05e7a8d0c 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/MultipleAssignmentSelectorPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/MultipleAssignmentSelectorPanel.java @@ -17,6 +17,7 @@ package com.evolveum.midpoint.web.component.assignment; import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.component.FocusBrowserPanel; import com.evolveum.midpoint.gui.api.model.LoadableModel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; @@ -47,6 +48,7 @@ import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; +import javax.xml.namespace.QName; import java.util.ArrayList; import java.util.List; @@ -346,16 +348,34 @@ protected void removeValuePerformed(AjaxRequestTarget target, ListItem @Override protected void editValuePerformed(AjaxRequestTarget target, IModel rowModel) { - OrgTreeAssignablePanel tenantPanel = new OrgTreeAssignablePanel( - getPageBase().getMainPopupBodyId(), false, getPageBase()) { + List supportedTypes = new ArrayList<>(); + supportedTypes.add(getPageBase().getPrismContext().getSchemaRegistry() + .findObjectDefinitionByCompileTimeClass(OrgType.class).getTypeName()); + ObjectFilter filter = EqualFilter.createEqual(OrgType.F_TENANT, OrgType.class, + getPageBase().getPrismContext(), null, true); + + FocusBrowserPanel tenantPanel = new FocusBrowserPanel(getPageBase().getMainPopupBodyId(), + OrgType.class, supportedTypes, false, getPageBase(), filter) { @Override - protected void onItemSelect(SelectableBean selected, AjaxRequestTarget target) { - closeModalWindow(target); + protected void onSelectPerformed(AjaxRequestTarget target, OrgType org) { + super.onSelectPerformed(target, org); tenantEditorObject.clear(); - tenantEditorObject.add(selected.getValue()); - target.add(getTenantEditorContainer()); } + tenantEditorObject.add(org); + target.add(getTenantEditorContainer()); + } }; + +// OrgTreeAssignablePanel tenantPanel = new OrgTreeAssignablePanel( +// getPageBase().getMainPopupBodyId(), false, getPageBase()) { +// +// @Override +// protected void onItemSelect(SelectableBean selected, AjaxRequestTarget target) { +// closeModalWindow(target); +// tenantEditorObject.clear(); +// tenantEditorObject.add(selected.getValue()); +// target.add(getTenantEditorContainer()); } +// }; getPageBase().showMainPopup(tenantPanel, new Model("Select tenant"), target, 900, 700); } @@ -409,16 +429,29 @@ protected void removeValuePerformed(AjaxRequestTarget target, ListItem @Override protected void editValuePerformed(AjaxRequestTarget target, IModel rowModel) { - OrgTreeAssignablePanel orgPanel = new OrgTreeAssignablePanel( - getPageBase().getMainPopupBodyId(), false, getPageBase()) { - + List supportedTypes = new ArrayList<>(); + supportedTypes.add(getPageBase().getPrismContext().getSchemaRegistry() + .findObjectDefinitionByCompileTimeClass(OrgType.class).getTypeName()); + FocusBrowserPanel orgPanel = new FocusBrowserPanel(getPageBase().getMainPopupBodyId(), + OrgType.class, supportedTypes, false, getPageBase()) { @Override - protected void onItemSelect(SelectableBean selected, AjaxRequestTarget target) { - closeModalWindow(target); - tenantEditorObject.clear(); - tenantEditorObject.add(selected.getValue()); - target.add(getTenantEditorContainer()); } + protected void onSelectPerformed(AjaxRequestTarget target, OrgType org) { + super.onSelectPerformed(target, org); + orgEditorObject.clear(); + orgEditorObject.add(org); + target.add(getOrgUnitEditorContainer()); + } }; +// OrgTreeAssignablePanel orgPanel = new OrgTreeAssignablePanel( +// getPageBase().getMainPopupBodyId(), false, getPageBase()) { +// +// @Override +// protected void onItemSelect(SelectableBean selected, AjaxRequestTarget target) { +// closeModalWindow(target); +// tenantEditorObject.clear(); +// tenantEditorObject.add(selected.getValue()); +// target.add(getTenantEditorContainer()); } +// }; getPageBase().showMainPopup(orgPanel, new Model("Select organization"), target); }