Skip to content

Commit

Permalink
Merge Objects page extends PageAdminFocus
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Oct 18, 2016
1 parent cefdce6 commit 53c6212
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 39 deletions.
Expand Up @@ -17,7 +17,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:extend>
<div wicket:id="mergePanel"/>
<wicket:child />
</wicket:extend>
</body>
</html>
Expand Up @@ -15,20 +15,37 @@
*/
package com.evolveum.midpoint.web.page.admin.users;

import com.evolveum.midpoint.gui.api.component.tabs.PanelTab;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.component.FocusSummaryPanel;
import com.evolveum.midpoint.web.component.assignment.AssignmentEditorDto;
import com.evolveum.midpoint.web.component.objectdetails.AbstractObjectMainPanel;
import com.evolveum.midpoint.web.component.objectdetails.FocusMainPanel;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import com.evolveum.midpoint.web.page.admin.PageAdminFocus;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
import com.evolveum.midpoint.web.page.admin.services.PageServices;
import com.evolveum.midpoint.web.page.admin.users.component.MergeObjectsPanel;
import com.evolveum.midpoint.web.page.admin.users.component.UserSummaryPanel;
import com.evolveum.midpoint.web.page.admin.users.dto.FocusSubwrapperDto;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.extensions.markup.html.tabs.ITab;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;

import java.util.ArrayList;
import java.util.List;

