Search in sources :

Example 16 with ReadOnlyModel

use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.

the class TaskResultPanel method initLayout.

protected void initLayout() {
    IModel<List<OperationResult>> resultModel = new ReadOnlyModel<>(this::createOperationResultList);
    SelectableListDataProvider<SelectableBean<OperationResult>, OperationResult> provider = new SelectableListDataProvider<>(this, resultModel);
    BoxedTablePanel<SelectableBean<OperationResult>> resultTablePanel = new BoxedTablePanel<>(ID_OPERATION_RESULT, provider, initResultColumns());
    resultTablePanel.setOutputMarkupId(true);
    add(resultTablePanel);
    AjaxFallbackLink<Void> showResult = new AjaxFallbackLink<>(ID_SHOW_RESULT) {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(Optional<AjaxRequestTarget> optionalTarget) {
            if (optionalTarget.isEmpty()) {
                LOGGER.warn("Cannot show result in interactive way, request target not present.");
                return;
            }
            AjaxRequestTarget target = optionalTarget.get();
            OperationResultPopupPanel body = new OperationResultPopupPanel(getPageBase().getMainPopupBodyId(), new Model<>(getTaskOperationResult()));
            body.setOutputMarkupId(true);
            getPageBase().showMainPopup(body, target);
        }
    };
    showResult.add(new VisibleBehaviour(() -> getTaskOperationResult() != null));
    showResult.setOutputMarkupId(true);
    add(showResult);
}
Also used : VisibleBehaviour(com.evolveum.midpoint.web.component.util.VisibleBehaviour) AjaxFallbackLink(org.apache.wicket.ajax.markup.html.AjaxFallbackLink) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) OperationResultPopupPanel(com.evolveum.midpoint.gui.api.component.result.OperationResultPopupPanel) ReadOnlyModel(com.evolveum.midpoint.gui.api.model.ReadOnlyModel) SelectableListDataProvider(com.evolveum.midpoint.web.component.util.SelectableListDataProvider) SelectableBean(com.evolveum.midpoint.web.component.util.SelectableBean) BoxedTablePanel(com.evolveum.midpoint.web.component.data.BoxedTablePanel)

Example 17 with ReadOnlyModel

use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.

the class PrismValueMetadataPanel method createMetadataListModel.

