Skip to content

Commit

Permalink
MID-7976 conflict solver panels impl integrated into wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Jun 17, 2022
1 parent ec36213 commit e351771
Show file tree
Hide file tree
Showing 13 changed files with 642 additions and 468 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,25 +117,21 @@ protected IModel<String> getSubTextModel() {
return Model.of();
}

protected void onNextPerformed(AjaxRequestTarget target) {
public boolean onNextPerformed(AjaxRequestTarget target) {
getWizard().next();
target.add(getWizard().getPanel());

return false;
}

protected void onBackPerformed(AjaxRequestTarget target) {
public boolean onBackPerformed(AjaxRequestTarget target) {
int index = getWizard().getActiveStepIndex();
if (index > 0) {
getWizard().previous();
target.add(getWizard().getPanel());
return;
}
onBackAfterWizardPerformed(target);
}

// todo why is this needed? please remove and use onBackPerformed(AjaxRequestTarget)
@Deprecated
protected void onBackAfterWizardPerformed(AjaxRequestTarget target) {
getPageBase().redirectBack();
return false;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright (c) 2022 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.gui.api.component.wizard;

import com.evolveum.midpoint.web.component.util.SerializableSupplier;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.jetbrains.annotations.NotNull;

/**
* Created by Viliam Repan (lazyman).
*/
public class BehaviourDelegator extends Behavior {

private SerializableSupplier<Behavior> behaviour;

public BehaviourDelegator(@NotNull SerializableSupplier<Behavior> behaviour) {
this.behaviour = behaviour;
}

@Override
public void onConfigure(Component component) {
Behavior real = behaviour.get();
if (real != null) {
real.onConfigure(component);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,17 @@

package com.evolveum.midpoint.gui.api.component.wizard;

import com.evolveum.midpoint.web.component.util.SerializableSupplier;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.jetbrains.annotations.NotNull;

import com.evolveum.midpoint.gui.api.component.BasePanel;

import org.jetbrains.annotations.NotNull;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

/**
* Created by Viliam Repan (lazyman).
Expand Down Expand Up @@ -117,21 +113,4 @@ protected void onBackPerformed(AjaxRequestTarget target) {
protected void onNextPerformed(AjaxRequestTarget target) {

}

private static class BehaviourDelegator extends Behavior {

private SerializableSupplier<VisibleEnableBehaviour> behaviour;

public BehaviourDelegator(@NotNull SerializableSupplier<VisibleEnableBehaviour> behaviour) {
this.behaviour = behaviour;
}

@Override
public void onConfigure(Component component) {
VisibleEnableBehaviour real = behaviour.get();
if (real != null) {
real.onConfigure(component);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ private void initLayout() {
add(AttributeAppender.append("class", () -> getCurrentPanel().appendCssToWizard()));

WebMarkupContainer header = new WebMarkupContainer(ID_HEADER);
header.add(new BehaviourDelegator(() -> getCurrentPanel().getStepsBehaviour()));
header.setOutputMarkupId(true);
add(header);

Expand Down Expand Up @@ -107,6 +108,11 @@ protected Component createHeaderContent(String id) {

@Override
protected void onBackPerformed(AjaxRequestTarget target) {
boolean executeDefaultBehaviour = wizardModel.getActiveStep().onBackPerformed(target);
if (!executeDefaultBehaviour) {
return;
}

if (wizardModel.getActiveStepIndex() == 0) {
getPageBase().redirectBack();
} else {
Expand All @@ -118,6 +124,11 @@ protected void onBackPerformed(AjaxRequestTarget target) {

@Override
protected void onNextPerformed(AjaxRequestTarget target) {
boolean executeDefaultBehaviour = wizardModel.getActiveStep().onNextPerformed(target);
if (!executeDefaultBehaviour) {
return;
}

wizardModel.next();

target.add(WizardPanel.this);
Expand All @@ -128,20 +139,7 @@ protected void onNextPerformed(AjaxRequestTarget target) {
return wizardModel.getActiveStep().getNextBehaviour();
}
};
contentHeader.add(new VisibleEnableBehaviour() {

@Override
public boolean isVisible() {
VisibleEnableBehaviour b = getCurrentPanel().getHeaderBehaviour();
return b != null ? b.isVisible() : true;
}

@Override
public boolean isEnabled() {
VisibleEnableBehaviour b = getCurrentPanel().getHeaderBehaviour();
return b != null ? b.isEnabled() : true;
}
});
contentHeader.add(new BehaviourDelegator(() -> getCurrentPanel().getHeaderBehaviour()));
contentHeader.setOutputMarkupId(true);
add(contentHeader);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,12 @@
import java.util.ArrayList;
import java.util.List;

import com.evolveum.midpoint.web.component.util.SerializableConsumer;
import com.evolveum.midpoint.web.component.util.SerializableSupplier;

import org.apache.wicket.Application;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

Expand Down Expand Up @@ -47,6 +51,10 @@ default IModel<List<Badge>> getTitleBadges() {
return Model.ofList(new ArrayList<>());
}

default VisibleEnableBehaviour getStepsBehaviour() {
return VisibleEnableBehaviour.ALWAYS_INVISIBLE;
}

default VisibleEnableBehaviour getHeaderBehaviour() {
return VisibleEnableBehaviour.ALWAYS_VISIBLE_ENABLED;
}
Expand All @@ -58,4 +66,22 @@ default VisibleEnableBehaviour getBackBehaviour() {
default VisibleEnableBehaviour getNextBehaviour() {
return VisibleEnableBehaviour.ALWAYS_VISIBLE_ENABLED;
}

/**
* @return flag whether default "back" button action should be executed.
* If true, default behaviour of back button will be executed as well
* If false, only code in this method will be executed
*/
default boolean onBackPerformed(AjaxRequestTarget target) {
return true;
}

/**
* @return flag whether default "next" button action should be executed.
* If true, default behaviour of back button will be executed as well
* If false, only code in this method will be executed
*/
default boolean onNextPerformed(AjaxRequestTarget target) {
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,13 +105,24 @@ protected void initFragmentLayout() {
}

private List<WizardStep> createSteps() {
BasicSettingStepPanel basicSettings = new BasicSettingStepPanel(getObjectDetailsModels()){
BasicSettingStepPanel basicSettings = new BasicSettingStepPanel(getObjectDetailsModels()) {

@Override
protected void onBackAfterWizardPerformed(AjaxRequestTarget target) {
public boolean onBackPerformed(AjaxRequestTarget target) {
super.onBackPerformed(target);

// index is already lowered
int index = getWizard().getActiveStepIndex();
if (index == 0) {
return false;
}

Fragment fragment = createTemplateFragment();
fragment.setOutputMarkupId(true);
PageResource.this.replace(fragment);
target.add(fragment);

return false;
}
};

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<!--
~ Copyright (c) 2022 Evolveum and contributors
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div class="col-md-12 col-xl-7 col-lg-8 col-xxl-9">
<div wicket:id="table"/>
</div>
<div class="col-md-12 col-xl-5 col-lg-4 col-xxl-3">
<div class="card">
<div class="card-header">
<h3 class="card-title">
<i class="fas fa-cash-register mr-1"></i>
<wicket:message key="ShoppingCartPanel.checkout"/>
</h3>
</div>
<div class="card-body d-flex flex-column gap-3 pb-1">
<wicket:enclosure wicket:child="validity">
<div class="form-group mb-0">
<label>
<wicket:message key="ShoppingCartPanel.validity"/>
<i class="fas fa-info-circle fa-xs text-primary"></i>
</label>
<select class="form-control" wicket:id="validity"/>
</div>
</wicket:enclosure>
<wicket:enclosure wicket:child="comment">
<div class="form-group mb-0">
<label>
<wicket:message key="ShoppingCartPanel.comment"/>
<i class="fas fa-info-circle fa-xs text-primary"></i>
</label>
<textarea class="form-control" rows="4" wicket:id="comment"></textarea>
</div>
</wicket:enclosure>
<a class="btn btn-danger" wicket:id="openConflict">
<i class="fas fa-triangle-exclamation mr-1"></i>
<wicket:message key="ShoppingCartPanel.openConflict"/>
</a>
<a class="btn btn-success" wicket:id="submit">
<i class="fas fa-credit-card mr-1"></i>
<wicket:message key="ShoppingCartPanel.submit"/>
</a>
</div>
</div>
</div>
</wicket:panel>

<wicket:fragment wicket:id="tableHeaderFragment">
<h3 class="card-title">
<i class="fa-solid fa-cart-shopping mr-1"></i>
<wicket:message key="ShoppingCartPanel.tableHeader"/>
</h3>
</wicket:fragment>

<wicket:fragment wicket:id="tableFooterFragment">
<a class="btn btn-outline-primary" wicket:id="clearCart">
<i class="fa-solid fa-recycle mr-1"></i>
<wicket:message key="ShoppingCartPanel.clearCart"/>
</a>
</wicket:fragment>

<wicket:fragment wicket:id="tableButtonColumn">
<a class="btn btn-xs btn-outline-primary px-2" wicket:id="edit" wicket:message="title:ShoppingCartPanel.edit">
<i class="fas fa-pen-to-square"></i>
</a>
<a class="btn btn-xs btn-outline-danger px-2" wicket:id="remove" wicket:message="title:ShoppingCartPanel.remove">
<i class="fas fa-trash-can"></i>
</a>
</wicket:fragment>
</html>

0 comments on commit e351771

Please sign in to comment.