
uk.co.crystalmark.wicket.components.AlertPanel Maven / Gradle / Ivy
The newest version!
package uk.co.crystalmark.wicket.components;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.basic.MultiLineLabel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
/**
* @author tims
*
* This is a simple implementation of the Bootstrap
* dismissible alert with two buttons.
*
* The content, and the button text are in models. There are
* two abstract methods for the button callbacks. The alert
* will be hidden when either of the buttons are clicked.
*
* The X at the top right of the alert will only hide the text
* and not call back to the java.
*
* @see Bootstrap
* Documentation
*
*
* The MIT License
*
* Copyright (c) 2013 Tim Squires
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
* KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
public abstract class AlertPanel extends Panel {
private static final long serialVersionUID = 1L;
private boolean visible = false;
/**
* @param id
* The wicket id
* @param text
* The text to display when visible
* @param okLabelString
* The Text to display on the OK button
* @param cancelLabelString
* The Text to display on the cancel button
*/
public AlertPanel(final String id, final IModel text, final IModel okLabelString, final IModel cancelLabelString) {
super(id);
setOutputMarkupId(true);
final WebMarkupContainer container = new WebMarkupContainer("container") {
private static final long serialVersionUID = 1L;
@Override
public boolean isVisible() {
return visible;
}
};
container.setOutputMarkupId(true);
add(container);
container.add(new MultiLineLabel("text", text));
AjaxLink okLink = new AjaxLink("ok") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(final AjaxRequestTarget target) {
onOK(target);
}
};
container.add(okLink);
okLink.setOutputMarkupId(true);
okLink.add(new Label("okLabel", okLabelString));
AjaxLink cancelLink = new AjaxLink("cancel") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(final AjaxRequestTarget target) {
visible = false;
target.add(AlertPanel.this);
onCancel(target);
}
};
container.add(cancelLink);
cancelLink.setOutputMarkupId(true);
cancelLink.add(new Label("cancelLabel", cancelLabelString));
cancelLink.add(new AttributeAppender("data-dismiss", container.getMarkupId()));
}
public void show(final AjaxRequestTarget target) {
visible = true;
target.add(this);
}
public abstract void onOK(AjaxRequestTarget target);
public abstract void onCancel(AjaxRequestTarget target);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy