Example usage for org.apache.wicket.markup.html.form Form visitChildren

List of usage examples for org.apache.wicket.markup.html.form Form visitChildren

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.form Form visitChildren.

Prototype

public final <S extends Component, R> R visitChildren(final Class<?> clazz, final IVisitor<S, R> visitor) 

Source Link

Document

Traverses all child components of the given class in this container, calling the visitor's visit method at each one.

Usage

From source file:com.premiumminds.webapp.wicket.behaviours.EnableSubmitOnEnterBehaviour.java

License:Open Source License

private static IFormSubmitter findSubmitButton(final Form<?> form) {
    IFormSubmittingComponent submittingComponent = form.visitChildren(IFormSubmittingComponent.class,
            new IVisitor<Component, IFormSubmittingComponent>() {
                public void component(final Component component, final IVisit<IFormSubmittingComponent> visit) {
                    // Get submitting component
                    final IFormSubmittingComponent submittingComponent = (IFormSubmittingComponent) component;
                    final Form<?> formFromComponent = submittingComponent.getForm();

                    if ((formFromComponent != null) && (formFromComponent == form)) {
                        visit.stop(submittingComponent);
                    }/*from w ww . j av  a  2 s.com*/
                }
            });

    return submittingComponent;
}

From source file:org.cast.cwm.data.validator.UniqueUserInPeriodValidator.java

License:Open Source License

/**
 * A helper function that uses an IVisitor to find a TextField<String> in a provided
 * form with the given wicketId.  Someday, findChild will exist.
 * /*from  w w w  .j  av a2  s . c  o m*/
 * @param form the Form to search within
 * @param wicketId wicket ID to search for
 * @return the field, or null if not found
 */
public static TextField<String> findFieldInForm(Form<?> form, final String wicketId) {
    return form.visitChildren(TextField.class, new IVisitor<TextField<String>, TextField<String>>() {
        @Override
        public void component(TextField<String> component, IVisit<TextField<String>> visit) {
            if (component.getId().equals(wicketId)) {
                visit.stop(component);
            }
        }
    });
}

From source file:org.devgateway.eudevfin.ui.common.components.BootstrapSubmitButton.java

License:Open Source License

@Override
protected void onError(final AjaxRequestTarget target, Form<?> form) {
    form.visitChildren(FormComponent.class, new IVisitor<FormComponent, Void>() {
        @Override//w  w w.j a va2 s  .  co  m
        public void component(FormComponent component, IVisit<Void> visit) {
            componentVisitor(target, component, visit);
        }
    });
}

From source file:org.efaps.ui.wicket.components.connection.MessagePanel.java

License:Apache License

/**
 * @param _wicketId wicketId of this component
 * @param _pageReference reference to the page
 * @throws EFapsException on error/*from  ww w.  j  a  va2s . co  m*/
 */
public MessagePanel(final String _wicketId, final PageReference _pageReference) throws EFapsException {
    super(_wicketId);
    final Form<Void> msgForm = new Form<>("msgForm");
    add(msgForm);

    final AjaxSubmitLink sendMsgBtn = new AjaxSubmitLink("sendMsgBtn", msgForm) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onAfterSubmit(final AjaxRequestTarget _target, final Form<?> _form) {
            final StringBuilder msg = new StringBuilder();
            _form.visitChildren(TextArea.class, new IVisitor<TextArea<String>, Void>() {
                @Override
                public void component(final TextArea<String> _textArea, final IVisit<Void> _visit) {
                    _textArea.setEscapeModelStrings(false);
                    msg.append(_textArea.getDefaultModelObjectAsString());
                    _visit.stop();
                }
            });

            if (msg.length() > 0) {
                _form.visitChildren(CheckBox.class, new IVisitor<CheckBox, Void>() {

                    @Override
                    public void component(final CheckBox _checkBox, final IVisit<Void> _visit) {
                        final Boolean selected = (Boolean) _checkBox.getDefaultModelObject();
                        if (selected) {
                            final CheckBoxPanel panel = (CheckBoxPanel) _checkBox.getParent();
                            final UIUser user = (UIUser) panel.getDefaultModelObject();
                            final List<IWebSocketConnection> conns = RegistryManager
                                    .getConnections4User(user.getUserName());
                            for (final IWebSocketConnection conn : conns) {
                                conn.sendMessage(new PushMsg(msg.toString()));
                            }
                        }
                    }
                });
            }
        }
    };
    msgForm.add(sendMsgBtn);

    final AjaxSubmitLink broadcastMsgBtn = new AjaxSubmitLink("broadcastMsgBtn", msgForm) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onAfterSubmit(final AjaxRequestTarget _target, final Form<?> _form) {

            final StringBuilder msg = new StringBuilder();
            _form.visitChildren(TextArea.class, new IVisitor<TextArea<String>, Void>() {

                @Override
                public void component(final TextArea<String> _textArea, final IVisit<Void> _visit) {
                    _textArea.setEscapeModelStrings(false);
                    msg.append(_textArea.getDefaultModelObjectAsString());
                    _visit.stop();
                }
            });

            if (msg.length() > 0) {
                final WebSocketSettings webSocketSettings = WebSocketSettings.Holder.get(getApplication());
                final WebSocketPushBroadcaster broadcaster = new WebSocketPushBroadcaster(
                        webSocketSettings.getConnectionRegistry());
                broadcaster.broadcastAll(EFapsApplication.get(), new PushMsg(msg.toString()));
            }
        }
    };
    msgForm.add(broadcastMsgBtn);

    final TextArea<String> msg = new TextArea<>("msg", Model.of(""));
    msgForm.add(msg);

    final MessageTablePanel messageTable = new MessageTablePanel("messageTable", _pageReference,
            new UserProvider());
    msgForm.add(messageTable);
}

