final WebMarkupContainer aboutContainer = new WebMarkupContainer("aboutContainer");
aboutContainer.setOutputMarkupId(true);
form.add(aboutContainer);
final AjaxCheckBoxPanel checkAbout =
new AjaxCheckBoxPanel("checkAbout", "checkAbout",
new Model<Boolean>(notificationTO.getAbout() == null));
aboutContainer.add(checkAbout);
final UserSearchPanel about = new UserSearchPanel.Builder("about").nodeCond(notificationTO.getAbout()).build();
aboutContainer.add(about);
about.setEnabled(!checkAbout.getModelObject());
checkAbout.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
about.setEnabled(!checkAbout.getModelObject());
target.add(about);
target.add(aboutContainer);
}
});
final AjaxDropDownChoicePanel<IntMappingType> recipientAttrType = new AjaxDropDownChoicePanel<IntMappingType>(
"recipientAttrType", new ResourceModel("recipientAttrType", "recipientAttrType").getObject(),
new PropertyModel<IntMappingType>(notificationTO, "recipientAttrType"));
recipientAttrType.setChoices(new ArrayList<IntMappingType>(
IntMappingType.getAttributeTypes(AttributableType.USER,
EnumSet.of(IntMappingType.UserId, IntMappingType.Password))));
recipientAttrType.setRequired(true);
form.add(recipientAttrType);
final AjaxDropDownChoicePanel<String> recipientAttrName = new AjaxDropDownChoicePanel<String>(
"recipientAttrName", new ResourceModel("recipientAttrName", "recipientAttrName").getObject(),
new PropertyModel<String>(notificationTO, "recipientAttrName"));
recipientAttrName.setChoices(getSchemaNames(recipientAttrType.getModelObject()));
recipientAttrName.setRequired(true);
form.add(recipientAttrName);
recipientAttrType.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
recipientAttrName.setChoices(getSchemaNames(recipientAttrType.getModelObject()));
target.add(recipientAttrName);
}
});
final AjaxPalettePanel events = new AjaxPalettePanel("events", new PropertyModel(notificationTO, "events"),
new ListModel<String>(restClient.getEvents()));
form.add(events);
final WebMarkupContainer recipientsContainer = new WebMarkupContainer("recipientsContainer");
recipientsContainer.setOutputMarkupId(true);
form.add(recipientsContainer);
final AjaxCheckBoxPanel selfAsRecipient = new AjaxCheckBoxPanel("selfAsRecipient",
getString("selfAsRecipient"), new PropertyModel(notificationTO, "selfAsRecipient"));
form.add(selfAsRecipient);
if (createFlag) {
selfAsRecipient.getField().setDefaultModelObject(Boolean.TRUE);
}
final AjaxCheckBoxPanel checkRecipients =
new AjaxCheckBoxPanel("checkRecipients", "checkRecipients",
new Model<Boolean>(notificationTO.getRecipients() == null ? false : true));
recipientsContainer.add(checkRecipients);
final UserSearchPanel recipients =
new UserSearchPanel.Builder("recipients")
.nodeCond(notificationTO.getRecipients() == null ? null : notificationTO.getRecipients()).build();
recipientsContainer.add(recipients);
recipients.setEnabled(checkRecipients.getModelObject());
selfAsRecipient.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
if (!Boolean.valueOf(selfAsRecipient.getField().getValue())) {
checkRecipients.getField().setDefaultModelObject(Boolean.TRUE);
target.add(checkRecipients);
recipients.setEnabled(checkRecipients.getModelObject());
target.add(recipients);
target.add(recipientsContainer);
}
}
});
checkRecipients.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
if (!checkRecipients.getModelObject()) {
selfAsRecipient.getField().setDefaultModelObject(Boolean.TRUE);
target.add(selfAsRecipient);
}
recipients.setEnabled(checkRecipients.getModelObject());
target.add(recipients);
target.add(recipientsContainer);
}
});
AjaxButton submit = new IndicatingAjaxButton(APPLY, new Model<String>(getString(SUBMIT))) {
private static final long serialVersionUID = -958724007591692537L;
@Override
protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
notificationTO.setAbout(checkAbout.getModelObject() ? null : about.buildSearchCond());
notificationTO.setRecipients(checkRecipients.getModelObject() ? recipients.buildSearchCond() : null);
try {
if (createFlag) {
restClient.createNotification(notificationTO);
} else {