List of usage examples for org.apache.wicket.ajax.markup.html.form AjaxSubmitLink setDefaultModel
@Override
public MarkupContainer setDefaultModel(final IModel<?> model)
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; }