From source file:org.efaps.ui.wicket.components.gridx.GridXPanel.java

License:Apache License

/**
 * Instantiates a new grid X panel.//w  w  w .  ja  v  a2  s  .c om
 *
 * @param _wicketId the wicket id
 * @param _model the model
 * @throws EFapsException on error
 */
public GridXPanel(final String _wicketId, final IModel<UIGrid> _model) throws EFapsException {
    super(_wicketId, _model);
    add(new AbstractDojoBehavior() {

        /** The Constant serialVersionUID. */
        private static final long serialVersionUID = 1L;
    });
    // add a hidden element that has all the events used by the menu
    add(new MenuItem("menuItem"));

    add(new GridXComponent("grid", new LoadableDetachableModel<UIGrid>() {

        /** The Constant serialVersionUID. */
        private static final long serialVersionUID = 1L;

        @Override
        protected UIGrid load() {
            return _model.getObject();
        }
    }));
    final RepeatingView filterRepeater = new RepeatingView("filterRepeater");
    add(filterRepeater);
    for (final IFilter filter : _model.getObject().getFilterList()) {
        final Field field = Field.get(filter.getFieldId());
        final WebMarkupContainer container = new WebMarkupContainer(filterRepeater.newChildId());
        container.add(AttributeModifier.replace("title",
                Model.of(DBProperties.getFormatedDBProperty(GridXPanel.class.getName() + ".FilterTitel",
                        (Object) field.getLabel()))));
        container.setOutputMarkupId(true);
        container.setMarkupId("fttd_" + filter.getFieldId());
        filterRepeater.add(container);
        final Form<Void> form = new Form<>("filterForm");
        container.add(form);
        switch (field.getFilter().getType()) {
        case FREETEXT:
            if (_model.getObject().isDateFilter(filter)) {
                form.add(new DateFilterPanel("filter", Model.of((IMapFilter) filter)));
                form.add(new AjaxButton<IMapFilter>("btn", Model.of((IMapFilter) filter),
                        Button.ICON.ACCEPT.getReference()) {

                    /** The Constant serialVersionUID. */
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void onSubmit(final AjaxRequestTarget _target) {
                        final GridXPanel gridpanel = findParent(GridXPanel.class);
                        final UIGrid uiGrid = gridpanel.getModelObject();

                        form.visitChildren(DateTimePanel.class, new IVisitor<DateTimePanel, Void>() {

                            @Override
                            public void component(final DateTimePanel _datePanel, final IVisit<Void> _visit) {
                                try {
                                    if ("dateFrom".equals(_datePanel.getId())) {
                                        final List<StringValue> tmp = getRequest().getRequestParameters()
                                                .getParameterValues(_datePanel.getDateFieldName());
                                        if (!tmp.isEmpty()) {
                                            final List<StringValue> fromTmp = _datePanel.getDateAsString(tmp,
                                                    null, null, null);
                                            if (!fromTmp.isEmpty()) {
                                                final String from = fromTmp.get(0).toString();
                                                final DateTime date = DateTimeUtil.translateFromUI(from);
                                                ((IMapFilter) filter).put("from", date.toString());
                                            }
                                        }
                                    } else {
                                        final List<StringValue> tmp = getRequest().getRequestParameters()
                                                .getParameterValues(_datePanel.getDateFieldName());
                                        if (!tmp.isEmpty()) {
                                            final List<StringValue> toTmp = _datePanel.getDateAsString(tmp,
                                                    null, null, null);
                                            if (toTmp != null) {
                                                final String to = toTmp.get(0).toString();
                                                final DateTime date = DateTimeUtil.translateFromUI(to);
                                                ((IMapFilter) filter).put("to", date.toString());
                                            }
                                        }
                                    }
                                } catch (final EFapsException e) {
                                    GridXPanel.LOG.error("Catched error", e);
                                }
                            }
                        });

                        try {
                            uiGrid.reload();
                            _target.appendJavaScript(getJavascript(uiGrid));
                        } catch (final EFapsException e) {
                            GridXPanel.LOG.error("Catched error", e);
                        }
                    }
                });
            } else {
                form.add(new TextFilterPanel("filter", Model.of((IMapFilter) filter)));
                form.add(new AjaxButton<IMapFilter>("btn", Model.of((IMapFilter) filter),
                        Button.ICON.ACCEPT.getReference()) {

                    /** The Constant serialVersionUID. */
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void onSubmit(final AjaxRequestTarget _target) {
                        final GridXPanel gridpanel = findParent(GridXPanel.class);
                        final UIGrid uiGrid = gridpanel.getModelObject();

                        form.visitChildren(TextField.class, new IVisitor<TextField<String>, Void>() {

                            @Override
                            public void component(final TextField<String> _text, final IVisit<Void> _visit) {
                                ((IMapFilter) filter).put("from", _text.getModelObject());
                                ((IMapFilter) filter).put("filter", _text.getModelObject());
                            }
                        });

                        form.visitChildren(CheckBox.class, new IVisitor<CheckBox, Void>() {

                            @Override
                            public void component(final CheckBox _checkBox, final IVisit<Void> _visit) {
                                ((IMapFilter) filter).put(_checkBox.getId(), _checkBox.getModelObject());
                            }
                        });

                        try {
                            uiGrid.reload();
                            _target.appendJavaScript(getJavascript(uiGrid));
                        } catch (final EFapsException e) {
                            GridXPanel.LOG.error("Catched error", e);
                        }
                    }
                });

            }
            break;
        case STATUS:
            form.add(new ListFilterPanel("filter", new Model<>((IListFilter) filter)));
            form.add(new AjaxButton<IListFilter>("btn", new Model<>((IListFilter) filter),
                    Button.ICON.ACCEPT.getReference()) {

                /** The Constant serialVersionUID. */
                private static final long serialVersionUID = 1L;

                @Override
                public void onSubmit(final AjaxRequestTarget _target) {
                    final GridXPanel gridpanel = findParent(GridXPanel.class);
                    final UIGrid uiGrid = gridpanel.getModelObject();
                    form.visitChildren(CheckBoxMultipleChoice.class,
                            new IVisitor<CheckBoxMultipleChoice<?>, Void>() {

                                @Override
                                public void component(final CheckBoxMultipleChoice<?> _checkBox,
                                        final IVisit<Void> _visit) {
                                    try {
                                        final ListFilterPanel filterPanel = _checkBox
                                                .findParent(ListFilterPanel.class);
                                        @SuppressWarnings("unchecked")
                                        final List<IOption> sel = (List<IOption>) _checkBox
                                                .getDefaultModelObject();
                                        for (final IOption option : filterPanel.getModelObject()) {
                                            final Method method = option.getClass().getMethod("setSelected",
                                                    boolean.class);
                                            method.invoke(option, sel.contains(option));
                                        }
                                    } catch (final IllegalAccessException | InvocationTargetException
                                            | NoSuchMethodException e) {
                                        GridXPanel.LOG.error("Catched error", e);
                                    }
                                }
                            });

                    try {
                        uiGrid.reload();
                        _target.appendJavaScript(getJavascript(uiGrid));
                    } catch (final EFapsException e) {
                        GridXPanel.LOG.error("Catched error", e);
                    }
                }
            });
            break;
        case FORM:
            form.add(new FormFilterPanel("filter", new Model<>((IMapFilter) filter), getModelObject()));
            form.add(new WebMarkupContainer("btn"));
            break;
        case CLASSIFICATION:
        case PICKLIST:
        case NONE:
        default:
            form.add(new WebMarkupContainer("filter"));
            form.add(new WebMarkupContainer("btn"));
            break;
        }
    }
}

From source file:org.opensingular.form.wicket.helpers.TestFinders.java

License:Apache License

public static <T extends Component> Stream<T> findOnForm(Class<T> classOfQuery, Form form,
        Predicate<T> predicate) {
    final List<T> found = new ArrayList<>();
    form.visitChildren(classOfQuery, (IVisitor<T, Object>) (t, visit) -> {
        if (predicate == null || predicate.test(t)) {
            found.add(t);// ww w. ja  v a2s  .  co  m
        }
    });
    return found.stream();
}