Example usage for org.apache.wicket.ajax.markup.html.form AjaxSubmitLink setDefaultModel

List of usage examples for org.apache.wicket.ajax.markup.html.form AjaxSubmitLink setDefaultModel

Introduction

In this page you can find the example usage for org.apache.wicket.ajax.markup.html.form AjaxSubmitLink setDefaultModel.

Prototype

@Override
    public MarkupContainer setDefaultModel(final IModel<?> model) 

Source Link

Usage

From source file:org.geoserver.gwc.web.layer.ParameterFilterEditor.java

License:Open Source License

public ParameterFilterEditor(final String id, final IModel<Set<ParameterFilter>> model,
        final IModel<? extends CatalogInfo> layerModel) {
    super(id, model);
    add(validator = new ParameterListValidator());

    // container for ajax updates
    final WebMarkupContainer container = new WebMarkupContainer("container");
    container.setOutputMarkupId(true);//from w ww .  j a  va  2s .c  o m
    add(container);

    // the link list
    table = new WebMarkupContainer("table");
    table.setOutputMarkupId(true);

    container.add(table);

    filters = new ListView<ParameterFilter>("parameterFilters",
            new ArrayList<ParameterFilter>(model.getObject())) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onBeforeRender() {
            super.onBeforeRender();
        }

        @Override
        protected void populateItem(final ListItem<ParameterFilter> item) {
            // odd/even style
            final int index = item.getIndex();
            item.add(new SimpleAttributeModifier("class", index % 2 == 0 ? "even" : "odd"));

            //Create form
            final Label keyLabel;
            keyLabel = new Label("key", new PropertyModel<String>(item.getModel(), "key"));
            item.add(keyLabel);

            final Component subForm = getSubform("subform", item.getModel());
            //final Component subForm = new Label("subform", "Blah");
            item.add(subForm);

            final AjaxSubmitLink removeLink;

            removeLink = new AjaxSubmitLink("removeLink") {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onSubmit(AjaxRequestTarget target, Form form) {
                    getList().remove((ParameterFilter) getDefaultModelObject());
                    target.addComponent(container);
                }
            };
            removeLink.add(new Icon("removeIcon", GWCIconFactory.DELETE_ICON));
            removeLink.setDefaultModel(item.getModel());
            removeLink.add(new AttributeModifier("title", true,
                    new ResourceModel("ParameterFilterEditor.removeLink")));
            item.add(removeLink);
        }
    };

    filters.setOutputMarkupId(true);
    // this is necessary to avoid loosing item contents on edit/validation checks
    filters.setReuseItems(true);

    Form filtersForm = new Form("filtersForm", filters.getDefaultModel());
    filtersForm.add(filters);

    table.add(filtersForm);

    List<String> parameterKeys = new ArrayList<String>(GWC.get().getGridSetBroker().getNames());
    for (ParameterFilter filter : model.getObject()) {
        parameterKeys.remove(filter.getKey());
    }
    Collections.sort(parameterKeys);

    GeoServerAjaxFormLink addStyleFilterLink = new GeoServerAjaxFormLink("addStyleFilter") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onClick(AjaxRequestTarget target, Form form) {
            StyleParameterFilter newFilter = new StyleParameterFilter();
            newFilter.setLayer((LayerInfo) layerModel.getObject());

            addFilter(newFilter);

            target.addComponent(container);
        }
    };
    addStyleFilterLink.add(new Icon("addIcon", GWCIconFactory.ADD_ICON));
    add(addStyleFilterLink);

    // FIXME: make this extensible so new kinds of filter can be supported by
    ArrayList<Class<? extends ParameterFilter>> filterTypes = new ArrayList<Class<? extends ParameterFilter>>();
    filterTypes.add(StringParameterFilter.class);
    filterTypes.add(FloatParameterFilter.class);
    filterTypes.add(IntegerParameterFilter.class);
    filterTypes.add(RegexParameterFilter.class);

    availableFilterTypes = new DropDownChoice<Class<? extends ParameterFilter>>("availableFilterTypes",
            new Model<Class<? extends ParameterFilter>>(),
            new Model<ArrayList<Class<? extends ParameterFilter>>>(filterTypes),
            new IChoiceRenderer<Class<? extends ParameterFilter>>() {

                /** serialVersionUID */
                private static final long serialVersionUID = 1L;

                @Override
                public Object getDisplayValue(Class<? extends ParameterFilter> object) {
                    String resource = "ParameterFilterEditor.filtername." + object.getCanonicalName();
                    try {
                        // Try to look up a localized name for the class
                        return getLocalizer().getString(resource, ParameterFilterEditor.this);
                    } catch (MissingResourceException ex) {
                        // Use the simple name as a backup
                        if (LOGGER.isLoggable(Level.CONFIG))
                            LOGGER.log(Level.CONFIG, "Could not find localization resource"
                                    + " for ParameterFilter subclass " + object.getCanonicalName());

                        return object.getSimpleName();
                    }
                }

                @Override
                public String getIdValue(Class<? extends ParameterFilter> object, int index) {
                    return Integer.toString(index);
                }

            });
    availableFilterTypes.setOutputMarkupId(true);
    add(availableFilterTypes);

    newFilterKey = new TextField<String>("newFilterKey", Model.of(""));
    add(newFilterKey);

    // TODO update this to eliminate keys that are in use
    final RepeatingView commonKeys = new RepeatingView("commonKeys");
    for (String key : COMMON_KEYS) {
        commonKeys.add(new Label(commonKeys.newChildId(), key));
    }
    add(commonKeys);

    GeoServerAjaxFormLink addFilterLink = new GeoServerAjaxFormLink("addFilter") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onClick(AjaxRequestTarget target, Form form) {
            availableFilterTypes.processInput();
            newFilterKey.processInput();
            String key = newFilterKey.getModelObject();
            if (key == null || key.isEmpty()) {
                ParamResourceModel rm = new ParamResourceModel("ParameterFilterEditor.nonEmptyFilter", null,
                        "");
                error(rm.getString());
            } else {
                Class<? extends ParameterFilter> type = availableFilterTypes.getModelObject();

                try {
                    ParameterFilter newFilter = type.getConstructor().newInstance();
                    newFilter.setKey(key);
                    addFilter(newFilter);
                    newFilterKey.setModel(Model.of("")); // Reset the key field
                } catch (NoSuchMethodException ex) {
                    LOGGER.log(Level.WARNING, "No Default Constructor for " + type, ex);
                } catch (InvocationTargetException | SecurityException | InstantiationException
                        | IllegalAccessException ex) {
                    LOGGER.log(Level.WARNING, "Could not execute default Constructor for " + type, ex);
                }
            }
            target.addComponent(container);
        }
    };
    addFilterLink.add(new Icon("addIcon", GWCIconFactory.ADD_ICON));
    add(addFilterLink);
}

From source file:org.geoserver.web.wicket.GeoServerDialog.java

License:Open Source License

/**
 * Submit link that will forward to the {@link DialogDelegate}
 * // ww w.  j  a v a 2s. co  m
 * @return
 */
AjaxSubmitLink sumbitLink(Component contents) {
    AjaxSubmitLink link = new AjaxSubmitLink("submit") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            submit(target, (Component) this.getDefaultModelObject());
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            delegate.onError(target, form);
        }

    };
    link.setDefaultModel(new Model(contents));
    return link;
}