private ReadOnlyModel<List<ContainersPopupDto>> createMetadataListModel() {
    return new ReadOnlyModel<>(() -> {
        ValueMetadataWrapperImpl metadataWrapper = getValueMetadata();
        List<PrismContainerDefinition<? extends Containerable>> childContainers;
        try {
            childContainers = metadataWrapper != null ? metadataWrapper.getChildContainers() : Collections.emptyList();
        } catch (SchemaException e) {
            LOGGER.error("Cannot get child containers: {}", e.getMessage(), e);
            childContainers = Collections.emptyList();
        }
        List<ContainersPopupDto> navigation = childContainers.stream().map(c -> new ContainersPopupDto(false, c)).collect(Collectors.toList());
        List<? extends ItemDefinition> childNonContainers = metadataWrapper != null ? metadataWrapper.getChildNonContainers() : Collections.emptyList();
        if (!childNonContainers.isEmpty()) {
            navigation.add(new ContainersPopupDto(false, metadataWrapper));
        }
        return navigation;
    });
}
Also used : VisibleBehaviour(com.evolveum.midpoint.web.component.util.VisibleBehaviour) PrismContainerWrapper(com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper) ContainersPopupDto(com.evolveum.midpoint.gui.impl.prism.panel.component.ContainersPopupDto) ItemDefinition(com.evolveum.midpoint.prism.ItemDefinition) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) Trace(com.evolveum.midpoint.util.logging.Trace) ItemVisibility(com.evolveum.midpoint.web.component.prism.ItemVisibility) QNameUtil(com.evolveum.midpoint.util.QNameUtil) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) PrismContainerDefinition(com.evolveum.midpoint.prism.PrismContainerDefinition) IModel(org.apache.wicket.model.IModel) Containerable(com.evolveum.midpoint.prism.Containerable) PrismContainerValueWrapper(com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper) ListView(org.apache.wicket.markup.html.list.ListView) ValueMetadataWrapperImpl(com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl) ReadOnlyModel(com.evolveum.midpoint.gui.api.model.ReadOnlyModel) AjaxButton(com.evolveum.midpoint.web.component.AjaxButton) ListItem(org.apache.wicket.markup.html.list.ListItem) ValueMetadataType(com.evolveum.midpoint.xml.ns._public.common.common_3.ValueMetadataType) Collectors(java.util.stream.Collectors) LoggingUtils(com.evolveum.midpoint.util.logging.LoggingUtils) List(java.util.List) AttributeAppender(org.apache.wicket.behavior.AttributeAppender) BasePanel(com.evolveum.midpoint.gui.api.component.BasePanel) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer) ItemWrapper(com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper) ProvenanceMetadataType(com.evolveum.midpoint.xml.ns._public.common.common_3.ProvenanceMetadataType) Collections(java.util.Collections) TraceManager(com.evolveum.midpoint.util.logging.TraceManager) SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ValueMetadataWrapperImpl(com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl) ReadOnlyModel(com.evolveum.midpoint.gui.api.model.ReadOnlyModel) PrismContainerDefinition(com.evolveum.midpoint.prism.PrismContainerDefinition) ContainersPopupDto(com.evolveum.midpoint.gui.impl.prism.panel.component.ContainersPopupDto) Containerable(com.evolveum.midpoint.prism.Containerable)

Example 18 with ReadOnlyModel

use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.

the class ProvenanceAcquisitionHeaderPanel method initLayout.

private void initLayout() {
    LinkedReferencePanel<ObjectReferenceType> source = new LinkedReferencePanel<>(ID_SOURCE, new ReadOnlyModel<>(() -> {
        ProvenanceAcquisitionType acquisitionType = getModelObject();
        if (acquisitionType == null) {
            return null;
        }
        ObjectReferenceType ref = acquisitionType.getResourceRef();
        if (ref != null && ref.getOid() != null) {
            return ref;
        }
        ObjectReferenceType originRef = acquisitionType.getOriginRef();
        if (originRef != null && originRef.getOid() != null) {
            return originRef;
        }
        return null;
    }));
    add(source);
    source.add(new VisibleBehaviour(() -> isNotEmpty(getModelObject().getResourceRef()) || isNotEmpty(getModelObject().getOriginRef())));
    ReadOnlyModel<GuiChannel> channelModel = new ReadOnlyModel<>(() -> GuiChannel.findChannel(getModelObject().getChannel()));
    WebMarkupContainer channelIcon = new WebMarkupContainer(ID_CHANNEL_ICON);
    add(channelIcon);
    channelIcon.add(AttributeAppender.replace("class", new PropertyModel<>(channelModel, "iconCssClass")));
    Label channel = new Label(ID_CHANNEL, getPageBase().createStringResource(channelModel.getObject()));
    add(channel);
    channel.add(new VisibleBehaviour(() -> getModelObject() != null && (getModelObject().getOriginRef() == null || getModelObject().getOriginRef().getOid() == null) && (getModelObject().getResourceRef() == null || getModelObject().getResourceRef().getOid() == null)));
}
Also used : ObjectReferenceType(com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType) ProvenanceAcquisitionType(com.evolveum.midpoint.xml.ns._public.common.common_3.ProvenanceAcquisitionType) VisibleBehaviour(com.evolveum.midpoint.web.component.util.VisibleBehaviour) ReadOnlyModel(com.evolveum.midpoint.gui.api.model.ReadOnlyModel) LinkedReferencePanel(com.evolveum.midpoint.web.component.data.LinkedReferencePanel) PropertyModel(org.apache.wicket.model.PropertyModel) Label(org.apache.wicket.markup.html.basic.Label) GuiChannel(com.evolveum.midpoint.gui.impl.GuiChannel) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer)

