Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Apr 5, 2023
2 parents d00ca10 + 839ad91 commit 3aefd8b
Show file tree
Hide file tree
Showing 10 changed files with 258 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -169,11 +169,6 @@ public void populateItem(Item<ICellPopulator<SelectableBean<ObjectReferenceType>
assignmentPaths.add(metadataType.getAssignmentPath());
}

if (assignmentPaths.size() == 1) {
cellItem.add(new Label(componentId, createStringResource("DirectAndIndirectAssignmentPanel.type.direct")));
return;
}

AssignmentPathPanel panel = new AssignmentPathPanel(componentId, Model.ofList(assignmentPaths));
cellItem.add(panel);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,6 @@ private <O extends ObjectType> O getObject() {

private void showMetadataPerformed(VW value, AjaxRequestTarget target) {
boolean showMetadata = !value.isShowMetadata();
System.out.println("showMetadataPerformed: " + showMetadata);
value.setShowMetadata(showMetadata);
getValueMetadata().unselect();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.IModel;
Expand Down Expand Up @@ -61,7 +62,11 @@ private void initLayoutForAssignmentPath(ListItem<AssignmentPathMetadataType> it
item.add(new VisibleBehaviour(() -> !getSegments(item).isEmpty()));
item.setOutputMarkupId(true);

item.add(new ObjectReferenceColumnPanel(ID_FIRST_SEGMENT, () -> getSegments(item).get(0).getTargetRef()));
if (hasSegments(item)) {
item.add(new ObjectReferenceColumnPanel(ID_FIRST_SEGMENT, () -> getSegments(item).get(0).getTargetRef()));
} else {
item.add(new Label(ID_FIRST_SEGMENT, createStringResource("DirectAndIndirectAssignmentPanel.type.direct")));
}

IModel<Boolean> openModel = Model.of(false);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!--
~ Copyright (c) 2010-2018 Evolveum
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->

<wicket:panel xmlns:wicket="http://wicket.apache.org">

<div wicket:id="metadata"/>

<wicket:fragment wicket:id="buttons">
<div class="d-flex flex-wrap gap-2 w-100">
<a class="btn btn-outline-primary" wicket:id="close">
<wicket:message key="Button.close"/>
</a>
</div>
</wicket:fragment>
</wicket:panel>
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
* Copyright (C) 2010-2023 Evolveum and contributors
*
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/

package com.evolveum.midpoint.web.component.prism.show;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.impl.prism.panel.PrismValueMetadataPanel;
import com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl;
import com.evolveum.midpoint.web.component.dialog.Popupable;
import com.evolveum.midpoint.web.component.dialog.SimplePopupable;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

/**
* Created by Viliam Repan (lazyman).
*/
public class MetadataPopup extends SimplePopupable<ValueMetadataWrapperImpl> {

private static final long serialVersionUID = 1L;

private static final String ID_METADATA = "metadata";
private static final String ID_BUTTONS = "buttons";
private static final String ID_CLOSE = "close";

private Fragment footer;

public MetadataPopup(String id, IModel<ValueMetadataWrapperImpl> model) {
super(id, model, 400, 200, PageBase.createStringResourceStatic("MetadataPopupable.title"));

initLayout();
}

public @NotNull Component getFooter() {
return footer;
}

private void initLayout() {
PrismValueMetadataPanel metadata = new PrismValueMetadataPanel(ID_METADATA, getModel());
metadata.add(new VisibleBehaviour(() -> getModelObject() != null));
metadata.setOutputMarkupId(true);
add(metadata);

footer = initFooter();
}

private Fragment initFooter() {
Fragment footer = new Fragment(Popupable.ID_FOOTER, ID_BUTTONS, this);

AjaxLink<Void> close = new AjaxLink<>(ID_CLOSE) {

private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
onCloseClicked(target);
}
};
footer.add(close);

return footer;
}

protected void onCloseClicked(AjaxRequestTarget target) {
getPageBase().hideMainPopup(target);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,16 @@
<div class="d-flex align-items-center gap-1">
<i wicket:id="oldValueImage"/>
<div wicket:id="oldValue"/>

<a class="text-secondary" wicket:id="oldMetadata"/>
</div>
</td>
<td class="text-break" wicket:id="newValueContainer">
<div class="d-flex align-items-center gap-1">
<i wicket:id="newValueImage"/>
<div wicket:id="newValue"/>

<a class="text-secondary" wicket:id="newMetadata"/>
</div>
</td>
</wicket:panel>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,20 @@

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.IconComponent;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl;
import com.evolveum.midpoint.model.api.visualizer.VisualizationItemValue;
import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;

public class VisualizationItemLinePanel extends BasePanel<VisualizationItemLineDto> {
Expand All @@ -32,6 +37,8 @@ public class VisualizationItemLinePanel extends BasePanel<VisualizationItemLineD
private static final String ID_NEW_VALUE_CONTAINER = "newValueContainer";
private static final String ID_NEW_VALUE_IMAGE = "newValueImage";
private static final String ID_NEW_VALUE = "newValue";
private static final String ID_OLD_METADATA = "oldMetadata";
private static final String ID_NEW_METADATA = "newMetadata";

public VisualizationItemLinePanel(String id, IModel<VisualizationItemLineDto> model) {
super(id, model);
Expand Down Expand Up @@ -123,5 +130,60 @@ private void initLayout() {
newValueCell.add(newValueImagePanel);

add(newValueCell);

initMetadataButton(oldValueCell, ID_OLD_METADATA, () -> getModelObject().getOldValue());
initMetadataButton(newValueCell, ID_NEW_METADATA, () -> getModelObject().getNewValue());
}

private void initMetadataButton(WebMarkupContainer parent, String id, IModel<VisualizationItemValue> model) {
IModel<ValueMetadataWrapperImpl> metadataModel = createMetadataModel(model);

AjaxIconButton metadata = new AjaxIconButton(id, Model.of("fa fa-sm fa-tag"),
createStringResource("VisualizationItemLinePanel.metadata")) {

@Override
public void onClick(AjaxRequestTarget target) {
showMetadata(target, metadataModel);
}
};
metadata.add(new VisibleBehaviour(() -> {
VisualizationItemValue val = model.getObject();
return val != null && val.getSourceValue() != null && !getModelObject().isNullEstimatedOldValues() && metadataModel.getObject() != null;
}));
parent.add(metadata);
}

private IModel<ValueMetadataWrapperImpl> createMetadataModel(IModel<VisualizationItemValue> model) {
return new LoadableDetachableModel() {
@Override
protected Object load() {
VisualizationItemValue item = model.getObject();
if (item == null) {
return null;
}

return VisualizationUtil.createValueMetadataWrapper(item.getSourceValue(), getPageBase());
}
};
}

private void showMetadata(AjaxRequestTarget target, IModel<ValueMetadataWrapperImpl> model) {
PageBase page = getPageBase();
page.showMainPopup(new MetadataPopup(page.getMainPopupBodyId(), model), target);
}

// private ItemPanelSettings createMetadataPanelSettings() {
// return new ItemPanelSettingsBuilder()
// .editabilityHandler(wrapper -> true)
// .headerVisibility(false)
// .visibilityHandler(w -> createItemVisibilityBehavior(w))
// .build();
// }
//
// private ItemVisibility createItemVisibilityBehavior(ItemWrapper<?, ?> w) {
// if (getModelObject().isShowMetadataDetails()) {
// return w instanceof PrismContainerWrapper ? ItemVisibility.HIDDEN : ItemVisibility.AUTO;
// }
// return w.isShowMetadataDetails() ? ItemVisibility.AUTO : ItemVisibility.HIDDEN;
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ <h3 class="card-title">
<a wicket:id="nameLink"/> <span wicket:id="description"/>
</small>
</wicket:container>
<a class="text-secondary" wicket:id="metadata"/>
<i class="fa fa-triangle-exclamation text-warning mr-1" wicket:id="warning" wicket:message="title:ScenePanel.warningMessage"></i>
</h3>
<wicket:enclosure child="minimize">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,18 @@
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.string.Strings;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.gui.api.component.IconComponent;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.LocalizationUtil;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.prism.wrapper.ValueMetadataWrapperImpl;
import com.evolveum.midpoint.model.api.visualizer.Visualization;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismContainerValue;
Expand Down Expand Up @@ -59,6 +63,7 @@ public class VisualizationPanel extends BasePanel<VisualizationDto> {
private static final String ID_BODY = "body";
private static final String ID_WARNING = "warning";
private static final String ID_VISUALIZATION = "visualization";
private static final String ID_METADATA = "metadata";

private final boolean advanced;

Expand Down Expand Up @@ -93,7 +98,7 @@ protected void onInitialize() {
private void initModels() {
overviewModel = () -> {
Visualization visualization = getModelObject().getVisualization();
if (visualization == null || visualization.getName() == null) {
if (visualization.getName() == null) {
return null;
}

Expand Down Expand Up @@ -144,11 +149,11 @@ protected void onEvent(AjaxRequestTarget target) {

IModel<String> iconModel = () -> {
Visualization visualization = getModelObject().getVisualization();
if (visualization == null || visualization.getSourceValue() == null) {
if (visualization.getSourceValue() == null) {
return null;
}

PrismContainerValue value = visualization.getSourceValue();
PrismContainerValue<?> value = visualization.getSourceValue();
QName type = value.getTypeName();
String icon = WebComponentUtil.createDefaultBlackIcon(type);

Expand Down Expand Up @@ -215,6 +220,21 @@ public void onClick(AjaxRequestTarget target) {
description.add(visibleIfNotWrapper);
fullDescription.add(description);

IModel<ValueMetadataWrapperImpl> metadataModel = createMetadataModel();
AjaxIconButton metadata = new AjaxIconButton(ID_METADATA, Model.of("fa fa-sm fa-tag"),
createStringResource("VisualizationItemLinePanel.metadata")) {

@Override
public void onClick(AjaxRequestTarget target) {
showMetadata(target, metadataModel);
}
};
metadata.add(new VisibleBehaviour(() -> {
VisualizationDto val = model.getObject();
return val != null && val.getVisualization().getSourceValue() != null && metadataModel.getObject() != null;
}));
headerPanel.add(metadata);

final Label warning = new Label(ID_WARNING);
warning.add(new VisibleBehaviour(() -> getModelObject().getVisualization().isBroken()));
warning.add(new TooltipBehavior());
Expand All @@ -236,7 +256,7 @@ public void onClick(AjaxRequestTarget target) {
headerOnClickPerformed(target, VisualizationPanel.this.getModel());
}
};
minimize.add(new VisibleBehaviour(() -> hasBodyContent()));
minimize.add(new VisibleBehaviour(this::hasBodyContent));
headerPanel.add(minimize);

final WebMarkupContainer body = new WebMarkupContainer(ID_BODY);
Expand All @@ -254,6 +274,23 @@ public void onClick(AjaxRequestTarget target) {
body.add(visualization);
}

private void showMetadata(AjaxRequestTarget target, IModel<ValueMetadataWrapperImpl> model) {
PageBase page = getPageBase();
page.showMainPopup(new MetadataPopup(page.getMainPopupBodyId(), model), target);
}

private IModel<ValueMetadataWrapperImpl> createMetadataModel() {
return new LoadableDetachableModel<>() {

@Override
protected ValueMetadataWrapperImpl load() {
Visualization visualization = getModelObject().getVisualization();

return VisualizationUtil.createValueMetadataWrapper(visualization.getSourceValue(), getPageBase());
}
};
}

private boolean hasBodyContent() {
VisualizationDto dto = getModelObject();
if (dto.hasNonOperationalContent()) {
Expand All @@ -271,7 +308,7 @@ protected boolean isExistingViewableObject() {
return false;
}

PrismObject obj = (PrismObject) value.getParent();
PrismObject<?> obj = (PrismObject<?>) value.getParent();

return WebComponentUtil.hasDetailsPage(obj) &&
obj.getOid() != null && (visualization.getSourceDelta() == null || !visualization.getSourceDelta().isAdd());
Expand Down Expand Up @@ -305,7 +342,7 @@ private boolean isAutorized() {

private static class ChangeTypeModel implements IModel<String> {

private IModel<VisualizationDto> visualization;
private final IModel<VisualizationDto> visualization;

public ChangeTypeModel(@NotNull IModel<VisualizationDto> visualization) {
this.visualization = visualization;
Expand All @@ -318,13 +355,13 @@ public String getObject() {
return null;
}

return LocalizationUtil.translate(WebComponentUtil.createEnumResourceKey(changeType));
return LocalizationUtil.translate(LocalizationUtil.createKeyForEnum(changeType));
}
}

private static class ObjectTypeModel implements IModel<String> {

private IModel<VisualizationDto> visualization;
private final IModel<VisualizationDto> visualization;

public ObjectTypeModel(@NotNull IModel<VisualizationDto> visualization) {
this.visualization = visualization;
Expand Down

0 comments on commit 3aefd8b

Please sign in to comment.