Example usage for org.apache.wicket.markup.html.panel Panel getDefaultModelObject

List of usage examples for org.apache.wicket.markup.html.panel Panel getDefaultModelObject

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.panel Panel getDefaultModelObject.

Prototype

public final Object getDefaultModelObject() 

Source Link

Document

Gets the backing model object.

Usage

From source file:gr.interamerican.wicket.markup.html.panel.crud.picker.TestCrudPickerPanel.java

License:Open Source License

/**
 * Tests pressing the update button and updating a bean.
 *///from   w ww  .  j av a2  s  . c o  m
@Test
public void testUpdate() {
    tester.startPage(getTestPage(panel));

    assertEquals(7, definition.getList().size());

    tester.assertComponent(path("tableForm:radioGroup:listTable"), DataTable.class);
    DataTable<BeanWithOrderedFields> table = (DataTable<BeanWithOrderedFields>) tester
            .getComponentFromLastRenderedPage(path("tableForm:radioGroup:listTable"));
    assertEquals(7, table.getDataProvider().size());

    tester.assertComponent(path("tableForm:radioGroup"), RadioGroup.class);
    RadioGroup<BeanWithOrderedFields> radioGroup = (RadioGroup<BeanWithOrderedFields>) tester
            .getComponentFromLastRenderedPage(path("tableForm:radioGroup"));
    radioGroup.setModelObject(definition.getList().get(0));

    tester.assertComponent(path("tableForm:editButton"), AjaxButton.class);
    AjaxButton editButton = (AjaxButton) tester.getComponentFromLastRenderedPage(path("tableForm:editButton"));

    Map<String, String[]> map = tester.getRequest().getParameterMap();
    map.put("testId:tableForm:radioGroup", new String[] { "radio0" });
    tester.executeAjaxEvent(editButton, "onclick");

    tester.assertVisible(path("beanPanel:beanForm:beanFormFieldsPanel"));
    Panel beanPanel = (Panel) tester
            .getComponentFromLastRenderedPage(path("beanPanel:beanForm:beanFormFieldsPanel"));
    assertEquals(definition.getList().get(0), beanPanel.getDefaultModelObject());

    /*
     * Will leave first two fields intact and modify the third
     */
    userInput = (BeanWithOrderedFields) beanPanel.getDefaultModelObject();
    FormTester formTester = tester.newFormTester(path("beanPanel:beanForm"));
    formTester.setValue("beanFormFieldsPanel:first", String.valueOf(userInput.getFirst()));
    formTester.setValue("beanFormFieldsPanel:second", String.valueOf(userInput.getSecond()));
    formTester.setValue("beanFormFieldsPanel:third", String.valueOf(editInt));
    formTester.setValue("beanFormFieldsPanel:fourth", String.valueOf(userInput.getFourth()));
    formTester.setValue("beanFormFieldsPanel:fifth", String.valueOf(userInput.getFifth()));
    formTester.submit();

    Integer changed = ((BeanWithOrderedFields) beanPanel.getDefaultModelObject()).getThird();
    assertEquals(changed, editInt);

    tester.assertComponent(path("beanPanel:beanForm:executeButton"), CallbackAjaxButton.class);
    CallbackAjaxButton updateButton = (CallbackAjaxButton) tester
            .getComponentFromLastRenderedPage(path("beanPanel:beanForm:executeButton"));

    tester.executeAjaxEvent(updateButton, "onclick");

    tester.assertComponent(path("tableForm:radioGroup:listTable"), DataTable.class);
    table = (DataTable<BeanWithOrderedFields>) tester
            .getComponentFromLastRenderedPage(path("tableForm:radioGroup:listTable"));
    assertEquals(7, table.getDataProvider().size());

    tester.assertInvisible(path("beanPanel"));
}

From source file:org.geoserver.web.data.store.DefaultDataStoreEditPanel.java

License:Open Source License

/**
 * Creates a form input component for the given datastore param based on its type and metadata
 * properties./*from  ww  w .  j av a 2  s .c  o  m*/
 * 
 * @param paramMetadata
 * @return
 */
private Panel getInputComponent(final String componentId, final IModel paramsModel,
        final ParamInfo paramMetadata) {

    final String paramName = paramMetadata.getName();
    final String paramLabel = paramMetadata.getName();
    final boolean required = paramMetadata.isRequired();
    final boolean deprecated = paramMetadata.isDeprecated();
    final Class<?> binding = paramMetadata.getBinding();
    final List<Serializable> options = paramMetadata.getOptions();

    Panel parameterPanel;
    if ("dbtype".equals(paramName) || "filetype".equals(paramName)) {
        // skip the two well known discriminators
        IModel model = new MapModel(paramsModel, paramName);
        TextParamPanel tp = new TextParamPanel(componentId, model, new ResourceModel(paramLabel, paramLabel),
                required);
        tp.setVisible(false);
        parameterPanel = tp;
    } else if ("namespace".equals(paramName)) {
        IModel namespaceModel = new NamespaceParamModel(paramsModel, paramName);
        IModel paramLabelModel = new ResourceModel(paramLabel, paramLabel);
        parameterPanel = new NamespacePanel(componentId, namespaceModel, paramLabelModel, true);
    } else if (options != null && options.size() > 0) {

        IModel<Serializable> valueModel = new MapModel(paramsModel, paramName);
        IModel<String> labelModel = new ResourceModel(paramLabel, paramLabel);
        parameterPanel = new DropDownChoiceParamPanel(componentId, valueModel, labelModel, options, required);

    } else if (Boolean.class == binding) {
        // TODO Add prefix for better i18n?
        parameterPanel = new CheckBoxParamPanel(componentId, new MapModel(paramsModel, paramName),
                new ResourceModel(paramLabel, paramLabel));

    } else if (String.class == binding && paramMetadata.isPassword()) {
        parameterPanel = new PasswordParamPanel(componentId, new MapModel(paramsModel, paramName),
                new ResourceModel(paramLabel, paramLabel), required);
    } else {
        IModel model;
        if ("url".equalsIgnoreCase(paramName)) {
            model = new URLModel(paramsModel, paramName);
        } else {
            model = new MapModel(paramsModel, paramName);
        }

        Panel tp;
        if (paramMetadata.isLargeText()) {
            tp = new TextAreaParamPanel(componentId, model, new ResourceModel(paramLabel, paramLabel),
                    required);
        } else {
            tp = new TextParamPanel(componentId, model, new ResourceModel(paramLabel, paramLabel), required);
        }

        // if it can be a reference to the local filesystem make sure it's valid
        FormComponent<String> fc = ((ParamPanel) tp).getFormComponent();
        if (paramName.equalsIgnoreCase("url")) {
            fc.add(new FileExistsValidator());
        }
        // make sure the proper value is returned, but don't set it for strings otherwise
        // we incur in a wicket bug (the empty string is not converter back to a null)
        // GR: it doesn't work for File neither.
        // AA: better not mess with files, the converters turn data dir relative to
        // absolute and bye bye data dir portability
        if (binding != null && !String.class.equals(binding) && !File.class.equals(binding)
                && !URL.class.equals(binding) && !binding.isArray()) {
            fc.setType(binding);
        }
        parameterPanel = tp;
    }

    Object parameterValue = parameterPanel.getDefaultModelObject();
    boolean visible = !(deprecated && isEmpty(parameterValue));
    parameterPanel.setVisible(visible);
    parameterPanel.setVisibilityAllowed(visible);

    return parameterPanel;
}