Example 19 with ReadOnlyModel

use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.

the class AuditLogViewerPanel method createColumns.

protected List<IColumn<SelectableBean<AuditEventRecordType>, String>> createColumns() {
    List<IColumn<SelectableBean<AuditEventRecordType>, String>> columns = new ArrayList<>();
    LinkColumn<SelectableBean<AuditEventRecordType>> initiatorRefColumn = new LinkColumn<>(createStringResource("AuditEventRecordType.initiatorRef"), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_INITIATOR_REF.getLocalPart()) {

        private static final long serialVersionUID = 1L;

        @Override
        protected IModel<String> createLinkModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            return new ReadOnlyModel<>(() -> {
                AuditEventRecordType auditEventRecordType = unwrapModel(rowModel);
                if (auditEventRecordType == null) {
                    return null;
                }
                return WebModelServiceUtils.resolveReferenceName(auditEventRecordType.getInitiatorRef(), getPageBase(), true);
            });
        }

        @Override
        public void onClick(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            AuditEventRecordType auditEventRecordType = unwrapModel(rowModel);
            dispatchToObjectDetailsPage(auditEventRecordType.getInitiatorRef(), getPageBase(), false);
        }

        @Override
        public boolean isEnabled(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            return unwrapModel(rowModel) != null;
        }
    };
    columns.add(initiatorRefColumn);
    if (!isObjectHistoryPanel()) {
        IColumn<SelectableBean<AuditEventRecordType>, String> eventStageColumn = new PropertyColumn<>(createStringResource("PageAuditLogViewer.eventStageLabel"), AuditEventRecordType.F_EVENT_STAGE.getLocalPart(), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_EVENT_STAGE.getLocalPart()) {

            private static final long serialVersionUID = 1L;

            @Override
            public IModel<String> getDataModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
                AuditEventRecordType record = unwrapModel(rowModel);
                if (record == null) {
                    return new Model<>();
                }
                return WebComponentUtil.createLocalizedModelForEnum(record.getEventStage(), AuditLogViewerPanel.this);
            }
        };
        columns.add(eventStageColumn);
    }
    IColumn<SelectableBean<AuditEventRecordType>, String> eventTypeColumn = new PropertyColumn<>(createStringResource("PageAuditLogViewer.eventTypeLabel"), AuditEventRecordType.F_EVENT_TYPE.getLocalPart(), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_EVENT_TYPE.getLocalPart()) {

        private static final long serialVersionUID = 1L;

        @Override
        public IModel<String> getDataModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            AuditEventRecordType record = unwrapModel(rowModel);
            if (record == null) {
                return Model.of();
            }
            return WebComponentUtil.createLocalizedModelForEnum(record.getEventType(), AuditLogViewerPanel.this);
        }
    };
    columns.add(eventTypeColumn);
    if (!isObjectHistoryPanel()) {
        LinkColumn<SelectableBean<AuditEventRecordType>> targetRefColumn = new LinkColumn<>(createStringResource("AuditEventRecordType.targetRef"), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_TARGET_REF.getLocalPart()) {

            private static final long serialVersionUID = 1L;

            @Override
            protected IModel<String> createLinkModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
                return new ReadOnlyModel<>(() -> {
                    AuditEventRecordType auditEventRecordType = unwrapModel(rowModel);
                    if (auditEventRecordType == null) {
                        return null;
                    }
                    return WebModelServiceUtils.resolveReferenceName(auditEventRecordType.getTargetRef(), getPageBase(), true);
                });
            }

            @Override
            public boolean isEnabled(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
                return unwrapModel(rowModel) != null && !AuditEventTypeType.DELETE_OBJECT.equals(unwrapModel(rowModel).getEventType());
            }

            @Override
            public void onClick(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
                AuditEventRecordType auditEventRecordType = unwrapModel(rowModel);
                dispatchToObjectDetailsPage(auditEventRecordType.getTargetRef(), getPageBase(), false);
            }
        };
        columns.add(targetRefColumn);
    }
    if (!isObjectHistoryPanel()) {
        LinkColumn<SelectableBean<AuditEventRecordType>> targetOwnerRefColumn = new LinkColumn<>(createStringResource("AuditEventRecordType.targetOwnerRef"), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_TARGET_OWNER_REF.getLocalPart()) {

            private static final long serialVersionUID = 1L;

            @Override
            protected IModel<String> createLinkModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
                return new ReadOnlyModel<>(() -> {
                    AuditEventRecordType auditEventRecordType = unwrapModel(rowModel);
                    if (auditEventRecordType == null) {
                        return null;
                    }
                    return WebModelServiceUtils.resolveReferenceName(auditEventRecordType.getTargetOwnerRef(), getPageBase(), true);
                });
            }

            @Override
            public void onClick(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
                AuditEventRecordType auditEventRecordType = unwrapModel(rowModel);
                dispatchToObjectDetailsPage(auditEventRecordType.getTargetOwnerRef(), getPageBase(), false);
            }

            @Override
            public boolean isEnabled(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
                return unwrapModel(rowModel) != null;
            }
        };
        columns.add(targetOwnerRefColumn);
    }
    IColumn<SelectableBean<AuditEventRecordType>, String> channelColumn = new PropertyColumn<>(createStringResource("AuditEventRecordType.channel"), AuditEventRecordType.F_CHANNEL.getLocalPart(), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_CHANNEL.getLocalPart()) {

        private static final long serialVersionUID = 1L;

        @Override
        public void populateItem(Item<ICellPopulator<SelectableBean<AuditEventRecordType>>> item, String componentId, IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            IModel<String> channelModel = new ReadOnlyModel<String>(() -> {
                AuditEventRecordType auditEventRecordType = unwrapModel(rowModel);
                if (auditEventRecordType == null) {
                    // TODO might we return null?
                    return "";
                }
                String channel = auditEventRecordType.getChannel();
                for (GuiChannel chan : GuiChannel.values()) {
                    if (chan.getUri().equals(channel)) {
                        // WebComponentUtil.createLocalizedModelForEnum(chan, AuditLogViewerPanel.this);
                        return getPageBase().createStringResource(chan).getString();
                    }
                }
                return "";
            });
            // if (channelValue != null) {
            // item.add(new Label(componentId, WebComponentUtil.createLocalizedModelForEnum(channelValue, AuditLogViewerPanel.this)));
            // } else {
            // item.add(new Label(componentId, ""));
            // }
            item.add(new Label(componentId, channelModel));
            item.add(new AttributeModifier("style", new Model<>("width: 10%;")));
        }
    };
    columns.add(channelColumn);
    IColumn<SelectableBean<AuditEventRecordType>, String> outcomeColumn = new PropertyColumn<>(createStringResource("PageAuditLogViewer.outcomeLabel"), AuditEventRecordType.F_OUTCOME.getLocalPart(), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_OUTCOME.getLocalPart()) {

        private static final long serialVersionUID = 1L;

        @Override
        public IModel<String> getDataModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            AuditEventRecordType record = unwrapModel(rowModel);
            if (record == null) {
                return null;
            }
            return WebComponentUtil.createLocalizedModelForEnum(record.getOutcome(), AuditLogViewerPanel.this);
        }
    };
    columns.add(outcomeColumn);
    return columns;
}
Also used : IModel(org.apache.wicket.model.IModel) PropertyColumn(org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn) Label(org.apache.wicket.markup.html.basic.Label) GuiChannel(com.evolveum.midpoint.gui.impl.GuiChannel) AttributeModifier(org.apache.wicket.AttributeModifier) LinkColumn(com.evolveum.midpoint.web.component.data.column.LinkColumn) Item(org.apache.wicket.markup.repeater.Item) InlineMenuItem(com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem) IColumn(org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn) ReadOnlyModel(com.evolveum.midpoint.gui.api.model.ReadOnlyModel) AuditEventRecordType(com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType) SelectableBean(com.evolveum.midpoint.web.component.util.SelectableBean) IModel(org.apache.wicket.model.IModel) ReadOnlyModel(com.evolveum.midpoint.gui.api.model.ReadOnlyModel) Model(org.apache.wicket.model.Model)

