Skip to content

Commit

Permalink
adding 'Select object' button to reference search popup panel
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Mar 2, 2021
1 parent 0242d7b commit 6f0fa5d
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 5 deletions.
Expand Up @@ -12,6 +12,7 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.component.result.MessagePanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;

Expand Down Expand Up @@ -80,6 +81,16 @@ public ObjectBrowserPanel(String id, final Class<? extends O> defaultType, List<
this.parentPage = parentPage;
this.queryFilter = queryFilter;
this.selectedObjectsList = selectedData;
if (defaultType == null) {
if (supportedTypes == null || supportedTypes.isEmpty()) {
this.defaultType = (Class<? extends O>) ObjectType.class;
}
this.defaultType =
(Class<? extends O>) WebComponentUtil.qnameToClass(parentPage.getPrismContext(),
supportedTypes.iterator().next());
} else {
this.defaultType = defaultType;
}
typeModel = new LoadableModel<>(false) {

private static final long serialVersionUID = 1L;
Expand All @@ -92,9 +103,14 @@ protected ObjectTypes load() {
return ObjectTypes.getObjectType(defaultType);
}

@Override
public void setObject(ObjectTypes object) {
if (object == null) {
object = ObjectTypes.getObjectType(ObjectBrowserPanel.this.defaultType);
}
super.setObject(object);
}
};

this.defaultType = defaultType;
this.supportedTypes = supportedTypes;
this.multiselect = multiselect;
}
Expand Down
Expand Up @@ -37,9 +37,9 @@
</div>
<div class="form-group col-sm-12" style="padding-bottom: 10px;">
<div>
<div class="input-group-btn">
<a wicket:id="confirmButton" class="btn btn-sm btn-default pull-right">
</a>
<div>
<a wicket:id="confirmButton" class="btn btn-sm btn-default pull-right"/>
<a wicket:id="selectObject" class="btn btn-sm btn-default pull-right" style="margin-right: 5px;"/>
</div>
</div>
</div>
Expand Down
Expand Up @@ -8,13 +8,21 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel;
import com.evolveum.midpoint.gui.api.component.PopupObjectListPanel;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.form.MidpointForm;
import com.evolveum.midpoint.web.component.form.ValueChoosePanel;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;

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

import org.apache.commons.collections4.CollectionUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.markup.html.form.TextField;
Expand All @@ -39,6 +47,7 @@ public class ReferenceValueSearchPopupPanel<O extends ObjectType> extends Popove
private static final String ID_NAME = "name";
private static final String ID_TYPE = "type";
private static final String ID_RELATION = "relation";
private static final String ID_SELECT_OBJECT_BUTTON = "selectObject";

public ReferenceValueSearchPopupPanel(String id, IModel<ObjectReferenceType> model) {
super(id, model);
Expand Down Expand Up @@ -134,6 +143,43 @@ public boolean isEnabled() {
});
relation.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
midpointForm.add(relation);

AjaxButton selectObject = new AjaxButton(ID_SELECT_OBJECT_BUTTON,
createStringResource("ReferenceValueSearchPopupPanel.selectObject")) {

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<O>(
getPageBase().getMainPopupBodyId(), null, supportedTypes, false, getPageBase(),
null) {
private static final long serialVersionUID = 1L;

@Override
protected void onSelectPerformed(AjaxRequestTarget target, O object) {
getPageBase().hideMainPopup(target);
if (ReferenceValueSearchPopupPanel.this.getModel().getObject() == null) {
ReferenceValueSearchPopupPanel.this.getModel().setObject(new ObjectReferenceType());
}
ReferenceValueSearchPopupPanel.this.getModelObject().setOid(object.getOid());
ReferenceValueSearchPopupPanel.this.getModelObject().setTargetName(object.getName());
ReferenceValueSearchPopupPanel.this.getModelObject().setType(
object.asPrismObject().getComplexTypeDefinition().getTypeName());
target.add(oidField);
target.add(nameField);
target.add(type);
}
};

getPageBase().showMainPopup(objectBrowserPanel, target);
}
};
midpointForm.add(selectObject);
}

protected List<QName> getAllowedRelations() {
Expand Down

0 comments on commit 6f0fa5d

Please sign in to comment.