Search in sources :

Example 1 with AutoCompleteReferenceRenderer

use of com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteReferenceRenderer in project midpoint by Evolveum.

the class ReferenceValueSearchPopupPanel method customizationPopoverForm.

@Override
protected void customizationPopoverForm(MidpointForm midpointForm) {
    FeedbackAlerts feedback = new FeedbackAlerts(ID_FEEDBACK);
    feedback.setOutputMarkupId(true);
    midpointForm.add(feedback);
    PropertyModel<String> oidModel = new PropertyModel<>(getModel(), "oid") {

        @Override
        public void setObject(String object) {
            super.setObject(object);
            if (StringUtils.isBlank(object)) {
                ReferenceValueSearchPopupPanel.this.getModelObject().asReferenceValue().setObject(null);
                ReferenceValueSearchPopupPanel.this.getModelObject().setTargetName(null);
                ReferenceValueSearchPopupPanel.this.getModelObject().setRelation(null);
            }
        }
    };
    TextField<String> oidField = new TextField<>(ID_OID, oidModel);
    oidField.add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
    oidField.setOutputMarkupId(true);
    oidField.add(new EnableBehaviour(this::isItemPanelEnabled));
    midpointForm.add(oidField);
    ReferenceAutocomplete nameField = new ReferenceAutocomplete(ID_NAME, Model.of(getModelObject()), new AutoCompleteReferenceRenderer(), getPageBase()) {

        private static final long serialVersionUID = 1L;

        @Override
        protected boolean isAllowedNotFoundObjectRef() {
            return ReferenceValueSearchPopupPanel.this.isAllowedNotFoundObjectRef();
        }

        @Override
        protected <O extends ObjectType> Class<O> getReferenceTargetObjectType() {
            if (getModelObject() != null && getModelObject().getType() != null) {
                return (Class<O>) WebComponentUtil.qnameToClass(PrismContext.get(), getModelObject().getType());
            }
            return super.getReferenceTargetObjectType();
        }
    };
    feedback.setFilter(new ComponentFeedbackMessageFilter(nameField));
    nameField.getBaseFormComponent().add(new AjaxFormComponentUpdatingBehavior("blur") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            updateModel(nameField.getBaseFormComponent().getModelObject(), midpointForm, target);
        }
    });
    nameField.setOutputMarkupId(true);
    nameField.add(new EnableBehaviour(this::isItemPanelEnabled));
    midpointForm.add(nameField);
    DropDownChoicePanel<QName> type = new DropDownChoicePanel<>(ID_TYPE, new PropertyModel<>(getModel(), "type"), Model.ofList(getSupportedTargetList()), new QNameObjectTypeChoiceRenderer(), true);
    type.setOutputMarkupId(true);
    type.add(new VisibleEnableBehaviour() {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isEnabled() {
            return getSupportedTargetList().size() > 1 && isItemPanelEnabled();
        }
    });
    type.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
    type.getBaseFormComponent().add(new AjaxFormComponentUpdatingBehavior("change") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            ObjectReferenceType ref = nameField.getAutoCompleteConverter(ObjectReferenceType.class, null).convertToObject(nameField.getBaseFormComponent().getValue(), WebComponentUtil.getCurrentLocale());
            updateModel(ref, midpointForm, target);
            target.add(oidField);
            target.add(ReferenceValueSearchPopupPanel.this);
        }
    });
    midpointForm.add(type);
    WebMarkupContainer relationContainer = new WebMarkupContainer(ID_RELATION_CONTAINER);
    midpointForm.add(relationContainer);
    relationContainer.add(new VisibleBehaviour(() -> getAllowedRelations().size() > 0));
    List<QName> allowedRelations = new ArrayList<>(getAllowedRelations());
    DropDownChoicePanel<QName> relation = new DropDownChoicePanel<>(ID_RELATION, new PropertyModel<>(getModel(), "relation"), Model.ofList(allowedRelations), new QNameObjectTypeChoiceRenderer(), true);
    relation.setOutputMarkupId(true);
    relation.add(new VisibleEnableBehaviour() {

        private static final long serialVersionUID = 1L;

        @Override
        public boolean isEnabled() {
            return getAllowedRelations().size() > 1 && isItemPanelEnabled();
        }
    });
    relation.getBaseFormComponent().add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
    relationContainer.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<>(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);
        }
    };
    selectObject.add(new VisibleBehaviour(() -> getPageBase().getMainPopup().getContentComponent() == null));
    midpointForm.add(selectObject);
}
Also used : DropDownChoicePanel(com.evolveum.midpoint.web.component.input.DropDownChoicePanel) VisibleBehaviour(com.evolveum.midpoint.web.component.util.VisibleBehaviour) EmptyOnBlurAjaxFormUpdatingBehaviour(com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour) ArrayList(java.util.ArrayList) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer) ObjectType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType) AjaxButton(com.evolveum.midpoint.web.component.AjaxButton) AutoCompleteReferenceRenderer(com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteReferenceRenderer) TextField(org.apache.wicket.markup.html.form.TextField) VisibleEnableBehaviour(com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour) EnableBehaviour(com.evolveum.midpoint.web.component.util.EnableBehaviour) VisibleEnableBehaviour(com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour) AjaxFormComponentUpdatingBehavior(org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior) QName(javax.xml.namespace.QName) PropertyModel(org.apache.wicket.model.PropertyModel) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) ComponentFeedbackMessageFilter(org.apache.wicket.feedback.ComponentFeedbackMessageFilter) ObjectReferenceType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType) FeedbackAlerts(com.evolveum.midpoint.web.component.message.FeedbackAlerts) ObjectBrowserPanel(com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel) QNameObjectTypeChoiceRenderer(com.evolveum.midpoint.web.component.input.QNameObjectTypeChoiceRenderer)

