Skip to content

Commit

Permalink
MID-7976 conflict item panel, fix options
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jun 21, 2022
1 parent d9efcf1 commit 6239add
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ public class ConflictItem implements Serializable {

private ObjectReferenceType ref;

boolean oldAssignment = false;
private boolean existingAssignment;

public ConflictItem(PrismObject obj, boolean oldAssignment) {
this.oldAssignment = oldAssignment;
public ConflictItem(PrismObject obj, boolean existingAssignment) {
this.existingAssignment = existingAssignment;

if (obj == null) {
return;
Expand All @@ -38,11 +38,15 @@ public ConflictItem(PrismObject obj, boolean oldAssignment) {
this.ref = ref;
}

public ConflictItem(ObjectReferenceType ref) {
this.ref = ref;
}

public String getName() {
return WebComponentUtil.getName(ref);
}

public ObjectReferenceType getRef() {
return ref;
}

public boolean isExistingAssignment() {
return existingAssignment;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,26 @@ <h5 class="mb-0"><wicket:message key="ConflictItemPanel.duplicationConflict"/></
</div>

<div class="mt-3">
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
<label class="form-check-label" for="exampleRadios1">
<wicket:message key="ConflictItemPanel.iWantToKeep"/> <span class="font-weight-bold">Office 365: Microsoft Word</span>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
<label class="form-check-label" for="exampleRadios1">
<wicket:message key="ConflictItemPanel.iWantToKeep"/> <span class="font-weight-bold">Office 365 Package</span>
</label>
</div>
<wicket:container wicket:id="options">
<div wicket:id="option1"/>
<div wicket:id="option2"/>
</wicket:container>
</div>

<div class="main-button-bar mt-4">
<a class="btn btn-primary"><wicket:message key="ConflictItemPanel.fixConflict"/></a>
<a class="btn btn-primary" wicket:id="fixConflict"><wicket:message key="ConflictItemPanel.fixConflict"/></a>
<wicket:remove>
<!-- todo later -->
<a class="btn btn-link">Let midPoint try to fix it</a>
</wicket:remove>
</div>
</div>

<wicket:fragment wicket:id="option">
<input class="form-check-input" type="radio" wicket:id="radio">
<label class="form-check-label">
<wicket:message key="ConflictItemPanel.iWantToKeep"/> <span class="font-weight-bold" wicket:id="label"/> <span wicket:id="state"/>
</label>
</wicket:fragment>
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,21 @@

package com.evolveum.midpoint.gui.impl.page.self.requestAccess;

import com.evolveum.midpoint.web.component.AjaxButton;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Radio;
import org.apache.wicket.markup.html.form.RadioGroup;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;

import com.evolveum.midpoint.gui.api.component.Badge;
import com.evolveum.midpoint.gui.api.component.BadgePanel;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType;

/**
* Created by Viliam Repan (lazyman).
Expand All @@ -29,6 +34,14 @@ public class ConflictItemPanel extends BasePanel<Conflict> {
private static final String ID_LINK1 = "link1";
private static final String ID_LINK2 = "link2";
private static final String ID_MESSAGE = "message";
private static final String ID_FIX_CONFLICT = "fixConflict";
private static final String ID_OPTIONS = "options";
private static final String ID_OPTION = "option";
private static final String ID_LABEL = "label";
private static final String ID_RADIO = "radio";
private static final String ID_STATE = "state";
private static final String ID_OPTION1 = "option1";
private static final String ID_OPTION2 = "option2";

public ConflictItemPanel(String id, IModel<Conflict> model) {
super(id, model);
Expand Down Expand Up @@ -65,20 +78,63 @@ private void initLayout() {
AjaxButton link1 = new AjaxButton(ID_LINK1, () -> getModelObject().getAdded().getName()) {
@Override
public void onClick(AjaxRequestTarget target) {

navigateToObject(ConflictItemPanel.this.getModelObject().getAdded().getRef());
}
};
add(link1);

AjaxButton link2 = new AjaxButton(ID_LINK2, () -> getModelObject().getExclusion().getName()) {
@Override
public void onClick(AjaxRequestTarget target) {

navigateToObject(ConflictItemPanel.this.getModelObject().getExclusion().getRef());
}
};
add(link2);

Label message = new Label(ID_MESSAGE, () -> getModelObject().getMessage());
add(message);

RadioGroup options = new RadioGroup(ID_OPTIONS);
add(options);

Fragment option1 = createOption(ID_OPTION1, () -> getModelObject().getAdded());
options.add(option1);

Fragment option2 = createOption(ID_OPTION2, () -> getModelObject().getExclusion());
options.add(option2);

AjaxLink fixConflict = new AjaxLink<>(ID_FIX_CONFLICT) {

@Override
public void onClick(AjaxRequestTarget target) {
fixConflictPerformed(target);
}
};
add(fixConflict);
}

private Fragment createOption(String id, IModel<ConflictItem> item) {
Fragment option = new Fragment(id, ID_OPTION, this);
option.add(AttributeAppender.append("class", "form-check"));

Radio radio = new Radio(ID_RADIO);
option.add(radio);

Label label = new Label(ID_LABEL, () -> item.getObject().getName());
option.add(label);

Label state = new Label(ID_STATE, () -> item.getObject().isExistingAssignment() ?
getString("ConflictItemPanel.existingAssignment") : getString("ConflictItemPanel.newAssignment"));
option.add(state);

return option;
}

private void navigateToObject(ObjectReferenceType ref) {
WebComponentUtil.dispatchToObjectDetailsPage(ref, this, true);
}

private void fixConflictPerformed(AjaxRequestTarget target) {
//todo implement
}
}

0 comments on commit 6239add

Please sign in to comment.