Example 20 with ReadOnlyModel

use of com.evolveum.midpoint.gui.api.model.ReadOnlyModel in project midpoint by Evolveum.

the class AuditLogViewerPanel method createNameColumn.

private IColumn<SelectableBean<AuditEventRecordType>, String> createNameColumn() {
    return new LinkColumn<>(createStringResource("AuditEventRecordType.timestamp"), AuditEventRecordType.F_TIMESTAMP.getLocalPart(), SelectableBeanImpl.F_VALUE + "." + AuditEventRecordType.F_TIMESTAMP.getLocalPart()) {

        private static final long serialVersionUID = 1L;

        @Override
        protected IModel<String> createLinkModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            return new ReadOnlyModel<>(() -> {
                AuditEventRecordType record = unwrapModel(rowModel);
                if (record == null) {
                    return null;
                }
                return WebComponentUtil.formatDate(record.getTimestamp());
            });
        }

        @Override
        public IModel<String> getDataModel(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            return createLinkModel(rowModel);
        }

        @Override
        public boolean isEnabled(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            return unwrapModel(rowModel) != null;
        }

        @Override
        public void onClick(IModel<SelectableBean<AuditEventRecordType>> rowModel) {
            AuditEventRecordType record = unwrapModel(rowModel);
            PageParameters parameters = new PageParameters();
            parameters.add(OnePageParameterEncoder.PARAMETER, record.getRepoId());
            getPageBase().navigateToNext(PageAuditLogDetails.class, parameters);
        }
    };
}
Also used : IModel(org.apache.wicket.model.IModel) ReadOnlyModel(com.evolveum.midpoint.gui.api.model.ReadOnlyModel) AuditEventRecordType(com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType) PageParameters(org.apache.wicket.request.mapper.parameter.PageParameters) LinkColumn(com.evolveum.midpoint.web.component.data.column.LinkColumn)

Aggregations

ReadOnlyModel (com.evolveum.midpoint.gui.api.model.ReadOnlyModel)35 Label (org.apache.wicket.markup.html.basic.Label)14 AjaxRequestTarget (org.apache.wicket.ajax.AjaxRequestTarget)13 WebMarkupContainer (org.apache.wicket.markup.html.WebMarkupContainer)10 VisibleBehaviour (com.evolveum.midpoint.web.component.util.VisibleBehaviour)9 IModel (org.apache.wicket.model.IModel)9 ListItem (org.apache.wicket.markup.html.list.ListItem)8 PropertyModel (org.apache.wicket.model.PropertyModel)8 ListView (org.apache.wicket.markup.html.list.ListView)6 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)5 ArrayList (java.util.ArrayList)5 QName (javax.xml.namespace.QName)5 List (java.util.List)4 StringResourceModel (org.apache.wicket.model.StringResourceModel)4 ItemWrapper (com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper)3 PolyString (com.evolveum.midpoint.prism.polystring.PolyString)3 InlineMenuItem (com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem)3 SelectableBean (com.evolveum.midpoint.web.component.util.SelectableBean)3 DisplayType (com.evolveum.midpoint.xml.ns._public.common.common_3.DisplayType)3 IColumn (org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn)3