Example 2 with AutoCompleteReferenceRenderer

use of com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteReferenceRenderer in project midpoint by Evolveum.

the class AutoCompleteReferencePanelFactory method createPanel.

@Override
public org.apache.wicket.Component createPanel(PrismReferencePanelContext<ObjectReferenceType> panelCtx) {
    ReferenceAutocomplete panel = new ReferenceAutocomplete(panelCtx.getComponentId(), panelCtx.getRealValueModel(), new AutoCompleteReferenceRenderer(), panelCtx.getPageBase());
    panel.setOutputMarkupId(true);
    // ugly hack to be aligned with prism-property-label
    panel.add(AttributeAppender.append("style", "padding-top:5px"));
    return panel;
}
Also used : ReferenceAutocomplete(com.evolveum.midpoint.web.component.search.ReferenceAutocomplete) AutoCompleteReferenceRenderer(com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteReferenceRenderer)

Aggregations

AutoCompleteReferenceRenderer (com.evolveum.midpoint.gui.api.component.autocomplete.AutoCompleteReferenceRenderer)2 ObjectBrowserPanel (com.evolveum.midpoint.gui.api.component.ObjectBrowserPanel)1 AjaxButton (com.evolveum.midpoint.web.component.AjaxButton)1 DropDownChoicePanel (com.evolveum.midpoint.web.component.input.DropDownChoicePanel)1 QNameObjectTypeChoiceRenderer (com.evolveum.midpoint.web.component.input.QNameObjectTypeChoiceRenderer)1 FeedbackAlerts (com.evolveum.midpoint.web.component.message.FeedbackAlerts)1 ReferenceAutocomplete (com.evolveum.midpoint.web.component.search.ReferenceAutocomplete)1 EnableBehaviour (com.evolveum.midpoint.web.component.util.EnableBehaviour)1 VisibleBehaviour (com.evolveum.midpoint.web.component.util.VisibleBehaviour)1 VisibleEnableBehaviour (com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour)1 EmptyOnBlurAjaxFormUpdatingBehaviour (com.evolveum.midpoint.web.page.admin.configuration.component.EmptyOnBlurAjaxFormUpdatingBehaviour)1 ObjectReferenceType (com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType)1 ObjectType (com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType)1 ArrayList (java.util.ArrayList)1 QName (javax.xml.namespace.QName)1 AjaxRequestTarget (org.apache.wicket.ajax.AjaxRequestTarget)1 AjaxFormComponentUpdatingBehavior (org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior)1 ComponentFeedbackMessageFilter (org.apache.wicket.feedback.ComponentFeedbackMessageFilter)1 WebMarkupContainer (org.apache.wicket.markup.html.WebMarkupContainer)1 TextField (org.apache.wicket.markup.html.form.TextField)1