You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Tommy Sadiq Hinrichsen <to...@gmail.com> on 2013/07/10 19:27:00 UTC
Need to know which button is pressed in Modalwindow
Hej
I have a modalwindow where in there is a save button and a cancel button.
When i pres the cancel button i somehow need to know that this button has
been pressed.
I tried creating the modalpage as an inner class of the modal class, and in
that class editing a variable in the modal class. But when i return to the
modal class, all variables are unchanged.
Got any ideas?
package com.trifork.pengeplan.web.components.modal;
import com.trifork.pengeplan.domain.MoneyCurrency;
import com.trifork.pengeplan.web.components.CancelButton;
import
com.trifork.pengeplan.web.components.models.temporary.BankAccountModalObject;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import java.beans.PropertyChangeSupport;
import java.util.Arrays;
/**
* @author
*/
public class AddBankAccountModal extends ModalWindow {
AddBankAccountModal self;
AddBankAccountModalPage modalPage;
DropDownChoice<Long> accountForCash;
protected PropertyChangeSupport propertyChangeSupport;
protected boolean saveButtonPressed;
public AddBankAccountModal(String id, final
IModel<BankAccountModalObject> model, final WebMarkupContainer
updateOnWindowsClosed) {
super(id);
self = this;
setPageCreator(new PageCreator() {
@Override
public Page createPage() {
return modalPage = new AddBankAccountModalPage(self, model);
}
});
setWindowClosedCallback(new WindowClosedCallback() {
public void onClose(AjaxRequestTarget target) {
if (saveButtonPressed) {
target.add(updateOnWindowsClosed);
}
saveButtonPressed = false;
}
});
setCloseButtonCallback(new CloseButtonCallback() {
public boolean onCloseButtonClicked(AjaxRequestTarget target) {
return true;
}
});
}
public void setAccountForCash(DropDownChoice<Long> accountForCash) {
this.accountForCash = accountForCash;
}
class AddBankAccountModalPage extends BaseModalPage {
public AddBankAccountModalPage(final AddBankAccountModal
modalWindow, IModel<BankAccountModalObject> model) {
super();
Form form = new Form("bankAccountForm", new
CompoundPropertyModel(model));
form.add(new TextField<String>("name").setRequired(true));
form.add(new
TextField<String>("financeAccount").setRequired(true));
form.add(new DropDownChoice<MoneyCurrency>("moneyCurrency",
Arrays.asList(MoneyCurrency.values()), new
EnumChoiceRenderer<MoneyCurrency>()).setRequired(true));
form.add(new AjaxButton("save", form) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?>
form) {
saveButtonPressed = true;
//TODO save new bank account with sub entities
modalWindow.close(target);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?>
form) {
target.add(form.get("modalFeedback"));
}
});
CancelButton cancel = new CancelButton("cancel") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?>
form) {
modalWindow.close(target);
}
};
form.add(cancel);
form.add(new
FeedbackPanel("modalFeedback").setOutputMarkupPlaceholderTag(true));
add(form);
}
}
}
Best regards
Tommy Sadiq Hinrichsen
Re: Need to know which button is pressed in Modalwindow
Posted by Martin Makundi <ma...@koodaripalvelut.com>.
Look at xxButtonCallback
2013/7/10 Tommy Sadiq Hinrichsen <to...@gmail.com>:
> Hej
>
> I have a modalwindow where in there is a save button and a cancel button.
>
> When i pres the cancel button i somehow need to know that this button has
> been pressed.
>
> I tried creating the modalpage as an inner class of the modal class, and in
> that class editing a variable in the modal class. But when i return to the
> modal class, all variables are unchanged.
>
> Got any ideas?
>
> package com.trifork.pengeplan.web.components.modal;
>
> import com.trifork.pengeplan.domain.MoneyCurrency;
> import com.trifork.pengeplan.web.components.CancelButton;
> import
> com.trifork.pengeplan.web.components.models.temporary.BankAccountModalObject;
> import org.apache.wicket.Page;
> import org.apache.wicket.ajax.AjaxRequestTarget;
> import org.apache.wicket.ajax.markup.html.form.AjaxButton;
> import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
> import org.apache.wicket.markup.html.WebMarkupContainer;
> import org.apache.wicket.markup.html.form.DropDownChoice;
> import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
> import org.apache.wicket.markup.html.form.Form;
> import org.apache.wicket.markup.html.form.TextField;
> import org.apache.wicket.markup.html.panel.FeedbackPanel;
> import org.apache.wicket.model.CompoundPropertyModel;
> import org.apache.wicket.model.IModel;
>
> import java.beans.PropertyChangeSupport;
> import java.util.Arrays;
>
> /**
> * @author
> */
> public class AddBankAccountModal extends ModalWindow {
>
> AddBankAccountModal self;
> AddBankAccountModalPage modalPage;
> DropDownChoice<Long> accountForCash;
>
> protected PropertyChangeSupport propertyChangeSupport;
> protected boolean saveButtonPressed;
>
> public AddBankAccountModal(String id, final
> IModel<BankAccountModalObject> model, final WebMarkupContainer
> updateOnWindowsClosed) {
> super(id);
>
> self = this;
> setPageCreator(new PageCreator() {
> @Override
> public Page createPage() {
> return modalPage = new AddBankAccountModalPage(self, model);
> }
> });
>
> setWindowClosedCallback(new WindowClosedCallback() {
> public void onClose(AjaxRequestTarget target) {
> if (saveButtonPressed) {
> target.add(updateOnWindowsClosed);
> }
> saveButtonPressed = false;
> }
> });
>
> setCloseButtonCallback(new CloseButtonCallback() {
> public boolean onCloseButtonClicked(AjaxRequestTarget target) {
> return true;
> }
> });
> }
>
> public void setAccountForCash(DropDownChoice<Long> accountForCash) {
> this.accountForCash = accountForCash;
> }
>
> class AddBankAccountModalPage extends BaseModalPage {
>
> public AddBankAccountModalPage(final AddBankAccountModal
> modalWindow, IModel<BankAccountModalObject> model) {
> super();
> Form form = new Form("bankAccountForm", new
> CompoundPropertyModel(model));
>
> form.add(new TextField<String>("name").setRequired(true));
> form.add(new
> TextField<String>("financeAccount").setRequired(true));
> form.add(new DropDownChoice<MoneyCurrency>("moneyCurrency",
> Arrays.asList(MoneyCurrency.values()), new
> EnumChoiceRenderer<MoneyCurrency>()).setRequired(true));
>
> form.add(new AjaxButton("save", form) {
> @Override
> protected void onSubmit(AjaxRequestTarget target, Form<?>
> form) {
> saveButtonPressed = true;
> //TODO save new bank account with sub entities
> modalWindow.close(target);
> }
>
> @Override
> protected void onError(AjaxRequestTarget target, Form<?>
> form) {
> target.add(form.get("modalFeedback"));
> }
> });
> CancelButton cancel = new CancelButton("cancel") {
> @Override
> protected void onSubmit(AjaxRequestTarget target, Form<?>
> form) {
> modalWindow.close(target);
> }
> };
> form.add(cancel);
> form.add(new
> FeedbackPanel("modalFeedback").setOutputMarkupPlaceholderTag(true));
> add(form);
> }
> }
> }
>
>
> Best regards
>
> Tommy Sadiq Hinrichsen
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org