/* * Copyright (c) 2010-2016 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.evolveum.midpoint.web.component.progress; import com.evolveum.midpoint.model.api.ModelInteractionService; import com.evolveum.midpoint.model.api.ModelService; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.security.api.SecurityEnforcer; import com.evolveum.midpoint.task.api.Task; import com.evolveum.midpoint.web.security.WebApplicationConfiguration; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; /** * A page that supports progress reporting, e.g. page for editing users, orgs, roles. * * Main responsibility of such a page is to correctly finish processing an operation * that could have been executed asynchronously. * * The interface also contains some methods common to all midPoint pages that are needed in this package. * (Should be done seriously, some day...) * * @author mederly */ public interface ProgressReportingAwarePage { void startProcessing(AjaxRequestTarget target, OperationResult result); void finishProcessing(AjaxRequestTarget target, OperationResult result, boolean returningFromAsync); // things from PageBase (todo factor this out eventually) ModelService getModelService(); ModelInteractionService getModelInteractionService(); SecurityEnforcer getSecurityEnforcer(); Task createSimpleTask(String name); WebApplicationConfiguration getWebApplicationConfiguration(); WebMarkupContainer getFeedbackPanel(); void continueEditing(AjaxRequestTarget target); }