From a1def645987cd624f1bbb24ea9d33fa6bffb3ea1 Mon Sep 17 00:00:00 2001 From: skublik Date: Tue, 10 Jul 2018 13:36:03 +0200 Subject: [PATCH] creating MultivalueContainerDetailsPanel class and using wicket:fragment --- .../MultivalueContainerDetailsPanel.html | 26 +++ .../MultivalueContainerDetailsPanel.java | 134 ++++++++++++ .../MultivalueContainerListPanel.html | 3 +- .../MultivalueContainerListPanel.java | 23 ++- .../AbstractRoleAssignmentPanel.html | 12 +- .../AbstractRoleAssignmentPanel.java | 16 +- .../component/assignment/AssignmentPanel.html | 7 +- .../component/assignment/AssignmentPanel.java | 190 ++++++++++++++---- .../assignment/InducedEntitlementsPanel.java | 3 +- .../assignment/InducementsPanel.java | 3 +- ... MultivalueContainerListDataProvider.java} | 6 +- 11 files changed, 357 insertions(+), 66 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java rename gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/{ContainerListDataProvider.java => MultivalueContainerListDataProvider.java} (92%) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html new file mode 100644 index 00000000000..83c7737d17b --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.html @@ -0,0 +1,26 @@ + + + + +
+
+
+ + + + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java new file mode 100644 index 00000000000..30b225d260a --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerDetailsPanel.java @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.evolveum.midpoint.gui.impl.component; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.namespace.QName; + +import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.model.AbstractReadOnlyModel; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; + +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.gui.api.component.DisplayNamePanel; +import com.evolveum.midpoint.gui.api.util.WebComponentUtil; +import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; +import com.evolveum.midpoint.prism.Containerable; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.task.api.Task; +import com.evolveum.midpoint.util.logging.Trace; +import com.evolveum.midpoint.util.logging.TraceManager; +import com.evolveum.midpoint.web.component.assignment.AbstractAssignmentDetailsPanel; +import com.evolveum.midpoint.web.component.assignment.AssignmentsUtil; +import com.evolveum.midpoint.web.component.form.Form; +import com.evolveum.midpoint.web.component.prism.ContainerValuePanel; +import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper; +import com.evolveum.midpoint.web.component.prism.ContainerWrapper; +import com.evolveum.midpoint.web.component.prism.ItemVisibility; +import com.evolveum.midpoint.web.component.prism.ItemWrapper; +import com.evolveum.midpoint.web.component.prism.PrismContainerPanel; +import com.evolveum.midpoint.web.component.prism.PropertyOrReferenceWrapper; +import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel; +import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.AssignmentType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ConstructionType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyRuleType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemConfigurationType; + +/** + * @author skublik + */ + +public abstract class MultivalueContainerDetailsPanel extends BasePanel> { + private static final long serialVersionUID = 1L; + + private final static String ID_DISPLAY_NAME = "displayName"; +// private final static String ID_ACTIVATION_PANEL = "activationPanel"; + private final static String ID_BASIC_PANEL = "basicPanel"; + protected final static String ID_SPECIFIC_CONTAINERS = "specificContainers"; + + public MultivalueContainerDetailsPanel(String id, IModel> assignmentModel){ + super(id, assignmentModel); + } + + @Override + protected void onInitialize() { + super.onInitialize(); + initLayout(); + setOutputMarkupId(true); + } + + protected abstract IModel createDisplayNameModel(); + + protected QName getRelationForDisplayNamePanel() { + return null; + } + + protected IModel getKindIntentLabelModelForDisplayNamePanel(){ + return Model.of(""); + } + + protected void initLayout(){ + + final IModel displayNameModel = createDisplayNameModel(); + + DisplayNamePanel displayNamePanel = new DisplayNamePanel(ID_DISPLAY_NAME, displayNameModel) { + + @Override + protected QName getRelation() { + return getRelationForDisplayNamePanel(); + } + + @Override + protected IModel getKindIntentLabelModel() { + return getKindIntentLabelModelForDisplayNamePanel(); + } + + }; + + displayNamePanel.setOutputMarkupId(true); + add(displayNamePanel); + + add(getBasicContainerValuePanel(ID_BASIC_PANEL)); + + WebMarkupContainer specificContainers = new WebMarkupContainer(ID_SPECIFIC_CONTAINERS); + specificContainers.setOutputMarkupId(true); + add(specificContainers); + + createSpecificContainers(specificContainers); + } + + protected abstract void createSpecificContainers(WebMarkupContainer specificContainers); + + protected ContainerValuePanel getBasicContainerValuePanel(String idPanel){ + Form form = new Form<>("form"); + ItemPath itemPath = getModelObject().getPath(); + return new ContainerValuePanel(idPanel, getModel(), true, form, + itemWrapper -> getBasicTabVisibity(itemWrapper, itemPath), getPageBase()); + } + + protected ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper, ItemPath parentAssignmentPath) { + return ItemVisibility.AUTO; + } + +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.html index ade32582bc2..9565d4b5d6d 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.html @@ -18,7 +18,7 @@
-
+
-
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java index 20e2d8a149d..e42a3a05213 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/impl/component/MultivalueContainerListPanel.java @@ -19,9 +19,11 @@ import java.util.List; import org.apache.wicket.AttributeModifier; +import org.apache.wicket.MarkupContainer; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; @@ -44,7 +46,7 @@ import com.evolveum.midpoint.web.component.prism.ContainerWrapper; import com.evolveum.midpoint.web.component.prism.ContainerWrapperFactory; import com.evolveum.midpoint.web.component.prism.ValueStatus; -import com.evolveum.midpoint.web.component.util.ContainerListDataProvider; +import com.evolveum.midpoint.web.component.util.MultivalueContainerListDataProvider; import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; import com.evolveum.midpoint.web.session.PageStorage; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; @@ -72,14 +74,11 @@ public abstract class MultivalueContainerListPanel exte private static final Trace LOGGER = TraceManager.getTrace(MultivalueContainerListPanel.class); protected boolean itemDetailsVisible; - private List> detailsPanelItemsList = new ArrayList<>(); public MultivalueContainerListPanel(String id, IModel> model) { super(id, model); } - protected abstract void initPaging(); - @Override protected void onInitialize() { super.onInitialize(); @@ -96,6 +95,12 @@ private void initLayout() { setOutputMarkupId(true); } + + protected abstract void initPaging(); + + public void setItemDetailsVisible(boolean itemDetailsVisible) { + this.itemDetailsVisible = itemDetailsVisible; + } private void initListPanel() { WebMarkupContainer itemsContainer = new WebMarkupContainer(ID_ITEMS); @@ -126,10 +131,8 @@ public boolean isVisible() { }); itemsContainer.add(newObjectIcon); - WebMarkupContainer searchContainer = new WebMarkupContainer(ID_SEARCH_ITEM_PANEL); - itemsContainer.add(searchContainer); - createSearch(searchContainer); - createCustomLayout(itemsContainer); + itemsContainer.add(getSearchPanel(ID_SEARCH_ITEM_PANEL)); + //createCustomLayout(itemsContainer); itemsContainer.add(new VisibleEnableBehaviour() { @@ -143,13 +146,13 @@ public boolean isVisible() { } - protected abstract void createSearch(WebMarkupContainer searchContainer); + protected abstract Fragment getSearchPanel(String contentAreaId); protected abstract boolean enableActionNewObject(); private BoxedTablePanel> initAssignmentTable() { - ContainerListDataProvider containersProvider = new ContainerListDataProvider(this, new PropertyModel<>(getModel(), "values")) { + MultivalueContainerListDataProvider containersProvider = new MultivalueContainerListDataProvider(this, new PropertyModel<>(getModel(), "values")) { private static final long serialVersionUID = 1L; @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.html index 71fea777194..2582b55b79f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/AbstractRoleAssignmentPanel.html @@ -17,7 +17,17 @@ -
+
+
+ +
+ +
+
+
+
+
+ \ No newline at end of file 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 8263dcf99f7..b5183ec7d89 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 @@ -21,7 +21,9 @@ import java.util.stream.Collectors; import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils; +import com.evolveum.midpoint.gui.impl.component.MultivalueContainerDetailsPanel; import com.evolveum.midpoint.gui.impl.component.MultivalueContainerListPanel; +import com.evolveum.midpoint.prism.Containerable; import com.evolveum.midpoint.prism.PrismContainerValue; import com.evolveum.midpoint.prism.PrismObject; import com.evolveum.midpoint.prism.path.ItemPath; @@ -31,7 +33,7 @@ import com.evolveum.midpoint.web.component.prism.*; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import org.apache.commons.lang.StringUtils; -import org.apache.wicket.AttributeModifier; +import org.apache.wicket.MarkupContainer; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; @@ -40,22 +42,19 @@ import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.model.AbstractReadOnlyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; import com.evolveum.midpoint.gui.api.GuiStyleConstants; import com.evolveum.midpoint.gui.api.component.BasePanel; import com.evolveum.midpoint.gui.api.page.PageBase; import com.evolveum.midpoint.gui.api.util.WebComponentUtil; -import com.evolveum.midpoint.prism.query.ObjectPaging; import com.evolveum.midpoint.prism.query.ObjectQuery; import com.evolveum.midpoint.security.api.AuthorizationConstants; import com.evolveum.midpoint.task.api.Task; -import com.evolveum.midpoint.web.component.AjaxButton; -import com.evolveum.midpoint.web.component.AjaxIconButton; import com.evolveum.midpoint.web.component.data.BoxedTablePanel; import com.evolveum.midpoint.web.component.data.column.CheckBoxHeaderColumn; import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction; @@ -65,34 +64,33 @@ import com.evolveum.midpoint.web.component.data.column.LinkColumn; import com.evolveum.midpoint.web.component.form.Form; import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem; -import com.evolveum.midpoint.web.component.util.ContainerListDataProvider; -import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour; +import com.evolveum.midpoint.web.component.util.MultivalueContainerListDataProvider; +import com.evolveum.midpoint.web.model.ContainerWrapperFromObjectWrapperModel; import com.evolveum.midpoint.web.session.AssignmentsTabStorage; import com.evolveum.midpoint.web.session.PageStorage; -import com.evolveum.midpoint.web.session.UserProfileStorage; import com.evolveum.midpoint.web.session.UserProfileStorage.TableId; import javax.xml.datatype.XMLGregorianCalendar; +import javax.xml.namespace.QName; public abstract class AssignmentPanel extends BasePanel> { private static final long serialVersionUID = 1L; - public static final String ID_ASSIGNMENTS = "assignments"; - private static final String ID_NEW_ASSIGNMENT_BUTTON = "newAssignmentButton"; - private static final String ID_ASSIGNMENTS_TABLE = "assignmentsTable"; - public static final String ID_ASSIGNMENTS_DETAILS = "assignmentsDetails"; - public static final String ID_ASSIGNMENT_DETAILS = "assignmentDetails"; - - public static final String ID_DETAILS = "details"; - - private final static String ID_DONE_BUTTON = "doneButton"; - private final static String ID_CANCEL_BUTTON = "cancelButton"; + private static final String ID_ASSIGNMENTS = "assignments"; +// private static final String ID_NEW_ASSIGNMENT_BUTTON = "newAssignmentButton"; +// private static final String ID_ASSIGNMENTS_TABLE = "assignmentsTable"; +// private static final String ID_ASSIGNMENTS_DETAILS = "assignmentsDetails"; +// private static final String ID_ASSIGNMENT_DETAILS = "assignmentDetails"; +// +// private static final String ID_DETAILS = "details"; +// +// private final static String ID_DONE_BUTTON = "doneButton"; +// private final static String ID_CANCEL_BUTTON = "cancelButton"; private static final Trace LOGGER = TraceManager.getTrace(AssignmentPanel.class); - protected boolean assignmentDetailsVisible; - private MultivalueContainerListPanel panel; + private MultivalueContainerListPanel multivalueContainerListPanel; private List> detailsPanelAssignmentsList = new ArrayList<>(); private IModel> model; @@ -109,7 +107,7 @@ protected void onInitialize() { private void initLayout() { - this.panel = new MultivalueContainerListPanel(ID_ASSIGNMENTS, model) { + this.multivalueContainerListPanel = new MultivalueContainerListPanel(ID_ASSIGNMENTS, model) { private static final long serialVersionUID = 1L; @@ -173,8 +171,8 @@ protected List> postSearch( } @Override - protected void createSearch(WebMarkupContainer assignmentsContainer) { - initCustomLayout(assignmentsContainer); + protected Fragment getSearchPanel(String contentAreaId) { + return getCustomSearchPanel(contentAreaId); } @Override @@ -183,7 +181,7 @@ protected PageStorage getPageStorage() { } }; - add(panel); + add(multivalueContainerListPanel); // initListPanel(); @@ -376,13 +374,13 @@ public void populateItem(Item> assignmentDetailsView = new ListView>(ID_ASSIGNMENTS_DETAILS, + ListView> assignmentDetailsView = new ListView>(MultivalueContainerListPanel.ID_ITEMS_DETAILS, new AbstractReadOnlyModel>>() { private static final long serialVersionUID = 1L; @@ -397,11 +395,51 @@ public List> getObject() { @Override protected void populateItem(ListItem> item) { Form form = this.findParent(Form.class); - AbstractAssignmentDetailsPanel details = createDetailsPanel(ID_ASSIGNMENT_DETAILS, form, item.getModel()); - item.add(details); - details.setOutputMarkupId(true); + MultivalueContainerDetailsPanel detailsPanel = new MultivalueContainerDetailsPanel(MultivalueContainerListPanel.ID_ITEM_DETAILS, item.getModel()) { + + @Override + protected IModel createDisplayNameModel() { + return getDisplayModel(item.getModelObject().getContainerValue().getValue()); + } + + @Override + protected void createSpecificContainers(WebMarkupContainer specificContainers) { + createCustomSpecificContainers(specificContainers); + } + + @Override + protected QName getRelationForDisplayNamePanel() { + AssignmentType assignment = item.getModelObject().getContainerValue().getValue(); + if (assignment.getTargetRef() != null) { + return assignment.getTargetRef().getRelation(); + } else { + return null; + } + } + + @Override + protected IModel getKindIntentLabelModelForDisplayNamePanel() { + AssignmentType assignment = item.getModelObject().getContainerValue().getValue(); + if (assignment.getConstruction() != null){ + return createStringResource("DisplayNamePanel.kindIntentLabel", assignment.getConstruction().getKind(), + assignment.getConstruction().getIntent()); + } + return Model.of(); + } + + @Override + protected ItemVisibility getBasicTabVisibity(ItemWrapper itemWrapper, ItemPath parentAssignmentPath) { + PrismContainerValue prismContainerValue = item.getModelObject().getContainerValue(); + ItemPath assignmentPath = getModelObject().getContainerValue().getValue().asPrismContainerValue().getPath(); + return getAssignmentBasicTabVisibity(itemWrapper, parentAssignmentPath, assignmentPath, prismContainerValue); + } + + }; + item.add(detailsPanel); + detailsPanel.setOutputMarkupId(true); } + }; @@ -409,6 +447,71 @@ protected void populateItem(ListItem> item details.add(assignmentDetailsView); } + + private ItemVisibility getAssignmentBasicTabVisibity(ItemWrapper itemWrapper, ItemPath parentAssignmentPath, ItemPath assignmentPath, PrismContainerValue prismContainerValue) { + + if (itemWrapper.getPath().equals(assignmentPath.append(AssignmentType.F_METADATA))){ + return ItemVisibility.AUTO; + } + AssignmentType assignment = prismContainerValue.getValue(); + ObjectReferenceType targetRef = assignment.getTargetRef(); + List pathsToHide = new ArrayList<>(); + QName targetType = null; + if (targetRef != null) { + targetType = targetRef.getType(); + } + pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_TARGET_REF)); + + 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)); + } + if (AssignmentsUtil.isPolicyRuleAssignment(prismContainerValue.asContainerable())){ + pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_FOCUS_TYPE)); + } + + if (assignment.getConstruction() == null) { + pathsToHide.add(parentAssignmentPath.append(AssignmentType.F_CONSTRUCTION)); + } + 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())) { + return ItemVisibility.AUTO; + } else { + return ItemVisibility.HIDDEN; + } + } + + private IModel getDisplayModel(AssignmentType assignment){ + final AbstractReadOnlyModel displayNameModel = new AbstractReadOnlyModel() { + + private static final long serialVersionUID = 1L; + + @Override + public C getObject() { + if (assignment.getTargetRef() != null) { + Task task = getPageBase().createSimpleTask("Load target"); + com.evolveum.midpoint.schema.result.OperationResult result = task.getResult(); + return (C) WebModelServiceUtils.loadObject(assignment.getTargetRef(), getPageBase(), task, result).asObjectable(); + } + if (assignment.getConstruction() != null && assignment.getConstruction().getResourceRef() != null) { + Task task = getPageBase().createSimpleTask("Load resource"); + com.evolveum.midpoint.schema.result.OperationResult result = task.getResult(); + return (C) WebModelServiceUtils.loadObject(assignment.getConstruction().getResourceRef(), getPageBase(), task, result).asObjectable(); + } else if (assignment.getPersonaConstruction() != null) { + return (C) assignment.getPersonaConstruction(); + } else if (assignment.getPolicyRule() !=null) { + return (C) assignment.getPolicyRule(); + } + + return null; + } + + }; + return displayNameModel; + } // protected ContainerListDataProvider getAssignmentListProvider() { // return (ContainerListDataProvider) getAssignmentTable().getDataTable().getDataProvider(); @@ -418,11 +521,14 @@ protected void populateItem(ListItem> item // return (BoxedTablePanel>) get(createComponentPath(ID_ASSIGNMENTS, ID_ASSIGNMENTS_TABLE)); // } + protected void createCustomSpecificContainers(WebMarkupContainer specificContainers) { + + } protected abstract AbstractAssignmentDetailsPanel createDetailsPanel(String idAssignmentDetails, Form form, IModel> model); private List> getSelectedAssignments() { - BoxedTablePanel> assignemntTable = this.panel.getItemTable(); - ContainerListDataProvider assignmentProvider = (ContainerListDataProvider) assignemntTable.getDataTable() + BoxedTablePanel> assignemntTable = this.multivalueContainerListPanel.getItemTable(); + MultivalueContainerListDataProvider assignmentProvider = (MultivalueContainerListDataProvider) assignemntTable.getDataTable() .getDataProvider(); return assignmentProvider.getAvailableData().stream().filter(a -> a.isSelected()).collect(Collectors.toList()); } @@ -490,21 +596,21 @@ public void onClick(AjaxRequestTarget target) { } protected void assignmentDetailsPerformed(AjaxRequestTarget target, IModel> rowModel) { - assignmentDetailsVisible = true; + this.multivalueContainerListPanel.setItemDetailsVisible(true); detailsPanelAssignmentsList.clear(); detailsPanelAssignmentsList.add(rowModel.getObject()); rowModel.getObject().setSelected(false); - target.add(AssignmentPanel.this); + target.add(multivalueContainerListPanel); } protected void assignmentDetailsPerformed(AjaxRequestTarget target, List> rowModel) { - assignmentDetailsVisible = true; + this.multivalueContainerListPanel.setItemDetailsVisible(true); detailsPanelAssignmentsList.clear(); detailsPanelAssignmentsList.addAll(rowModel); rowModel.forEach(assignmentTypeContainerValueWrapper -> { assignmentTypeContainerValueWrapper.setSelected(false); }); - target.add(AssignmentPanel.this); + target.add(multivalueContainerListPanel); } protected abstract TableId getCustomTableId(); @@ -512,7 +618,7 @@ protected void assignmentDetailsPerformed(AjaxRequestTarget target, List> toDelete) { @@ -521,7 +627,7 @@ protected void deleteAssignmentPerformed(AjaxRequestTarget target, List { if (value.getStatus() == ValueStatus.ADDED) { - ContainerWrapper wrapper = AssignmentPanel.this.getModelObject(); + ContainerWrapper wrapper = multivalueContainerListPanel.getModelObject(); wrapper.getValues().remove(value); } else { value.setStatus(ValueStatus.DELETED); @@ -543,7 +649,7 @@ protected ContainerValueWrapper createNewAssignmentContainerValu } protected WebMarkupContainer getAssignmentContainer() { - return this.panel.getItemContainer(); + return this.multivalueContainerListPanel.getItemContainer(); } protected PageBase getParentPage() { @@ -597,21 +703,21 @@ private IModel getActivationLabelModel(ContainerValueWrapper form, IModel> model) { - return new InducedEntitlementDetailsPanel(ID_ASSIGNMENT_DETAILS, form, model); + return new InducedEntitlementDetailsPanel(idAssignmentDetails, form, model); } @Override diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java index 49df36718c7..90103893c60 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/assignment/InducementsPanel.java @@ -15,6 +15,7 @@ */ package com.evolveum.midpoint.web.component.assignment; +import com.evolveum.midpoint.gui.impl.component.MultivalueContainerListPanel; import com.evolveum.midpoint.prism.query.ObjectPaging; import com.evolveum.midpoint.web.component.form.Form; import com.evolveum.midpoint.web.component.prism.ContainerValueWrapper; @@ -64,6 +65,6 @@ protected boolean showAllAssignmentsVisible(){ @Override protected InducementDetailsPanel createDetailsPanel(String idAssignmentDetails, Form form, IModel> model) { - return new InducementDetailsPanel(ID_ASSIGNMENT_DETAILS, form, model); + return new InducementDetailsPanel(idAssignmentDetails, form, model); } } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/ContainerListDataProvider.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/MultivalueContainerListDataProvider.java similarity index 92% rename from gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/ContainerListDataProvider.java rename to gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/MultivalueContainerListDataProvider.java index 6fc898d1a8e..fdbe300ed82 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/ContainerListDataProvider.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/MultivalueContainerListDataProvider.java @@ -42,17 +42,17 @@ /** * @author katkav */ -public class ContainerListDataProvider extends BaseSortableDataProvider> { +public class MultivalueContainerListDataProvider extends BaseSortableDataProvider> { private IModel>> model; private boolean sortable; // just to ensure backward compatibility with existing usages - public ContainerListDataProvider(Component component, IModel>> model) { + public MultivalueContainerListDataProvider(Component component, IModel>> model) { this(component, model, false); } - public ContainerListDataProvider(Component component, IModel>> model, boolean sortable) { + public MultivalueContainerListDataProvider(Component component, IModel>> model, boolean sortable) { super(component); Validate.notNull(model);