diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.html index bc9306fdcc1..4e68f1a32b3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.html @@ -17,9 +17,7 @@ -
- \ No newline at end of file diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.java index 3a296238b7a..d02b8ab2b89 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageMergeObjects.java @@ -30,13 +30,14 @@ public class PageMergeObjects extends PageBase { private static final String ID_MERGE_PANEL = "mergePanel"; private F mergeObject; private F mergeWithObject; - + private Class type; public PageMergeObjects(){ } - public PageMergeObjects(F mergeObject, F mergeWithObject){ + public PageMergeObjects(F mergeObject, F mergeWithObject, Class type){ this.mergeObject = mergeObject; this.mergeWithObject = mergeWithObject; + this.type = type; initLayout(); } @@ -47,7 +48,7 @@ private void initLayout(){ warningMessage.setOutputMarkupId(true); add(warningMessage); } else { - MergeObjectsPanel mergePanel = new MergeObjectsPanel(ID_MERGE_PANEL, mergeObject, mergeWithObject); + MergeObjectsPanel mergePanel = new MergeObjectsPanel(ID_MERGE_PANEL, mergeObject, mergeWithObject, type); mergePanel.setOutputMarkupId(true); add(mergePanel); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java index 8ffa133b651..1f073e78bc3 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/PageUsers.java @@ -431,7 +431,7 @@ private void deleteConfirmedPerformed(AjaxRequestTarget target) { getTable().clearCache(); } - private void mergePerformed(AjaxRequestTarget target, UserType selectedUser) { + private void mergePerformed(AjaxRequestTarget target, final UserType selectedUser) { List supportedTypes = new ArrayList<>(); supportedTypes.add(UserType.COMPLEX_TYPE); ObjectBrowserPanel panel = new ObjectBrowserPanel( @@ -440,9 +440,9 @@ private void mergePerformed(AjaxRequestTarget target, UserType selectedUser) { private static final long serialVersionUID = 1L; @Override - protected void addPerformed(AjaxRequestTarget target, QName type, List selected) { - super.addPerformed(target, type, selected); -// mergeConfirmedPerformed(selectedUser, ); + protected void onSelectPerformed(AjaxRequestTarget target, ObjectType user) { + hideMainPopup(target); + mergeConfirmedPerformed(selectedUser, (UserType) user, target); } }; @@ -451,6 +451,7 @@ protected void addPerformed(AjaxRequestTarget target, QName type, List selected) } private void mergeConfirmedPerformed(UserType mergeObject, UserType mergeWithObject, AjaxRequestTarget target) { + setResponsePage(new PageMergeObjects(mergeObject, mergeWithObject, UserType.class)); } private void unlockPerformed(AjaxRequestTarget target, UserType selectedUser) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectDetailsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectDetailsPanel.html new file mode 100644 index 00000000000..e82021b36ec --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectDetailsPanel.html @@ -0,0 +1,23 @@ + + + + +
+
+
+
+ diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectDetailsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectDetailsPanel.java new file mode 100644 index 00000000000..ee54d57650f --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectDetailsPanel.java @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2010-2016 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.web.page.admin.users.component; + +import com.evolveum.midpoint.gui.api.component.BasePanel; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.PrismReference; +import com.evolveum.midpoint.prism.path.ItemPath; +import com.evolveum.midpoint.web.component.prism.ObjectWrapper; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.model.IModel; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by honchar. + */ +public class MergeObjectDetailsPanel extends BasePanel { + private static final String ID_OBJECT_NAME = "objectName"; + private static final String ID_OBJECT_FULLNAME = "objectFullName"; + private static final String ID_OBJECT_ASSIGNMENTS_COUNT = "objectAssignmentsCount"; + private static final String ID_OBJECT_PROJECTIONS_COUNT = "objectProjectionsCount"; + + private F mergeObject; + + public MergeObjectDetailsPanel(String id, F mergeObject, Class type){ + super(id); + this.mergeObject = mergeObject; + initLayout(type); + } + + private void initLayout(Class type){ + setOutputMarkupId(true); + Label nameLabel = new Label(ID_OBJECT_NAME, mergeObject.getName()); + add(nameLabel); + + Label fullNameLabel; + if (UserType.class.equals(type)){ + fullNameLabel = new Label(ID_OBJECT_FULLNAME, ((UserType) mergeObject).getFullName()); + } else { + fullNameLabel = new Label(ID_OBJECT_FULLNAME, ((AbstractRoleType) mergeObject).getDisplayName()); + } + add(fullNameLabel); + + Label assignmentsCount = new Label(ID_OBJECT_ASSIGNMENTS_COUNT, getAssignmentsCount()); + add(assignmentsCount); + + Label projectionsCount = new Label(ID_OBJECT_PROJECTIONS_COUNT, getProjectionsCount()); + add(projectionsCount); + + } + + private int getProjectionsCount(){ + if (mergeObject == null){ + return 0; + } + List referenceTypes = mergeObject.getLinkRef(); + return referenceTypes == null ? 0 : referenceTypes.size(); + } + + private int getAssignmentsCount(){ + return mergeObject != null ? + (mergeObject.getAssignment() != null ? mergeObject.getAssignment().size() : 0) + : 0; + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.html index 71ce6922c3a..56a17addf7e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.html @@ -1,10 +1,47 @@ - - - - - - - + + - - \ No newline at end of file + + +
+ + + +
+
+
+
+ +
+
+
+
+ +
+ +
+ + + + + + + + + + + diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.java index 47bb7dbb18f..d0594eb370e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/users/component/MergeObjectsPanel.java @@ -22,11 +22,40 @@ * Created by honchar. */ public class MergeObjectsPanel extends BasePanel{ + private static final String ID_MERGE_OBJECT_DETAILS_PANEL = "mergeObjectDetailsPanel"; + private static final String ID_MERGE_WITH_OBJECT_DETAILS_PANEL = "mergeWithObjectDetailsPanel"; + private static final String ID_MERGE_RESULT_OBJECT_DETAILS_PANEL = "mergeResultObjectDetailsPanel"; + private static final String ID_PLUS_ICON = "mergeObjectDetailsPanel"; + private static final String ID_EQUAL_ICON = "mergeObjectDetailsPanel"; + + private F mergeObject; + private F mergeWithObject; + private Class type; + public MergeObjectsPanel(String id){ super(id); } - public MergeObjectsPanel(String id, F mergeObject, F mergeWithObject){ + public MergeObjectsPanel(String id, F mergeObject, F mergeWithObject, Class type){ super(id); + this.mergeObject = mergeObject; + this.mergeWithObject = mergeWithObject; + this.type = type; + initLayout(); + } + + private void initLayout(){ + MergeObjectDetailsPanel mergeObjectPanel = new MergeObjectDetailsPanel(ID_MERGE_OBJECT_DETAILS_PANEL, + mergeObject, type); + mergeObjectPanel.setOutputMarkupId(true); + add(mergeObjectPanel); + + MergeObjectDetailsPanel mergeWithObjectPanel = new MergeObjectDetailsPanel(ID_MERGE_WITH_OBJECT_DETAILS_PANEL, + mergeWithObject, type); + mergeWithObjectPanel.setOutputMarkupId(true); + add(mergeWithObjectPanel); + + + } }