Skip to content

Commit

Permalink
MID-8177 moving buttons from reference search item to popover
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Apr 28, 2023
1 parent fba1e2c commit 5b6c5eb
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="search-item-field" wicket:id="valueTextField" style="float: left;" />
<div style="float: left;">
<a wicket:id="editButton" class="btn btn-xs btn-default dropdown-toggle" style="margin-top: 5px; border: none !important;" data-toggle="dropdown">
<i class="fa fa-edit fa-lg"/>
<div class="search-item-field" wicket:id="valueTextField" />
<div class="d-flex">
<a wicket:id="remove" class="btn btn-xs btn-default border-0" wicket:message="title:PopoverSearchPanel.removeValue">
<i class="fa fa-trash"/>
</a>
<a wicket:id="editButton" class="btn btn-xs btn-default border-0">
<i class="fa fa-edit"/>
</a>
<wicket:child />
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.input.TextPanel;

import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

import org.apache.wicket.Component;
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.WebMarkupContainer;
import org.apache.wicket.model.IModel;
Expand All @@ -27,6 +30,7 @@ public abstract class PopoverSearchPanel<T> extends BasePanel<T> {
private static final String ID_EDIT_BUTTON = "editButton";
private static final String ID_POPOVER_PANEL = "popoverPanel";
private static final String ID_POPOVER = "popover";
private static final String ID_REMOVE="remove";

public PopoverSearchPanel(String id) {
super(id);
Expand All @@ -44,8 +48,9 @@ protected void onInitialize() {

private void initLayout() {
setOutputMarkupId(true);
add(AttributeAppender.append("class", "d-flex align-items-center"));

TextPanel<String> textField = new TextPanel<String>(ID_TEXT_FIELD, getTextValue());
TextPanel<String> textField = new TextPanel<>(ID_TEXT_FIELD, getTextValue());
textField.setOutputMarkupId(true);
textField.add(AttributeAppender.append("title", getTextValue().getObject()));
textField.setEnabled(false);
Expand All @@ -61,16 +66,26 @@ public Component getPopoverReferenceComponent() {
};
add(popover);

AjaxButton setDateButton = new AjaxButton(ID_EDIT_BUTTON) {
AjaxButton edit = new AjaxButton(ID_EDIT_BUTTON) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
popover.toggle(target);
}
};
setDateButton.setOutputMarkupId(true);
add(setDateButton);
edit.setOutputMarkupId(true);
add(edit);

AjaxLink<?> remove = new AjaxLink<>(ID_REMOVE) {

@Override
public void onClick(AjaxRequestTarget target) {
removeSearchValue(target);
}
};
remove.add(new VisibleBehaviour(() -> isRemoveVisible()));
add(remove);

WebMarkupContainer searchPopupPanel = createPopupPopoverPanel(ID_POPOVER_PANEL);
popover.add(searchPopupPanel);
Expand All @@ -93,4 +108,12 @@ public void togglePopover(AjaxRequestTarget target, Component button, Component
public Boolean isItemPanelEnabled() {
return true;
}

protected boolean isRemoveVisible() {
return false;
}

protected void removeSearchValue(AjaxRequestTarget target) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
<a wicket:id="selectObjectButton" class="btn btn-xs btn-default" style="margin-top: 5px; border: none !important;" >
<i class="fa-solid fa-arrow-pointer mr-1"/>
</a>
<!--<a wicket:id="selectObjectButton" class="btn btn-xs btn-default border-0" >
<i class="fa fa-solid fa-arrow-pointer"/>
</a>-->
</wicket:extend>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -48,44 +48,34 @@ protected void onInitialize(){
initLayout();
}

private <O extends ObjectType> void initLayout(){
private void initLayout(){
setOutputMarkupId(true);
}

AjaxButton selectObject = new AjaxButton(ID_SELECT_OBJECT_BUTTON) {

private <O extends ObjectType> void selectObjectPerformed(AjaxRequestTarget target) {
List<QName> supportedTypes = getSupportedTargetList();
if (CollectionUtils.isEmpty(supportedTypes)) {
supportedTypes = WebComponentUtil.createObjectTypeList();
}
ObjectBrowserPanel<O> objectBrowserPanel = new ObjectBrowserPanel<>(
getPageBase().getMainPopupBodyId(), null, supportedTypes, false, getPageBase(),
null) {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
List<QName> supportedTypes = getSupportedTargetList();
if (CollectionUtils.isEmpty(supportedTypes)) {
supportedTypes = WebComponentUtil.createObjectTypeList();
}
ObjectBrowserPanel<O> objectBrowserPanel = new ObjectBrowserPanel<>(
getPageBase().getMainPopupBodyId(), null, supportedTypes, false, getPageBase(),
null) {
private static final long serialVersionUID = 1L;

@Override
protected void onSelectPerformed(AjaxRequestTarget target, O object) {
getPageBase().hideMainPopup(target);
ObjectReferenceType ort = new ObjectReferenceType();
ort.setOid(object.getOid());
ort.setTargetName(object.getName());
ort.setType(object.asPrismObject().getComplexTypeDefinition().getTypeName());
ReferenceValueSearchPanel.this.getModel().setObject(ort);
referenceValueUpdated(ort, target);
target.add(ReferenceValueSearchPanel.this);
}
};

getPageBase().showMainPopup(objectBrowserPanel, target);
protected void onSelectPerformed(AjaxRequestTarget target, O object) {
getPageBase().hideMainPopup(target);
ObjectReferenceType ort = new ObjectReferenceType();
ort.setOid(object.getOid());
ort.setTargetName(object.getName());
ort.setType(object.asPrismObject().getComplexTypeDefinition().getTypeName());
ReferenceValueSearchPanel.this.getModel().setObject(ort);
referenceValueUpdated(ort, target);
target.add(ReferenceValueSearchPanel.this);
}
};
selectObject.setOutputMarkupId(true);
selectObject.add(new VisibleBehaviour(this::notDisplayedInPopup));
selectObject.add(AttributeAppender.append("title", createStringResource("ReferenceValueSearchPopupPanel.selectObject")));
add(selectObject);

getPageBase().showMainPopup(objectBrowserPanel, target);
}

@Override
Expand Down Expand Up @@ -119,9 +109,35 @@ protected Boolean isItemPanelEnabled() {
protected boolean isAllowedNotFoundObjectRef() {
return ReferenceValueSearchPanel.this.isAllowedNotFoundObjectRef();
}

@Override
protected boolean isChooseObjectVisible() {
return notDisplayedInPopup();
}

@Override
protected void chooseObjectPerformed(AjaxRequestTarget target) {
selectObjectPerformed(target);
}
};
}

@Override
protected boolean isRemoveVisible() {
return true;
}

@Override
protected void removeSearchValue(AjaxRequestTarget target) {
ObjectReferenceType ref = getModelObject();
ref.asReferenceValue().setObject(null);
ref.setOid(null);
ref.setTargetName(null);
ref.setRelation(null);

target.add(this);
}

@Override
protected LoadableModel<String> getTextValue() {
return new LoadableModel<String>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,16 @@
<form class="my-1" wicket:id="popoverForm" style="width: 300px;">
<div wicket:id="feedback"/>

<div class="row form-group mb-0">
<div class="col d-flex flex-column align-items-center">
<a wicket:id="chooseObject" class="btn btn-sm btn-default pull-right" wicket:message="title:ReferenceValueSearchPopupPanel.chooseObject">
<wicket:message key="ReferenceValueSearchPopupPanel.chooseObject"/>
</a>

<hr class="w-100"/>
</div>
</div>

<div class="row form-group">
<label class="col-form-label col-4"><wicket:message key="ReferencePopupPanel.oid"/></label>
<div class="col-8">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.TextField;
Expand Down Expand Up @@ -46,6 +47,7 @@ public class ReferenceValueSearchPopupPanel<O extends ObjectType> extends Popove
private static final String ID_RELATION = "relation";
private static final String ID_SELECT_OBJECT_BUTTON = "selectObject";
private static final String ID_FEEDBACK = "feedback";
private static final String ID_CHOOSE_OBJECT="chooseObject";

public ReferenceValueSearchPopupPanel(String id, IModel<ObjectReferenceType> model) {
super(id, model);
Expand All @@ -57,6 +59,16 @@ protected void customizationPopoverForm(MidpointForm midpointForm) {
feedback.setOutputMarkupId(true);
midpointForm.add(feedback);

AjaxLink<?> chooseObject = new AjaxLink<>(ID_CHOOSE_OBJECT) {

@Override
public void onClick(AjaxRequestTarget target) {
chooseObjectPerformed(target);
}
};
chooseObject.add(new VisibleBehaviour(() -> isChooseObjectVisible()));
midpointForm.add(chooseObject);

PropertyModel<String> oidModel = new PropertyModel<>(getModel(), "oid") {
@Override
public void setObject(String object) {
Expand Down Expand Up @@ -185,4 +197,11 @@ protected boolean isAllowedNotFoundObjectRef() {
return false;
}

protected boolean isChooseObjectVisible() {
return true;
}

protected void chooseObjectPerformed(AjaxRequestTarget target) {

}
}

0 comments on commit 5b6c5eb

Please sign in to comment.