use of com.evolveum.midpoint.xml.ns._public.common.common_3.RelationSearchItemConfigurationType in project midpoint by Evolveum.
the class RelationSearchItem method createSpecialSearchPanel.
@Override
public SearchSpecialItemPanel createSpecialSearchPanel(String id) {
return new SearchSpecialItemPanel(id, new PropertyModel<>(searchBoxConfiguration, SearchBoxConfigurationHelper.F_RELATION_ITEM)) {
@Override
protected WebMarkupContainer initSearchItemField(String id) {
ReadOnlyModel<List<QName>> availableRelations = new ReadOnlyModel<>(() -> {
List<QName> choices = new ArrayList();
IModel<RelationSearchItemConfigurationType> relationItem = getModelValue();
List<QName> relations = relationItem.getObject().getSupportedRelations();
if (relations != null && relations.size() > 1) {
choices.add(PrismConstants.Q_ANY);
}
choices.addAll(relations);
return choices;
});
DropDownChoicePanel inputPanel = new DropDownChoicePanel(id, new PropertyModel(getModelValue(), RelationSearchItemConfigurationType.F_DEFAULT_VALUE.getLocalPart()), availableRelations, new QNameIChoiceRenderer() {
private static final long serialVersionUID = 1L;
@Override
public Object getDisplayValue(QName relation) {
RelationDefinitionType relationDef = WebComponentUtil.getRelationDefinition(relation);
if (relationDef != null) {
DisplayType display = relationDef.getDisplay();
if (display != null) {
PolyStringType label = display.getLabel();
if (PolyStringUtils.isNotEmpty(label)) {
return WebComponentUtil.getTranslatedPolyString(label);
}
}
}
if (QNameUtil.match(PrismConstants.Q_ANY, relation)) {
return new ResourceModel("RelationTypes.ANY", relation.getLocalPart()).getObject();
}
return super.getDisplayValue(relation);
}
}, false);
inputPanel.getBaseFormComponent().add(WebComponentUtil.getSubmitOnEnterKeyDownBehavior("searchSimple"));
inputPanel.getBaseFormComponent().add(AttributeAppender.append("style", "width: 100px; max-width: 400px !important;"));
inputPanel.getBaseFormComponent().add(new EnableBehaviour(() -> availableRelations.getObject().size() > 1));
inputPanel.setOutputMarkupId(true);
return inputPanel;
}
@Override
protected IModel<String> createLabelModel() {
return Model.of(WebComponentUtil.getTranslatedPolyString(getReltaionConfig().getDisplay().getLabel()));
}
@Override
protected IModel<String> createHelpModel() {
return Model.of(WebComponentUtil.getTranslatedPolyString(getReltaionConfig().getDisplay().getHelp()));
}
};
}
Aggregations