Skip to content

Commit

Permalink
simulation ui, more visualization panel cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Feb 20, 2023
1 parent 0f842a6 commit d94e55f
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public ChangesPanel(String id, IModel<List<ObjectDeltaType>> model) {
}

private void initModels() {
changesViewModel = Model.of(ChangesView.SIMPLE);
changesViewModel = Model.of(ChangesView.ADVANCED);

IModel<Visualization> visualizationModel = new LoadableModel<>(false) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ <h3 class="card-title">
<span wicket:id="changeType"/>
<span wicket:id="objectType"/>
<small>
<span wicket:id="nameLabel"/><span wicket:id="nameLink"/> <span wicket:id="description"/>
<a wicket:id="nameLink"/> <span wicket:id="description"/>
</small>
<i class="fa fa-triangle-exclamation text-warning mr-1" wicket:id="warning" wicket:message="title:ScenePanel.warningMessage"></i>
</h3>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
Expand All @@ -29,8 +31,9 @@
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.web.component.data.column.AjaxLinkPanel;
import com.evolveum.midpoint.web.component.AjaxButton;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.util.TooltipBehavior;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;

Expand Down Expand Up @@ -70,15 +73,6 @@ protected void onInitialize() {
initLayout();
}

private AjaxEventBehavior createHeaderOnClickBehaviour(final IModel<VisualizationDto> model) {
return new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget target) {
headerOnClickPerformed(target, model);
}
};
}

