Skip to content

Commit

Permalink
revert selection step of resource wizard to panel
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Jun 8, 2022
1 parent adb3a87 commit 7f718a0
Show file tree
Hide file tree
Showing 16 changed files with 333 additions and 146 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@

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

import com.evolveum.midpoint.gui.api.component.BasePanel;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;

import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.markup.html.WebMarkupContainer;
Expand Down Expand Up @@ -44,7 +43,9 @@ private void initLayout() {
add(new Label(ID_TEXT, getTextModel()));
add(new Label(ID_SUBTEXT, getSubTextModel()));

add(createContentPanel(ID_CONTENT));
Component contentPanel = createContentPanel(ID_CONTENT);
contentPanel.setOutputMarkupId(true);
add(contentPanel);

AjaxLink back = new AjaxLink<>(ID_BACK) {

Expand All @@ -58,24 +59,33 @@ public void onClick(AjaxRequestTarget target) {
back.setOutputMarkupPlaceholderTag(true);
add(back);

AjaxLink next = new AjaxLink<>(ID_NEXT) {
AjaxSubmitButton next = new AjaxSubmitButton(ID_NEXT) {

@Override
public void onClick(AjaxRequestTarget target) {
public void onSubmit(AjaxRequestTarget target) {
onNextPerformed(target);
}

@Override
protected void onError(AjaxRequestTarget target) {
updateFeedbackPanels(target);
}
};
next.add(getNextBehaviour());
next.setOutputMarkupId(true);
next.setOutputMarkupPlaceholderTag(true);
next.setDefaultFormProcessing(true);
add(next);

Label nextLabel = new Label(ID_NEXT_LABEL, createNextStepLabel());
next.add(nextLabel);

}

protected Component createContentPanel(String id) {
protected void updateFeedbackPanels(AjaxRequestTarget target) {
}

protected WebMarkupContainer createContentPanel(String id) {
return new WebMarkupContainer(id);
}

Expand All @@ -100,18 +110,30 @@ private void onNextPerformed(AjaxRequestTarget target) {
target.add(getParent());
}

protected void onBackPerformed(AjaxRequestTarget target) {
private void onBackPerformed(AjaxRequestTarget target) {
int index = getWizard().getActiveStepIndex();
if (index > 0) {
getWizard().previous();
target.add(getParent());
return;
}
onBackBeforeWizardPerformed(target);
}

protected void onBackBeforeWizardPerformed(AjaxRequestTarget target) {
getPageBase().redirectBack();
}

@Override
public VisibleEnableBehaviour getHeaderBehaviour() {
return VisibleEnableBehaviour.ALWAYS_INVISIBLE;
}

protected WebMarkupContainer getContent() {
return (WebMarkupContainer) get(ID_CONTENT);
}

protected AjaxSubmitButton getNextButton(){
return (AjaxSubmitButton) get(ID_NEXT);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ private void initLayout() {

WebMarkupContainer header = new WebMarkupContainer(ID_HEADER);
header.setOutputMarkupId(true);
header.add(getVisibilityOfStepsHeader());
add(header);

ListView<IModel<String>> steps = new ListView<>(ID_STEPS, () -> wizardModel.getSteps().stream().map(s -> s.getTitle()).collect(Collectors.toList())) {
Expand Down Expand Up @@ -149,11 +148,6 @@ public boolean isEnabled() {
addOrReplace(new WebMarkupContainer(ID_CONTENT_BODY));
}

@NotNull
protected VisibleEnableBehaviour getVisibilityOfStepsHeader() {
return VisibleEnableBehaviour.ALWAYS_VISIBLE_ENABLED;
}

public WizardStep getCurrentPanel() {
return wizardModel.getActiveStep();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<!--
~ Copyright (c) 2010-2014 Evolveum
~
~ This work is dual-licensed under the Apache License 2.0
~ and European Union Public License. See LICENSE file for details.
-->
<html xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<wicket:container wicket:id="list">
<span class="invalid-feedback d-block" wicket:id="message"/>
</wicket:container>
</wicket:panel>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*
* Copyright (c) 2010-2014 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.impl.component.message;

import com.evolveum.midpoint.web.component.message.FeedbackAlerts;
import com.evolveum.midpoint.web.component.message.FeedbackListView;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.feedback.FeedbackMessagesModel;
import org.apache.wicket.feedback.IFeedback;
import org.apache.wicket.feedback.IFeedbackMessageFilter;
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.markup.html.panel.Panel;
import org.apache.wicket.model.PropertyModel;

import java.util.List;

/**
* @author lazyman
*/
public class FeedbackLabels extends FeedbackAlerts {

private static final String ID_LIST = "list";
private static final String ID_MESSAGE = "message";

public FeedbackLabels(String id) {
super(id);
}

protected void initLayout() {
ListView<FeedbackMessage> list = new ListView<>(ID_LIST, new FeedbackMessagesModel(this)) {
@Override
protected void populateItem(ListItem<FeedbackMessage> item) {
item.add(
new Label(ID_MESSAGE, new PropertyModel<>(item.getModel(), "message")));
}
};
list.add(new VisibleEnableBehaviour() {

@Override
public boolean isVisible() {
return hasMessages();
}
});
add(list);
}

protected ListView<FeedbackMessage> getFeedbackListView() {
return (ListView<FeedbackMessage>) get(ID_LIST);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,12 @@ protected void onInitialize() {
}

protected void initTemplateLayout() {
add(createTemplatePanel());
add(createTemplatePanel(ID_TEMPLATE));
}
}

private WebMarkupContainer createTemplatePanel() {
return new CreateTemplatePanel<>(ID_TEMPLATE) {
protected WebMarkupContainer createTemplatePanel(String id) {
return new CreateTemplatePanel<>(id) {

@Override
protected Collection<CompiledObjectCollectionView> findAllApplicableArchetypeViews() {
Expand Down Expand Up @@ -125,18 +125,14 @@ protected void onTemplateChosePerformed(CompiledObjectCollectionView collectionV
}

reloadObjectDetailsModel(assignmentHolder);
Fragment fragment = createFragmentAfterChoseTemplate();
Fragment fragment = createDetailsFragment();
fragment.setOutputMarkupId(true);
PageAssignmentHolderDetails.this.replace(fragment);
target.add(fragment);
}
};
}

protected Fragment createFragmentAfterChoseTemplate() {
return createDetailsFragment();
}

protected List<ObjectReferenceType> getArchetypeReferencesList(CompiledObjectCollectionView collectionViews) {
return ObjectCollectionViewUtil.getArchetypeReferencesList(collectionViews);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,24 @@
import com.evolveum.midpoint.gui.api.component.wizard.WizardModel;
import com.evolveum.midpoint.gui.api.component.wizard.WizardPanel;
import com.evolveum.midpoint.gui.api.component.wizard.WizardStep;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
import com.evolveum.midpoint.gui.impl.page.admin.DetailsFragment;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.PageAssignmentHolderDetails;
import com.evolveum.midpoint.gui.impl.page.admin.component.ResourceOperationalButtonsPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.BasicSettingStepPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.ConfigurationStepPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.CreateResourceTemplatePanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.DiscoveryStepPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.ResourceTemplateStepPanel;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.authentication.api.authorization.AuthorizationAction;
import com.evolveum.midpoint.authentication.api.authorization.PageDescriptor;
import com.evolveum.midpoint.authentication.api.authorization.Url;

import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.html.panel.Panel;
Expand All @@ -42,8 +41,6 @@
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.web.page.admin.resources.ResourceSummaryPanel;

import org.jetbrains.annotations.NotNull;

@PageDescriptor(
urls = {
@Url(mountUrl = "/admin/resource")
Expand All @@ -61,9 +58,6 @@ public class PageResource extends PageAssignmentHolderDetails<ResourceType, Reso
private static final String ID_WIZARD_VIEW = "wizardView";
private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_WIZARD = "wizard";
private static final String ID_SELECTION = "selection";
private static final String ID_BASIC_SETTINGS = "basicSettings";
private static final String ID_CONFIGURATION = "configuration";

public PageResource(PageParameters pageParameters) {
super(pageParameters);
Expand All @@ -73,29 +67,27 @@ public PageResource(PrismObject<ResourceType> resource) {
super(resource);
}

@Override
protected void initLayout() {
if (isAdd()) {
Fragment fragment;
if (isApplicableTemplate()) {
fragment = createTemplateFragment();
} else {
fragment = createWizardFragment();
}
add(fragment);
} else {
super.initLayout();
}
}

@Override
public Class<ResourceType> getType() {
return ResourceType.class;
}

@Override
protected Fragment createFragmentAfterChoseTemplate() {
return createWizardFragment();
protected boolean isApplicableTemplate() {
return true;
}

protected WebMarkupContainer createTemplatePanel(String id) {
return new CreateResourceTemplatePanel(id) {

@Override
protected void onTemplateChosePerformed(PrismObject<ResourceType> newObject, AjaxRequestTarget target) {
reloadObjectDetailsModel(newObject);
Fragment fragment = createWizardFragment();
fragment.setOutputMarkupId(true);
PageResource.this.replace(fragment);
target.add(fragment);
}
};
}

private Fragment createWizardFragment() {
Expand All @@ -105,38 +97,29 @@ private Fragment createWizardFragment() {
protected void initFragmentLayout() {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);
WizardPanel wizard = new WizardPanel(ID_WIZARD, new WizardModel(PageResource.this.createSteps())){
@Override
protected @NotNull VisibleEnableBehaviour getVisibilityOfStepsHeader() {
return new VisibleEnableBehaviour(() -> getWizardModel().getActiveStepIndex() > 0);
}
};
WizardPanel wizard = new WizardPanel(ID_WIZARD, new WizardModel(PageResource.this.createSteps()));
wizard.setOutputMarkupId(true);
mainForm.add(wizard);
}
};
}

private List<WizardStep> createSteps() {

ResourceTemplateStepPanel selection = new ResourceTemplateStepPanel(getObjectDetailsModels()) {
BasicSettingStepPanel basicSettings = new BasicSettingStepPanel(getObjectDetailsModels()){
@Override
public PageBase getPageBase() {
return PageResource.this;
protected void onBackBeforeWizardPerformed(AjaxRequestTarget target) {
Fragment fragment = createTemplateFragment();
fragment.setOutputMarkupId(true);
PageResource.this.replace(fragment);
target.add(fragment);
}
};

BasicSettingStepPanel basicSettings = new BasicSettingStepPanel(getObjectDetailsModels());

ConfigurationStepPanel configuration = new ConfigurationStepPanel(getObjectDetailsModels());

DiscoveryStepPanel discover = new DiscoveryStepPanel(getObjectDetailsModels());

return List.of(selection, basicSettings, configuration, discover);
}

private WizardPanel getWizardPanel() {
return (WizardPanel) get(createComponentPath(ID_DETAILS_VIEW, ID_MAIN_FORM, ID_WIZARD));
return List.of(basicSettings, configuration, discover);
}

@Override
Expand Down

0 comments on commit 7f718a0

Please sign in to comment.