Skip to content

Commit

Permalink
RW: Fixed 'required' flag on mapping target. Added refreshing of issu…
Browse files Browse the repository at this point in the history
…e list at various places.
  • Loading branch information
mederly committed Jun 9, 2016
1 parent cd0d83c commit 7f81b66
Show file tree
Hide file tree
Showing 12 changed files with 83 additions and 39 deletions.
Expand Up @@ -23,6 +23,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
import org.apache.wicket.feedback.ContainerFeedbackMessageFilter;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.TextField;
Expand All @@ -46,17 +47,18 @@ public class TextFormGroup extends BasePanel<String> {

public TextFormGroup(String id, IModel<String> value, IModel<String> label, String labelSize, String textSize,
boolean required) {
this(id, value, label, null, false, labelSize, textSize, required);
this(id, value, label, null, false, labelSize, textSize, required, required);
}

public TextFormGroup(String id, IModel<String> value, IModel<String> label, String tooltipKey, boolean isTooltipInModel, String labelSize,
String textSize, boolean required) {
String textSize, boolean required, boolean markAsRequired) {
super(id, value);

initLayout(label, tooltipKey, isTooltipInModel, labelSize, textSize, required);
initLayout(label, tooltipKey, isTooltipInModel, labelSize, textSize, required, markAsRequired);
}

private void initLayout(IModel<String> label, final String tooltipKey, boolean isTooltipInModal, String labelSize, String textSize, final boolean required) {
private void initLayout(IModel<String> label, final String tooltipKey, boolean isTooltipInModal, String labelSize, String textSize, final boolean required,
final boolean markAsRequired) {
WebMarkupContainer labelContainer = new WebMarkupContainer(ID_LABEL_CONTAINER);
add(labelContainer);

Expand Down Expand Up @@ -90,7 +92,7 @@ public boolean isVisible() {
requiredContainer.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return required;
return markAsRequired;
}
});
labelContainer.add(requiredContainer);
Expand All @@ -105,8 +107,7 @@ public boolean isVisible() {
text.setLabel(label);
textWrapper.add(text);

FeedbackPanel feedback = new FeedbackPanel(ID_FEEDBACK, new ComponentFeedbackMessageFilter(text));
feedback.setFilter(new ComponentFeedbackMessageFilter(text));
FeedbackPanel feedback = new FeedbackPanel(ID_FEEDBACK, new ContainerFeedbackMessageFilter(this));
feedback.setOutputMarkupId(true);
textWrapper.add(feedback);
}
Expand Down
Expand Up @@ -16,10 +16,12 @@

package com.evolveum.midpoint.web.component.wizard;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.resources.PageResourceWizard;
import org.apache.wicket.Session;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.wizard.*;
import org.apache.wicket.markup.html.form.Form;
Expand Down Expand Up @@ -116,8 +118,13 @@ public boolean isEnabled() {
AjaxSubmitButton validate = new AjaxSubmitButton(ID_VALIDATE) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
Session.get().getFeedbackMessages().clear(); // TODO - ok?
((PageResourceWizard) getPage()).refreshIssues(target);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.add(((PageBase) getPage()).getFeedbackPanel());
}
};
validate.add(showInFullWizardMode);
add(validate);
Expand All @@ -130,6 +137,11 @@ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
activeStep.applyState();
}
}

