diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.html index 2ef3036db5c..bc1e735c222 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.html @@ -47,6 +47,7 @@
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java index fb1c16463a9..8b69ab44f8e 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressPanel.java @@ -21,10 +21,12 @@ import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.web.component.AjaxSubmitButton; import com.evolveum.midpoint.web.component.form.Form; +import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails; import com.evolveum.midpoint.web.page.admin.server.dto.OperationResultStatusIcon; import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultStatusType; import org.apache.wicket.AttributeModifier; +import org.apache.wicket.Page; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; @@ -221,8 +223,30 @@ protected void onError(AjaxRequestTarget target, target.add(page.getFeedbackPanel()); } }; - progressReporter.registerAbortButton(abortButton); - progressForm.add(abortButton); + + progressReporter.registerAbortButton(abortButton); + progressForm.add(abortButton); + + AjaxSubmitButton backButton = new AjaxSubmitButton("back", + createStringResource("pageAdminFocus.button.back")) { + + @Override + protected void onSubmit(AjaxRequestTarget target, + org.apache.wicket.markup.html.form.Form> form) { + Page page = getPage(); + if (page != null && page instanceof PageAdminObjectDetails){ + setResponsePage(((PageAdminObjectDetails) page).getDefaultBackPage()); + } + } + + @Override + protected void onError(AjaxRequestTarget target, + org.apache.wicket.markup.html.form.Form> form) { + target.add(page.getFeedbackPanel()); + } + }; + progressReporter.registerBackButton(backButton); + progressForm.add(backButton); } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressReporter.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressReporter.java index cdc99649898..c0c37f8b204 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressReporter.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/progress/ProgressReporter.java @@ -68,6 +68,7 @@ public class ProgressReporter implements Serializable { // links to wicket artefacts on parent page private AjaxSubmitButton abortButton; + private AjaxSubmitButton backButton; private ProgressReportingAwarePage parentPage; private ProgressPanel progressPanel; private Behavior refreshingBehavior = null; // behavior is attached to the progress panel @@ -191,6 +192,7 @@ public void run() { if (abortEnabled) { showAbortButton(target); } + showBackButton(target); result.recordInProgress(); // to disable showing not-final results (why does it work? and why is the result shown otherwise?) @@ -244,6 +246,13 @@ public void registerAbortButton(AjaxSubmitButton abortButton) { this.abortButton = abortButton; } + public void registerBackButton(AjaxSubmitButton backButton) { + backButton.setOutputMarkupId(true); + backButton.setOutputMarkupPlaceholderTag(true); + backButton.setVisible(false); + this.backButton = backButton; + } + /** * You have to call this method when Abort button is pressed */ @@ -266,7 +275,7 @@ public void onAbortSubmit(AjaxRequestTarget target) { hideAbortButton(target); } - private void hideAbortButton(AjaxRequestTarget target) { + public void hideAbortButton(AjaxRequestTarget target) { abortButton.setVisible(false); target.add(abortButton); } @@ -276,6 +285,11 @@ public void showAbortButton(AjaxRequestTarget target) { target.add(abortButton); } + public void showBackButton(AjaxRequestTarget target) { + backButton.setVisible(true); + target.add(backButton); + } + // ================= Other methods ================= diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminFocus.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminFocus.java index 4250ebac3a1..f4fecf50291 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminFocus.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminFocus.java @@ -203,7 +203,9 @@ public void finishProcessing(AjaxRequestTarget target, OperationResult result) { } goBackPage(); } else { - showResult(result); + getProgressReporter().showBackButton(target); + getProgressReporter().hideAbortButton(target); + showResult(result); target.add(getFeedbackPanel()); // if we only stayed on the page because of displaying results, hide diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java index 305c14ac0a3..fdf95e0a42f 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/PageAdminObjectDetails.java @@ -637,7 +637,7 @@ public void goBackPage() { } } - protected abstract PageBase getDefaultBackPage(); + public abstract PageBase getDefaultBackPage(); public List