package sushi.application.pages.correlation;
import java.io.Serializable;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import sushi.application.components.form.BlockingAjaxButton;
import sushi.correlation.Correlator;
import sushi.process.SushiProcess;
import de.agilecoders.wicket.markup.html.bootstrap.button.ButtonType;
import de.agilecoders.wicket.markup.html.bootstrap.button.TypedAjaxButton;
import de.agilecoders.wicket.markup.html.bootstrap.dialog.Alert;
class ExistingCorrelationAlert extends Alert {
private ExistingCorrelationAlert alert;
private CorrelationPage correlationPage;
private SushiProcess selectedProcess;
/**
* Constructor.
*
* @param id
* the wicket component id.
* @param correlationPage
*/
public ExistingCorrelationAlert(String id, String message, CorrelationPage correlationPage) {
super(id, Model.of(message), Model.of(""));
this.type(Alert.Type.Warning);
alert = this;
this.correlationPage = correlationPage;
}
/**
* creates a new message component.
*
* @param markupId
* The component id
* @param message
* The message as {@link IModel}
* @return new message component
*/
protected Component createMessage(final String markupId, final IModel<String> message) {
final Form container = new Form(markupId);
container.add(new Label("messageText", new Model<Serializable>("Correlation exists! Do you want to override it?")));
BlockingAjaxButton correlateButton = new BlockingAjaxButton("correlateButton", new Model("Correlate")) {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
Correlator.removeExistingCorrelation(selectedProcess);
correlationPage.correlateEvents(selectedProcess);
alert.setVisible(false);
target.add(correlationPage.getFeedbackPanel());
target.add(alert);
}
};
container.add(correlateButton);
TypedAjaxButton abortButton = new TypedAjaxButton("abortButton", new Model("Abort"), ButtonType.Primary) {
@Override
public void onSubmit(AjaxRequestTarget target, Form form) {
correlationPage.getAlert().setVisible(false);
target.add(correlationPage);
}
};
container.add(abortButton);
return container;
}
public void setSelectedProcess(SushiProcess selectedProcess) {
this.selectedProcess = selectedProcess;
}
}