/**
* Created by honchar.
Expand All @@ -43,7 +60,7 @@
@AuthorizationAction(actionUri = AuthorizationConstants.AUTZ_UI_MERGE_OBJECTS_URL,
label = "PageMergeObjects.auth.mergeObjects.label",
description = "PageMergeObjects.auth.mergeObjects.description") })
public class PageMergeObjects<F extends FocusType> extends PageAdmin {
public class PageMergeObjects<F extends FocusType> extends PageAdminFocus {
private static final String ID_MERGE_PANEL = "mergePanel";
private F mergeObject;
private F mergeWithObject;
Expand All @@ -55,23 +72,88 @@ public PageMergeObjects(F mergeObject, F mergeWithObject, Class<F> type){
this.mergeObject = mergeObject;
this.mergeWithObject = mergeWithObject;
this.type = type;
initLayout();

PageParameters parameters = new PageParameters();
parameters.add(OnePageParameterEncoder.PARAMETER, mergeObject.getOid());
getPageParameters().overwriteWith(parameters);


initialize(this.mergeObject.asPrismObject());
// initLayout();
}

@Override
protected AbstractObjectMainPanel<UserType> createMainPanel(String id){

return new FocusMainPanel<UserType>(id, getObjectModel(), new LoadableModel<List<AssignmentEditorDto>>() {
@Override
protected List<AssignmentEditorDto> load() {
return new ArrayList<>();
}
},
new LoadableModel<List<FocusSubwrapperDto<ShadowType>>>() {
@Override
protected List<FocusSubwrapperDto<ShadowType>> load() {
return new ArrayList<>();
}
}, this){
@Override
protected List<ITab> createTabs(final PageAdminObjectDetails<UserType> parentPage) {
List<ITab> tabs = new ArrayList<>();
tabs.add(
new PanelTab(parentPage.createStringResource("PageMergeObjects.tabTitle"), new VisibleEnableBehaviour()){

private static final long serialVersionUID = 1L;

@Override
public WebMarkupContainer createPanel(String panelId) {
return new MergeObjectsPanel(panelId, mergeObject, mergeWithObject, type, PageMergeObjects.this);
}
});
return tabs;
}
};
}
@Override
protected FocusSummaryPanel<UserType> createSummaryPanel(){
return new UserSummaryPanel(ID_SUMMARY_PANEL, getObjectModel());
}

@Override
protected Class getRestartResponsePage() {
return PageUsers.class;
}


// protected void initLayout(){
// if (mergeObject == null || StringUtils.isEmpty(mergeObject.getOid())
// || mergeWithObject == null || StringUtils.isEmpty(mergeWithObject.getOid())) {
// Label warningMessage = new Label(ID_MERGE_PANEL, createStringResource("PageMergeObjects.warningMessage"));
// warningMessage.setOutputMarkupId(true);
// add(warningMessage);
// } else {
// MergeObjectsPanel mergePanel = new MergeObjectsPanel(ID_MERGE_PANEL, mergeObject, mergeWithObject, type, PageMergeObjects.this);
// mergePanel.setOutputMarkupId(true);
// add(mergePanel);
// }
// }

protected UserType createNewObject(){
return new UserType();
}

@Override
protected Class getCompileTimeClass() {
return UserType.class;
}

protected void initLayout(){
if (mergeObject == null || StringUtils.isEmpty(mergeObject.getOid())
|| mergeWithObject == null || StringUtils.isEmpty(mergeWithObject.getOid())) {
Label warningMessage = new Label(ID_MERGE_PANEL, createStringResource("PageMergeObjects.warningMessage"));
warningMessage.setOutputMarkupId(true);
add(warningMessage);
} else {
MergeObjectsPanel mergePanel = new MergeObjectsPanel(ID_MERGE_PANEL, mergeObject, mergeWithObject, type, PageMergeObjects.this);
mergePanel.setOutputMarkupId(true);
add(mergePanel);
}
@Override
protected IModel<String> createPageTitleModel() {
return createStringResource("PageMergeObjects.title");
}

protected F createNewObject(){
return null;
@Override
public boolean isEditingFocus() {
return true;
}
}
Expand Up @@ -34,17 +34,19 @@
<div class="icon">
<i class="fa fa-arrow-right col-xs-1" style="font-size: 30px;"></i>
</div>
<div wicket:id="mergeResultPanelContainer">
<div wicket:id="mergeResultObjectDetailsPanel" class="col-xs-3"/>
</div>
</div>
<wicket:child/>

<div class="main-button-bar" style="padding-top: 20px;">
<span class="button-group">
<a class="btn btn-default" wicket:id="back"/>
</span>
<a class="btn btn-primary" wicket:id="switchDirection"/>
<a class="btn btn-primary" wicket:id="mergeDeltaPreview"/>
<a class="btn btn-primary" wicket:id="merge"/>
</div>
<!--<div class="main-button-bar" style="padding-top: 20px;">-->
<!--<span class="button-group">-->
<!--<a class="btn btn-default" wicket:id="back"/>-->
<!--</span>-->
<!--<a class="btn btn-primary" wicket:id="switchDirection"/>-->
<!--<a class="btn btn-primary" wicket:id="mergeDeltaPreview"/>-->
<!--<a class="btn btn-primary" wicket:id="merge"/>-->
<!--</div>-->
</form>
</wicket:panel>
Expand Up @@ -34,6 +34,8 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.SystemObjectsType;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;

Expand All @@ -53,6 +55,7 @@ public class MergeObjectsPanel<F extends FocusType> 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_MERGE_RESULT_PANEL_CONTAINER = "mergeResultPanelContainer";
private static final String ID_BACK_BUTTON = "back";
private static final String ID_SWITCH_DIRECTION_BUTTON = "switchDirection";
private static final String ID_MERGE_DELTA_PREVIEW_BUTTON = "mergeDeltaPreview";
Expand All @@ -62,6 +65,7 @@ public class MergeObjectsPanel<F extends FocusType> extends BasePanel{

private F mergeObject;
private F mergeWithObject;
private PrismObject<F> mergeResultObject;
private Class<F> type;
private PageBase pageBase;
private IModel<String> mergeTypeModel;
Expand Down Expand Up @@ -129,17 +133,16 @@ private void initLayout(){
DropDownChoicePanel mergeTypeSelect = new DropDownChoicePanel(ID_MERGE_TYPE_SELECTOR,
mergeTypeModel, mergeTypeChoicesModel);

// WebComponentUtil.createEnumPanel(MergeType.class,
// ID_MERGE_TYPE_SELECTOR, mergeTypeModel, this);
// mergeTypeSelect.add(new OnChangeAjaxBehavior() {
//
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
//// AssignmentCatalogPanel parentPanel = CatalogItemsPanel.this.findParent(AssignmentCatalogPanel.class);
//// parentPanel.addOrReplaceLayout();
//// target.add(parentPanel);
// }
// });
mergeTypeSelect.getBaseFormComponent().add(new OnChangeAjaxBehavior() {

@Override
protected void onUpdate(AjaxRequestTarget target) {
mergeResultObject = getMergeObjectsResult();
WebMarkupContainer resultObjectPanel = (WebMarkupContainer)get(ID_FORM).get(ID_MERGE_RESULT_PANEL_CONTAINER);
resultObjectPanel.addOrReplace(getMergeResultObjectPanel());
target.add(resultObjectPanel);
}
});
mergeTypeSelect.setOutputMarkupId(true);
mainForm.add(mergeTypeSelect);

Expand All @@ -153,7 +156,16 @@ private void initLayout(){
mergeWithObjectPanel.setOutputMarkupId(true);
mainForm.add(mergeWithObjectPanel);

PrismObject<F> mergeResultObject = getMergeObjectsResult();
mergeResultObject = getMergeObjectsResult();

WebMarkupContainer mergeResultPanelContainer = new WebMarkupContainer(ID_MERGE_RESULT_PANEL_CONTAINER);
mergeResultPanelContainer.setOutputMarkupId(true);
mainForm.add(mergeResultPanelContainer);
mergeResultPanelContainer.add(getMergeResultObjectPanel());
// initButtonPanel(mainForm);
}

private Component getMergeResultObjectPanel(){
Component mergeObjectsResultPanel;
if (mergeResultObject != null) {
mergeObjectsResultPanel = new MergeObjectDetailsPanel(ID_MERGE_RESULT_OBJECT_DETAILS_PANEL,
Expand All @@ -163,9 +175,7 @@ private void initLayout(){
pageBase.createStringResource("PageMergeObjects.noMergeResultObjectWarning"));
}
mergeObjectsResultPanel.setOutputMarkupId(true);
mainForm.add(mergeObjectsResultPanel);

initButtonPanel(mainForm);
return mergeObjectsResultPanel;
}

private void initButtonPanel(Form mainForm){
Expand Down
Expand Up @@ -3381,6 +3381,7 @@ ObjectDeltaOperationType.objectName=Object name
ObjectDeltaOperationType.executionResult=Execution result
PageMergeObjects.noMergeResultObjectWarning=Merge preview object wasn't found
PageMergeObjects.title=Merge objects
PageMergeObjects.tabTitle=Merge preview
PageMergeObjects.switchDirectionButton=Switch direction
PageMergeObjects.mergeButton=Merge
PageMergeObjects.mergeDeltaPreviewButton=Merge delta preview
Expand Down

0 comments on commit 53c6212

Please sign in to comment.