List of usage examples for org.apache.wicket.markup.html.form.validation IFormValidator getDependentFormComponents
FormComponent<?>[] getDependentFormComponents();
From source file:org.projectforge.plugins.ffp.wicket.FFPEventEditForm.java
License:Open Source License
@Override protected void init() { super.init(); currentUser = ThreadLocalUserContext.getUser(); if (data.getOrganizer() == null) { if (currentUser == null) { error(I18nHelper.getLocalizedMessage("plugins.ffp.validate.noUser")); return; } else {//from ww w. ja v a 2 s .co m data.setOrganizer(currentUser); } } if (isNew()) { if (currentUser != null) { this.accountingList.add(getNewFfpAccountingDO(currentUser)); } } IFormValidator formValidator = new IFormValidator() { // Components for form validation. private final FormComponent<?>[] dependentFormComponents = new FormComponent[1]; @Override public FormComponent<?>[] getDependentFormComponents() { return dependentFormComponents; } @Override public void validate(Form<?> form) { Select2MultiChoice<PFUserDO> attendeesSelect2 = (Select2MultiChoice<PFUserDO>) dependentFormComponents[0]; Collection<PFUserDO> attendeeList = attendeesSelect2.getConvertedInput(); if (attendeeList != null && attendeeList.size() < 2) { error(I18nHelper.getLocalizedMessage("plugins.ffp.validate.minAttendees")); } } }; add(formValidator); gridBuilder.newSplitPanel(GridSize.COL50, true).newSubSplitPanel(GridSize.COL100); { // Organizer final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "organizer"); fs.add(new DivTextPanel(fs.newChildId(), data.getOrganizer().getFullname())); } { // Event date final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "eventDate"); DatePanel eventDate = new DatePanel(fs.newChildId(), new PropertyModel<>(data, "eventDate"), DatePanelSettings.get().withTargetType(java.sql.Date.class), true); eventDate.setRequired(true); eventDate.setMarkupId("eventDate").setOutputMarkupId(true); eventDate.setEnabled(getData().getFinished() == false); fs.add(eventDate); } { // Division final FieldsetPanel fs = gridBuilder.newFieldset(FFPEventDO.class, "title"); MaxLengthTextField titel = new MaxLengthTextField(InputPanel.WICKET_ID, new PropertyModel<>(data, "title")); titel.setRequired(true); titel.setMarkupId("eventTitel").setOutputMarkupId(true); titel.setEnabled(getData().getFinished() == false); fs.add(titel); } { // ATTENDEES final FieldsetPanel fieldSet = gridBuilder.newFieldset(getString("plugins.ffp.attendees")); assignAttendeesListHelper = new MultiChoiceListHelper<PFUserDO>() .setComparator(new Comparator<PFUserDO>() { @Override public int compare(PFUserDO o1, PFUserDO o2) { return o1.getPk().compareTo(o2.getPk()); } }).setFullList(userDao.getList(new PFUserFilter().setDeactivatedUser(false))); if (this.data.getAttendeeList() != null && this.data.getAttendeeList().size() > 0) { for (final PFUserDO attendee : this.data.getAttendeeList()) { assignAttendeesListHelper.addOriginalAssignedItem(attendee).assignItem(attendee); } } if (this.accountingList != null && this.accountingList.size() > 0) { for (final FFPAccountingDO accounting : this.accountingList) { assignAttendeesListHelper.assignItem(accounting.getAttendee()); } } final Select2MultiChoice<PFUserDO> attendees = new Select2MultiChoice<PFUserDO>( fieldSet.getSelect2MultiChoiceId(), new PropertyModel<Collection<PFUserDO>>(this.assignAttendeesListHelper, "assignedItems"), new UsersProvider(userDao)); attendees.setRequired(true).setMarkupId("attendees").setOutputMarkupId(true); attendees.add(new AjaxEventBehavior(OnChangeAjaxBehavior.EVENT_NAME) { protected final FormComponent<?> getFormComponent() { return (FormComponent<?>) getComponent(); } @Override protected void onEvent(AjaxRequestTarget target) { final FormComponent<?> formComponent = getFormComponent(); try { formComponent.inputChanged(); formComponent.validate(); if (formComponent.hasErrorMessage()) { formComponent.invalid(); accountingList.clear(); assignAttendeesListHelper.getAssignedItems().clear(); } else { formComponent.valid(); formComponent.updateModel(); } dataTable = createDataTable(createColumns(), "attendee.fullname", SortOrder.ASCENDING, getData()); tablePanel.addOrReplace(dataTable); target.add(dataTable); } catch (RuntimeException e) { throw e; } } }); attendees.setEnabled(getData().getFinished() == false); formValidator.getDependentFormComponents()[0] = attendees; fieldSet.add(attendees); } //Transactions createDataTable(gridBuilder); { Button finishButton = new Button("button", new Model<String>("plugins.ffp.finishEvent")) { @Override public final void onSubmit() { try { getData().setFinished(true); parentPage.createOrUpdate(); } catch (final UserException ex) { error(parentPage.translateParams(ex)); } } }; finishButton.setMarkupId("finishEvent").setOutputMarkupId(true); finishButtonPanel = new SingleButtonPanel(actionButtons.newChildId(), finishButton, getString("plugins.ffp.finishEvent"), SingleButtonPanel.SUCCESS); finishButtonPanel.setVisible(false); actionButtons.add(finishButtonPanel); } }