private void initLayout() {
add(AttributeAppender.append("class", "card card-outline-left"));
add(AttributeModifier.append("class", () -> {
Expand All @@ -95,82 +89,79 @@ private void initLayout() {

final VisibleBehaviour visibleIfNotWrapper = new VisibleBehaviour(() -> !getModelObject().isWrapper());
final VisibleBehaviour visibleIfWrapper = new VisibleBehaviour(() -> getModelObject().isWrapper());
final VisibleBehaviour visibleIfExistingObjectAndAuthorized = new VisibleBehaviour(() -> {
if (getModelObject().isWrapper()) {
return false;
}
return isExistingViewableObject() && isAutorized();
});
final VisibleBehaviour visibleIfNotWrapperAndNotExistingObjectAndNotAuthorized = new VisibleBehaviour(() -> {
if (getModelObject().isWrapper()) {
return false;
}
return !isExistingViewableObject() || !isAutorized();
});

final IModel<VisualizationDto> model = getModel();

final WebMarkupContainer headerPanel = new WebMarkupContainer(ID_HEADER_PANEL);
add(headerPanel);

headerPanel.add(new VisualizationButtonPanel(ID_OPTION_BUTTONS, model) {
headerPanel.add(new AjaxEventBehavior("click") {
@Override
public void minimizeOnClick(AjaxRequestTarget target) {
protected void onEvent(AjaxRequestTarget target) {
headerOnClickPerformed(target, model);
}
});
add(headerPanel);

final Label wrapperDisplayName = new Label(ID_WRAPPER_DISPLAY_NAME, () -> {
WrapperVisualization visualization = ((WrapperVisualization) getModelObject().getVisualization());
String key = visualization.getDisplayNameKey();
Object[] parameters = visualization.getDisplayNameParameters();
return LocalizationUtil.translate(key, parameters);
});
wrapperDisplayName.add(visibleIfWrapper);
headerPanel.add(wrapperDisplayName);

final Label headerChangeType = new Label(ID_CHANGE_TYPE, new ChangeTypeModel());
headerChangeType.add(createHeaderOnClickBehaviour(model));
headerChangeType.add(visibleIfNotWrapper);
headerPanel.add(headerChangeType);
final Label changeType = new Label(ID_CHANGE_TYPE, new ChangeTypeModel());
changeType.add(visibleIfNotWrapper);
headerPanel.add(changeType);

final Label headerObjectType = new Label(ID_OBJECT_TYPE, new ObjectTypeModel());
headerObjectType.add(createHeaderOnClickBehaviour(model));
headerObjectType.add(visibleIfNotWrapper);
headerPanel.add(headerObjectType);
final Label objectType = new Label(ID_OBJECT_TYPE, new ObjectTypeModel());
objectType.add(visibleIfNotWrapper);
headerPanel.add(objectType);

IModel<String> nameModel = () -> model.getObject().getName(VisualizationPanel.this);
final AjaxButton nameLink = new AjaxButton(ID_NAME_LINK, () -> getModelObject().getName(this)) {

final Label headerNameLabel = new Label(ID_NAME_LABEL, nameModel);
headerNameLabel.add(createHeaderOnClickBehaviour(model));
headerNameLabel.add(visibleIfNotWrapperAndNotExistingObjectAndNotAuthorized);
headerPanel.add(headerNameLabel);
@Override
protected void disableLink(ComponentTag tag) {
super.disableLink(tag);

tag.setName("span");
}

final AjaxLinkPanel headerNameLink = new AjaxLinkPanel(ID_NAME_LINK, nameModel) {
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
super.updateAjaxAttributes(attributes);
attributes.setEventPropagation(AjaxRequestAttributes.EventPropagation.STOP);
attributes.setPreventDefault(true);
}

@Override
public void onClick(AjaxRequestTarget target) {
PrismContainerValue<?> value = getModelObject().getVisualization().getSourceValue();
PrismContainerValue<?> value = VisualizationPanel.this.getModelObject().getVisualization().getSourceValue();
if (value != null && value.getParent() instanceof PrismObject) {
PrismObject<? extends ObjectType> object = (PrismObject<? extends ObjectType>) value.getParent();
WebComponentUtil.dispatchToObjectDetailsPage(ObjectTypeUtil.createObjectRef(object, getPageBase().getPrismContext()), getPageBase(), false);
}
}
};
headerNameLink.add(visibleIfExistingObjectAndAuthorized);
headerPanel.add(headerNameLink);

final Label headerDescription = new Label(ID_DESCRIPTION, () -> getModelObject().getDescription(VisualizationPanel.this));
headerDescription.add(createHeaderOnClickBehaviour(model));
headerDescription.add(visibleIfNotWrapper);
headerPanel.add(headerDescription);
nameLink.add(new VisibleEnableBehaviour(() -> !getModelObject().isWrapper(), () -> isExistingViewableObject() && isAutorized()));
headerPanel.add(nameLink);

final Label headerWrapperDisplayName = new Label(ID_WRAPPER_DISPLAY_NAME, () -> {
WrapperVisualization visualization = ((WrapperVisualization) getModelObject().getVisualization());
String key = visualization.getDisplayNameKey();
Object[] parameters = visualization.getDisplayNameParameters();
return LocalizationUtil.translate(key, parameters);
});
headerWrapperDisplayName.add(createHeaderOnClickBehaviour(model));
headerWrapperDisplayName.add(visibleIfWrapper);
headerPanel.add(headerWrapperDisplayName);
final Label description = new Label(ID_DESCRIPTION, () -> getModelObject().getDescription(VisualizationPanel.this));
description.add(visibleIfNotWrapper);
headerPanel.add(description);

final Label warning = new Label(ID_WARNING);
warning.add(new VisibleBehaviour(() -> getModelObject().getVisualization().isBroken()));
warning.add(new TooltipBehavior());
headerPanel.add(warning);

headerPanel.add(new VisualizationButtonPanel(ID_OPTION_BUTTONS, model) {
@Override
public void minimizeOnClick(AjaxRequestTarget target) {
headerOnClickPerformed(target, model);
}
});

final WebMarkupContainer body = new WebMarkupContainer(ID_BODY);
body.add(new VisibleBehaviour(() -> {
VisualizationDto dto = getModelObject();
Expand All @@ -186,11 +177,15 @@ public void onClick(AjaxRequestTarget target) {
protected boolean isExistingViewableObject() {
final Visualization visualization = getModelObject().getVisualization();
final PrismContainerValue<?> value = visualization.getSourceValue();
return value != null &&
value.getParent() instanceof PrismObject &&
WebComponentUtil.hasDetailsPage((PrismObject) value.getParent()) &&
((PrismObject) value.getParent()).getOid() != null &&
(visualization.getSourceDelta() == null || !visualization.getSourceDelta().isAdd());

if (value == null || !(value.getParent() instanceof PrismObject)) {
return false;
}

PrismObject obj = (PrismObject) value.getParent();

return WebComponentUtil.hasDetailsPage(obj) &&
obj.getOid() != null && (visualization.getSourceDelta() == null || !visualization.getSourceDelta().isAdd());
}

public void headerOnClickPerformed(AjaxRequestTarget target, IModel<VisualizationDto> model) {
Expand Down

0 comments on commit d94e55f

Please sign in to comment.