@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.add(((PageBase) getPage()).getFeedbackPanel());
}
};
save.add(showInFullWizardMode);
add(save);
Expand Down
Expand Up @@ -423,7 +423,7 @@ protected ResourceAttributeDefinitionType createNewEmptyItem(){

@Override
protected void performAddValueHook(AjaxRequestTarget target, ResourceAttributeDefinitionType added) {
//editPerformed(target, added);
parentPage.refreshIssues(target);
}

@Override
Expand All @@ -439,6 +439,7 @@ protected boolean buttonsDisabled(){
@Override
protected void performRemoveValueHook(AjaxRequestTarget target, ListItem<ResourceAttributeDefinitionType> item) {
resetThirdRowContainer(target);
parentPage.refreshIssues(target);
}
};
editorAttributes.setOutputMarkupId(true);
Expand Down Expand Up @@ -472,7 +473,7 @@ protected ResourceObjectAssociationType createNewEmptyItem() {

@Override
protected void performAddValueHook(AjaxRequestTarget target, ResourceObjectAssociationType added) {
//editPerformed(target, added);
parentPage.refreshIssues(target);
}

@Override
Expand All @@ -488,6 +489,7 @@ protected boolean buttonsDisabled(){
@Override
protected void performRemoveValueHook(AjaxRequestTarget target, ListItem<ResourceObjectAssociationType> item) {
resetThirdRowContainer(target);
parentPage.refreshIssues(target);
}
};
editorAssociations.setOutputMarkupId(true);
Expand Down
Expand Up @@ -59,6 +59,7 @@
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.*;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.model.AbstractReadOnlyModel;
Expand Down Expand Up @@ -497,7 +498,17 @@ protected void editPerformed(AjaxRequestTarget target, SynchronizationReactionTy
reactionEditPerformed(target, object);
}

@Override
@Override
protected void performAddValueHook(AjaxRequestTarget target, SynchronizationReactionType added) {
parentPage.refreshIssues(target);
}

@Override
protected void performRemoveValueHook(AjaxRequestTarget target, ListItem<SynchronizationReactionType> item) {
parentPage.refreshIssues(target);
}

@Override
protected boolean buttonsDisabled(){
return !isAnySelected();
}
Expand Down
Expand Up @@ -40,6 +40,7 @@
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior;
import com.evolveum.midpoint.web.page.admin.resources.PageResourceWizard;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -319,12 +320,14 @@ protected MappingType createNewEmptyItem(){
protected void performAddValueHook(AjaxRequestTarget target, MappingType added) {
target.add(parentStep.getAssociationList());
target.add(parentStep.getAttributeList()); // because of marking duplicates
((PageResourceWizard) getPageBase()).refreshIssues(target);
}

@Override
protected void performRemoveValueHook(AjaxRequestTarget target, ListItem<MappingType> item) {
target.add(parentStep.getAssociationList());
target.add(parentStep.getAttributeList()); // because of marking duplicates
((PageResourceWizard) getPageBase()).refreshIssues(target);
}

@Override
Expand Down
Expand Up @@ -39,6 +39,7 @@
import com.evolveum.midpoint.web.component.wizard.resource.component.schemahandling.modal.MappingEditorDialog;
import com.evolveum.midpoint.web.component.wizard.resource.dto.MappingTypeDto;
import com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnChangeAjaxFormUpdatingBehavior;
import com.evolveum.midpoint.web.page.admin.resources.PageResourceWizard;
import com.evolveum.midpoint.web.page.admin.resources.PageResources;
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -361,12 +362,14 @@ protected MappingType createNewEmptyItem(){
protected void performAddValueHook(AjaxRequestTarget target, MappingType added) {
target.add(parentStep.getAttributeList());
target.add(parentStep.getAssociationList()); // because of marking duplicates
((PageResourceWizard) getPageBase()).refreshIssues(target);
}

@Override
protected void performRemoveValueHook(AjaxRequestTarget target, ListItem<MappingType> item) {
target.add(parentStep.getAttributeList());
target.add(parentStep.getAssociationList()); // because of marking duplicates
((PageResourceWizard) getPageBase()).refreshIssues(target);
}

@Override
Expand Down
Expand Up @@ -276,12 +276,12 @@ private void initLimitationBody(final WebMarkupContainer body, ListItem<Property
body.add(modify);

TextFormGroup minOccurs = new TextFormGroup(ID_MIN_OCCURS, new PropertyModel<String>(item.getModelObject(), PropertyLimitationsTypeDto.F_LIMITATION + ".minOccurs"),
createStringResource("LimitationsEditorDialog.label.minOccurs"), "SchemaHandlingStep.limitations.tooltip.minOccurs", true, ID_LABEL_SIZE, ID_INPUT_SIZE, false);
createStringResource("LimitationsEditorDialog.label.minOccurs"), "SchemaHandlingStep.limitations.tooltip.minOccurs", true, ID_LABEL_SIZE, ID_INPUT_SIZE, false, false);
minOccurs.getField().add(prepareAjaxOnComponentTagUpdateBehavior());
body.add(minOccurs);

TextFormGroup maxOccurs = new TextFormGroup(ID_MAX_OCCURS, new PropertyModel<String>(item.getModelObject(), PropertyLimitationsTypeDto.F_LIMITATION + ".maxOccurs"),
createStringResource("LimitationsEditorDialog.label.maxOccurs"), "SchemaHandlingStep.limitations.tooltip.maxOccurs", true, ID_LABEL_SIZE, ID_INPUT_SIZE, false);
createStringResource("LimitationsEditorDialog.label.maxOccurs"), "SchemaHandlingStep.limitations.tooltip.maxOccurs", true, ID_LABEL_SIZE, ID_INPUT_SIZE, false, false);
maxOccurs.getField().add(prepareAjaxOnComponentTagUpdateBehavior());
body.add(maxOccurs);

Expand Down
Expand Up @@ -66,7 +66,6 @@
</div>

<div class="form-group" wicket:id="target" />
<span class="text-danger" wicket:id="feedback"/>

<div class="form-group" wicket:id="expressionType" />
<div class="form-group" wicket:id="expressionLanguage" />
Expand Down
Expand Up @@ -23,11 +23,12 @@

import com.evolveum.midpoint.gui.api.model.NonEmptyModel;
import com.evolveum.midpoint.util.exception.CommonException;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.form.*;
import com.evolveum.midpoint.web.page.admin.resources.PageResourceWizard;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.feedback.ContainerFeedbackMessageFilter;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.DropDownChoice;
Expand Down Expand Up @@ -153,6 +154,11 @@ public void updateModel(AjaxRequestTarget target, IModel<MappingType> mapping, b
model.setObject(new MappingTypeDto(mapping.getObject(), getPageBase().getPrismContext()));
inputModel = mapping;
target.add(getContent());

if (initialized) {
((WebMarkupContainer) get(getContentId())).removeAll();
initialized = false;
}
}

public void updateModel(AjaxRequestTarget target, MappingType mapping, boolean isTargetRequired) {
Expand All @@ -166,6 +172,11 @@ public void updateModel(AjaxRequestTarget target, MappingType mapping, boolean i
}

target.add(getContent());

if (initialized) {
((WebMarkupContainer) get(getContentId())).removeAll();
initialized = false;
}
}

public StringResourceModel createStringResource(String resourceKey, Object... objects) {
Expand Down Expand Up @@ -285,16 +296,16 @@ protected IChoiceRenderer<String> createRenderer() {
// TODO - create some nice ItemPathType editor in near future
TextFormGroup target = new TextFormGroup(ID_TARGET, new PropertyModel<String>(model, MappingTypeDto.F_TARGET),
createStringResource("MappingEditorDialog.label.target"), "SchemaHandlingStep.mapping.tooltip.target",
true, ID_LABEL_SIZE, ID_INPUT_SIZE, isTargetRequired);
true, ID_LABEL_SIZE, ID_INPUT_SIZE, false, isTargetRequired);
target.setOutputMarkupId(true);
target.add(WebComponentUtil.enabledIfFalse(readOnlyModel));
form.add(target);

FeedbackPanel feedback = new FeedbackPanel(ID_FEEDBACK);
feedback.setOutputMarkupId(true);
feedback.setOutputMarkupPlaceholderTag(true);
feedback.setFilter(new ContainerFeedbackMessageFilter(this)); // because 'no target' messages are generated with reporter == this (why?)
form.add(feedback);
// FeedbackPanel feedback = new FeedbackPanel(ID_FEEDBACK);
// feedback.setOutputMarkupId(true);
// feedback.setOutputMarkupPlaceholderTag(true);
// feedback.setFilter(new ContainerFeedbackMessageFilter(this)); // because 'no target' messages are generated with reporter == this (why?)
// form.add(feedback);

DropDownFormGroup<ExpressionUtil.ExpressionEvaluatorType> expressionType = new DropDownFormGroup<ExpressionUtil.ExpressionEvaluatorType>(
ID_EXPRESSION_TYPE,
Expand Down Expand Up @@ -523,11 +534,11 @@ protected void onUpdate(AjaxRequestTarget target) {
sourceTooltip.add(new InfoTooltipBehavior(true));
form.add(sourceTooltip);

AjaxSubmitButton cancel = new AjaxSubmitButton(ID_BUTTON_CANCEL,
AjaxButton cancel = new AjaxButton(ID_BUTTON_CANCEL,
createStringResource("MappingEditorDialog.button.cancel")) {

@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
public void onClick(AjaxRequestTarget target) {
cancelPerformed(target);
}
};
Expand All @@ -540,6 +551,11 @@ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
savePerformed(target);
}

@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.add(getPageBase().getFeedbackPanel(), getContent());
}
};
save.add(WebComponentUtil.visibleIfFalse(readOnlyModel));
form.add(save);
Expand All @@ -549,10 +565,6 @@ private PageBase getPageBase() {
return (PageBase) getPage();
}

private FeedbackPanel getFeedback() {
return (FeedbackPanel) get(getContentId() + ":" + ID_MAIN_FORM + ":" + ID_FEEDBACK);
}

private List<ObjectReferenceType> createPasswordPolicyList() {
policyMap.clear();
OperationResult result = new OperationResult(OPERATION_LOAD_PASSWORD_POLICIES);
Expand Down Expand Up @@ -600,14 +612,6 @@ private void cancelPerformed(AjaxRequestTarget target) {
}

private void savePerformed(AjaxRequestTarget target) {
if (isTargetRequired) {
if (model.getObject().getTarget() == null || model.getObject().getTarget().isEmpty()) {
warn(getString("MappingEditorDialog.message.warn.emptyTarget"));
target.add(getFeedback());
return;
}
}

try {
if (inputModel != null) {
inputModel.setObject(model.getObject().prepareDtoToSave(getPageBase().getPrismContext()));
Expand All @@ -623,6 +627,7 @@ private void savePerformed(AjaxRequestTarget target) {

updateComponents(target);
target.add(getPageBase().getFeedbackPanel());
((PageResourceWizard) getPageBase()).refreshIssues(target);
close(target);
}

Expand Down
Expand Up @@ -23,6 +23,7 @@
import com.evolveum.midpoint.web.component.form.TextAreaFormGroup;
import com.evolveum.midpoint.web.component.form.TextFormGroup;
import com.evolveum.midpoint.web.component.wizard.resource.dto.SynchronizationActionTypeDto;
import com.evolveum.midpoint.web.page.admin.resources.PageResourceWizard;
import com.evolveum.midpoint.xml.ns._public.common.common_3.BeforeAfterType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SynchronizationActionType;

Expand Down Expand Up @@ -193,7 +194,8 @@ protected void savePerformed(AjaxRequestTarget target){
inputModel = new PropertyModel<>(model, SynchronizationActionTypeDto.F_ACTION_OBJECT);
}

updateComponents(target);
((PageResourceWizard) getPage()).refreshIssues(target);
updateComponents(target);
close(target);
}

Expand Down
Expand Up @@ -109,6 +109,12 @@ protected void initLayout(PageResourceWizard parentPage) {
situation.setNullValid(true);
situation.add(new ReactionListUpdateBehavior());
parentPage.addEditingEnabledBehavior(situation);
situation.add(new EmptyOnChangeAjaxFormUpdatingBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget target) {
((PageResourceWizard) getPageBase()).refreshIssues(target);
}
});
add(situation);

MultiValueDropDownPanel channel = new MultiValueDropDownPanel<String>(ID_CHANNEL,
Expand Down Expand Up @@ -185,11 +191,13 @@ public String getObject() {
@Override
protected void performAddValueHook(AjaxRequestTarget target, SynchronizationActionType added) {
target.add(parentStep.getReactionList());
((PageResourceWizard) getPageBase()).refreshIssues(target);
}

@Override
protected void performRemoveValueHook(AjaxRequestTarget target, ListItem<SynchronizationActionType> item) {
target.add(parentStep.getReactionList());
((PageResourceWizard) getPageBase()).refreshIssues(target);
}

@Override
Expand Down
Expand Up @@ -406,11 +406,9 @@ public static String createMappingLabel(MappingType mapping, Trace LOGGER, Prism
sb.append(")");
sb.append("->");

if(mapping.getTarget() != null){
if (mapping.getTarget() != null) {
MappingTargetDeclarationType target = mapping.getTarget();
if(target.getPath() != null && target.getPath().getItemPath() != null
&& target.getPath().getItemPath().getSegments() != null){

if (target.getPath() != null && !ItemPath.isNullOrEmpty(target.getPath().getItemPath())) {
List<ItemPathSegment> segments = target.getPath().getItemPath().getSegments();
sb.append(segments.get(segments.size() - 1));
}
Expand Down

0 comments on commit 7f81b66

Please sign in to comment.