Example usage for org.apache.wicket.markup.html.form FormComponent getModelObject

List of usage examples for org.apache.wicket.markup.html.form FormComponent getModelObject

Introduction

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

Prototype

@SuppressWarnings("unchecked")
default T getModelObject() 

Source Link

Document

Typesafe getter for the model's object

Usage

From source file:com.pushinginertia.wicket.core.form.behavior.FormInputSaveDraftBehavior.java

License:Open Source License

@Override
public void renderHead(final Component component, final IHeaderResponse response) {
    super.renderHead(component, response);

    // prepopulate the saved drafts on the client with whatever model objects already exist
    final StringBuilder sb = new StringBuilder();
    for (final FormComponent<String> c : components) {
        sb.append(c.getMarkupId()).append(":'");
        final String inputValue = c.getModelObject();
        if (inputValue != null) {
            sb.append(inputValue.replace("\n", "\\n").replace("'", "\\'"));
        }/*from w  w w  . j  a v  a  2  s .  c o m*/
        sb.append("',");
    }

    response.renderJavaScript("var savedDrafts={" + sb.toString() + "};\n"
            + "var lastCallbackTime=(new Date()).getTime();\n"
            + "var interval=setInterval(function(){pushDraft();}, " + saveDraftInterval.getMilliseconds()
            + ");\n" + "var keepAliveInterval=" + keepAliveInterval.getMilliseconds() + ";\n" + // maximum time between callbacks
            "function pushDraft() {\n" + "\tvar p={};\n" + "\tvar push=false;\n" + "\tfor(k in savedDrafts){\n"
            + "\t\tvar el=document.getElementById(k);\n" + "\t\tif(savedDrafts[k]!==el.value){\n"
            + "\t\t\tp[k]=el.value;\n" + "\t\t\tpush=true;\n" + "\t\t}\n" + "\t}\n"
            + "\tvar now=(new Date()).getTime();\n" + "\tif(push||now-lastCallbackTime>keepAliveInterval){\n" +
            // Insert a dummy post variable for servers that reject POSTs without any key/value pairs.
            // See: https://cwiki.apache.org/confluence/display/WICKET/Calling+Wicket+from+Javascript
            "\t\tvar s='_now='+now;\n" + "\t\tfor(k in p){\n" + "\t\t\ts+='&'+k+'='+encodeURIComponent(p[k]);\n"
            + "\t\t\tsavedDrafts[k]=p[k];\n" + "\t\t}\n" + "\t\twicketAjaxPost('" + getCallbackUrl()
            + "', s);\n" + "\t\tlastCallbackTime=now;\n" + "\t}\n" + "}", "FormSaveDraftBehavior");
}

From source file:com.servoy.j2db.server.headlessclient.dataui.FocusIfInvalidAttributeModifier.java

License:Open Source License

public FocusIfInvalidAttributeModifier(final FormComponent component) {
    // please keep the case in the event name
    super("onblur", true, new Model<String>() //$NON-NLS-1$
    {//from  ww  w.  j  a  v  a  2 s  .c om
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            Object mo = component.getModelObject();
            String value;
            if (mo instanceof Boolean) {
                value = mo.toString();
            } else {
                value = '\'' + String.valueOf(Strings.escapeMarkup(component.getValue())) + '\'';
                value = component.getValue();
                if (value == null) {
                    value = ""; //$NON-NLS-1$
                } else {
                    value = '\'' + Strings.escapeMarkup(value).toString() + '\'';
                }
            }
            return "scheduleRequestFocusOnInvalid(\"" + component.getMarkupId() + "\", \"" + value + "\");"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        }
    });
}

From source file:com.visural.wicket.component.viewmode.ViewOrEdit.java

License:Apache License

protected ViewOrEdit(final String id, final FormComponent component, IModel labelModel,
        final ComponentModelToLabel componentModelToLabel) {
    super(id);//from  w  w  w.  j  a va  2s .  com
    this.component = component;

    if (labelModel == null && componentModelToLabel != null) {
        labelModel = new AbstractReadOnlyModel() {

            private final ComponentModelToLabel converter = componentModelToLabel;

            @Override
            public Object getObject() {
                return converter.convertToLabel(component.getModelObject());
            }
        };
    }

    if (component == null || !component.getId().equals(COMP_ID)) {
        throw new IllegalArgumentException(
                "The component provided to LabelOnViewOnly(...) must have the id \"" + COMP_ID + "\"");
    }

    Fragment f = resolveComponentFragment(labelModel);
    if (f == null) {
        throw new UnsupportedOperationException(
                "No view mode fragment for component of type " + component.getClass().getName());
    }
    add(f);
}

From source file:gr.abiss.calipso.wicket.components.validators.RegisterUserConfirmPasswordValidator.java

License:Open Source License

public RegisterUserConfirmPasswordValidator(FormComponent passwordField, FormComponent confirmPasswordField) {
    this.passwordField = passwordField;
    this.confirmPasswordField = confirmPasswordField;
    if (logger.isDebugEnabled()) {
        logger.debug("passwordField modelObject : " + passwordField.getModelObject());
        logger.debug("confirmPasswordField modelObject : " + confirmPasswordField.getModelObject());
    }//from   w  ww .  j  a  va2s .  c o m
}

From source file:gr.interamerican.wicket.utils.WicketUtils.java

License:Open Source License

/**
 * Validates that a form component is not null.
 * /* ww w  .  j av a  2s .c  o  m*/
 * An error resource key that consists of error.formComponentId 
 * must be defined relevant to the owner component.
 * 
 * @param owner
 *        Owner component that does the validation and the resource key
 *        is defined relevant to it.
 * @param formComponent
 *        For component being validated.
 */
public static void validateNotNull(Component owner, FormComponent<?> formComponent) {
    if (formComponent.getModelObject() == null) {
        String resourceKey = "error." + formComponent.getId(); //$NON-NLS-1$
        error(owner, resourceKey);
    }
}

From source file:gr.interamerican.wicket.utils.WicketUtils.java

License:Open Source License

/**
 * Validates that a form component is not null.
 *
 * @param owner//from  w  w w .  j  a  v a 2  s.  c  om
 *        Owner component that does the validation and the resource key
 *        is defined relevant to it.
 * @param resourceKey
 *        Resource key for the resource message. The resource key must be
 *        relevant to the owner component.
 * @param formComponents 
 *        Form components being validated.
 */
public static void validateNotNull(Component owner, String resourceKey, FormComponent<?>... formComponents) {
    for (FormComponent<?> formComponent : formComponents) {
        if (formComponent.getModelObject() == null) {
            error(owner, resourceKey);
        }
    }
}

From source file:ontopoly.pages.ModalFindPage.java

License:Apache License

private WebMarkupContainer createSearchTab() {
    WebMarkupContainer searchTab = new WebMarkupContainer("searchTab");
    searchTab.setOutputMarkupId(true);/*from   w w w  .  j a  va  2 s.c  om*/

    final TextField<String> searchTermField = new TextField<String>("searchTerm", new Model<String>(null));
    searchTermField.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            // do nothing here as we only want the server to be notified
        }
    });
    searchTab.add(searchTermField);

    final WebMarkupContainer resultsContainer = new WebMarkupContainer("resultsContainer");
    resultsContainer.setOutputMarkupId(true);
    searchTab.add(resultsContainer);

    this.results = new LoadableDetachableModel<List<Topic>>() {
        @Override
        protected List<Topic> load() {
            String searchTerm = (String) searchTermField.getModelObject();
            if (searchTerm == null) {
                return Collections.emptyList();
            } else {
                try {
                    FieldInstance fieldInstance = fieldInstanceModel.getFieldInstance();
                    RoleField associationField = (RoleField) fieldInstance.getFieldAssignment()
                            .getFieldDefinition();
                    RoleField otherField = (RoleField) associationField.getFieldsForOtherRoles().iterator()
                            .next();
                    return otherField.searchAllowedPlayers(searchTerm);
                } catch (Exception e) {
                    errorInSearch = true;
                    return Collections.emptyList();
                }
            }
        }
    };

    Button searchButton = new Button("search");
    searchButton.add(new AjaxFormComponentUpdatingBehavior("onclick") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            results.detach();
            target.addComponent(resultsContainer);
        }
    });
    searchTab.add(searchButton);

    final FormComponent<? extends Object> checkGroup;
    final boolean maxOneCardinality = isMaxOneCardinality();
    if (maxOneCardinality) {
        checkGroup = new RadioGroup<String>("checkGroup", new Model<String>());
    } else {
        checkGroup = new CheckGroup<String>("checkGroup", new HashSet<String>());
    }
    checkGroup.add(new AjaxFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            // notify server when selection is made
        }
    });
    resultsContainer.add(checkGroup);

    final WebMarkupContainer unsuccessfulSearchContainer = new WebMarkupContainer(
            "unsuccessfulSearchContainer") {
        public boolean isVisible() {
            IModel<String> model = searchTermField.getModel();
            if (model == null)
                return false;
            return !(model.getObject() == null || model.getObject().equals(""))
                    && ((List<Topic>) results.getObject()).isEmpty();
        }
    };
    unsuccessfulSearchContainer.setOutputMarkupPlaceholderTag(true);
    checkGroup.add(unsuccessfulSearchContainer);

    Label message = new Label("message", new ResourceModel(errorInSearch ? "search.error" : "search.empty"));
    unsuccessfulSearchContainer.add(message);

    ListView<Topic> listView = new ListView<Topic>("results", results) {
        public void populateItem(ListItem<Topic> item) {
            Topic hit = item.getModelObject();
            if (maxOneCardinality) {
                Radio<String> check = new Radio<String>("check", new Model<String>(hit.getId())) {
                    @Override
                    protected void onComponentTag(final ComponentTag tag) {
                        tag.put("type", "radio");
                        super.onComponentTag(tag);
                    }
                };
                item.add(check);
            } else {
                Check<String> check = new Check<String>("check", new Model<String>(hit.getId())) {
                    @Override
                    protected void onComponentTag(final ComponentTag tag) {
                        tag.put("type", "checkbox");
                        super.onComponentTag(tag);
                    }
                };
                item.add(check);
            }
            item.add(new Label("topic", new Model<String>(hit.getName())));
            item.add(new Label("type",
                    new Model<String>(((TopicType) hit.getTopicTypes().iterator().next()).getName())));
        }
    };
    checkGroup.add(listView);

    Button closeOkButton = new Button("closeOK");
    closeOkButton.add(new AjaxFormComponentUpdatingBehavior("onclick") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Object modelObject = checkGroup.getModelObject();
            Collection selected;
            if (modelObject instanceof String)
                selected = Collections.singleton(modelObject);
            else
                selected = (Collection) modelObject;

            if (selected == null)
                selected = Collections.emptyList();

            // add associations for selected topics
            onSelectionConfirmed(target, selected);
            onCloseOk(target);

            // reset search term field
            searchTermField.getDefaultModel().setObject(null);
        }
    });
    searchTab.add(closeOkButton);

    Button closeCancelButton = new Button("closeCancel");
    closeCancelButton.add(new AjaxFormComponentUpdatingBehavior("onclick") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            onCloseCancel(target);
            // reset search term field
            searchTermField.getDefaultModel().setObject(null);
        }
    });
    searchTab.add(closeCancelButton);

    return searchTab;
}

From source file:ontopoly.pages.ModalFindPage.java

License:Apache License

private WebMarkupContainer createBrowseTab() {

    final WebMarkupContainer browseTab = new WebMarkupContainer("browseTab");
    browseTab.setOutputMarkupId(true);/*from  ww w.  j a v a2  s .c o m*/

    this.playerTypesChoicesModel = new LoadableDetachableModel<List<TopicType>>() {
        @Override
        protected List<TopicType> load() {
            // TODO: should merge with PlayerTypesModel.java (extend to filter my large instance types)
            FieldInstance fieldInstance = fieldInstanceModel.getFieldInstance();
            RoleField associationField = (RoleField) fieldInstance.getFieldAssignment().getFieldDefinition();
            // FIXME: this doesn't work for n+ary fields
            RoleField otherField = (RoleField) associationField.getFieldsForOtherRoles().iterator().next();
            TopicMap tm = associationField.getTopicMap();
            // include all topic types except those with large instance sets
            Collection<TopicType> allowedValueTypes = otherField.getDeclaredPlayerTypes();
            Collection<TopicType> largeInstanceSets = tm.getTopicTypesWithLargeInstanceSets();
            List<TopicType> topicTypes = new ArrayList<TopicType>(allowedValueTypes.size());
            Iterator<TopicType> iter = allowedValueTypes.iterator();
            while (iter.hasNext()) {
                TopicType topicType = iter.next();
                if (!largeInstanceSets.contains(topicType))
                    topicTypes.add(topicType);
            }
            return topicTypes;
        }
    };
    List<TopicType> playerTypes = playerTypesChoicesModel.getObject();
    TopicType selectedType = playerTypes.size() == 1 ? playerTypes.get(0) : null;
    this.selectedTypeModel = new TopicModel<TopicType>(selectedType, TopicModel.TYPE_TOPIC_TYPE);

    final WebMarkupContainer resultsContainer = new WebMarkupContainer("resultsContainer");
    resultsContainer.setOutputMarkupId(true);
    browseTab.add(resultsContainer);

    final FormComponent checkGroup;
    final Model<String> radioGroupModel = new Model<String>();
    final Collection<String> checkGroupModel = new HashSet<String>();

    final boolean maxOneCardinality = isMaxOneCardinality();
    if (maxOneCardinality) {
        checkGroup = new RadioGroup<String>("checkGroup", radioGroupModel);
    } else {
        checkGroup = new CheckGroup<String>("checkGroup", checkGroupModel);
    }
    final AjaxParentFormChoiceComponentUpdatingBehavior apfc = new AjaxParentFormChoiceComponentUpdatingBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            // notify server when selection is made
        }
    };
    checkGroup.add(apfc);
    resultsContainer.add(checkGroup);

    // create a tree
    final TreePanel treePanel = new TreePanel("results", getTreeModel(null)) {
        @Override
        protected Component populateNode(String id, TreeNode treeNode) {
            DefaultMutableTreeNode mTreeNode = (DefaultMutableTreeNode) treeNode;
            final TopicNode node = (TopicNode) mTreeNode.getUserObject();
            Topic selectedType = selectedTypeModel.getTopic();
            final boolean selectable = node.getTopic().isInstanceOf(selectedType);

            // create link with label        
            return new CheckLabelPanel(id) {
                @Override
                protected Component newCheck(String id) {
                    if (maxOneCardinality) {
                        return new AjaxParentRadioChild<String>(id, new Model<String>(node.getTopicId()),
                                apfc) {
                            @Override
                            public boolean isVisible() {
                                return selectable;
                            }

                            @Override
                            protected void onComponentTag(final ComponentTag tag) {
                                tag.put("type", "radio");
                                super.onComponentTag(tag);
                            }
                        };
                    } else {
                        return new AjaxParentCheckChild(id, new Model<String>(node.getTopicId()), apfc) {
                            @Override
                            public boolean isVisible() {
                                return selectable;
                            }

                            @Override
                            protected void onComponentTag(final ComponentTag tag) {
                                tag.put("type", "checkbox");
                                super.onComponentTag(tag);
                            }
                        };
                    }
                }

                @Override
                protected Label newLabel(String id) {
                    Label label = new Label(id, new Model<String>(node.getName()));
                    label.setRenderBodyOnly(false);
                    return label;
                }
            };
        }
    };
    treePanel.setOutputMarkupId(true);
    checkGroup.add(treePanel);

    // NOTE: need to readd model here because page, which we depend on
    // in the construction of the tree model, is not available in
    // TreePanel constructor
    if (this.selectedTypeModel != null)
        treePanel.setDefaultModel(getTreeModel(selectedType));

    final TopicDropDownChoice<TopicType> playerTypesDropDown = new TopicDropDownChoice<TopicType>("playerTypes",
            this.selectedTypeModel, playerTypesChoicesModel);

    playerTypesDropDown.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        protected void onUpdate(AjaxRequestTarget target) {
            // replace tree model
            TopicType topicType = (TopicType) playerTypesDropDown.getDefaultModelObject();
            treePanel.setDefaultModel(getTreeModel(topicType));
            target.addComponent(resultsContainer);
        }
    });
    browseTab.add(playerTypesDropDown);

    Button closeOkButton = new Button("closeOK");
    closeOkButton.add(new AjaxFormComponentUpdatingBehavior("onclick") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Object modelObject = checkGroup.getModelObject();
            Collection selected;
            if (modelObject instanceof String)
                selected = Collections.singleton(modelObject);
            else
                selected = (Collection) modelObject;

            if (selected == null)
                selected = Collections.EMPTY_LIST;

            // add associations for selected topics
            onSelectionConfirmed(target, selected);
            onCloseOk(target);

            // reset selected topic type, choice group and tree model
            selectedTypeModel.setObject(null);
            treePanel.setDefaultModel(getTreeModel(null));
            radioGroupModel.setObject(null);
            checkGroupModel.clear();
        }
    });
    browseTab.add(closeOkButton);

    Button closeCancelButton = new Button("closeCancel");
    closeCancelButton.add(new AjaxFormComponentUpdatingBehavior("onclick") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            onCloseCancel(target);

            // reset selected topic type, choice group and tree model
            selectedTypeModel.setObject(null);
            treePanel.setDefaultModel(getTreeModel(null));
            radioGroupModel.setObject(null);
            checkGroupModel.clear();
        }
    });
    browseTab.add(closeCancelButton);

    return browseTab;
}

From source file:org.artifactory.common.wicket.component.table.columns.checkbox.AjaxCheckboxColumn.java

License:Open Source License

@Override
protected FormComponent<Boolean> newCheckBox(String id, IModel<Boolean> model, final T rowObject) {
    final FormComponent<Boolean> checkbox = super.newCheckBox(id, model, rowObject);

    checkbox.add(new AjaxFormComponentUpdatingBehavior("onclick") {
        @Override//w w w .j  a  va 2  s .co m
        protected void onUpdate(AjaxRequestTarget target) {
            Boolean checked = checkbox.getModelObject();
            AjaxCheckboxColumn.this.onUpdate(checkbox, rowObject, checked, target);
        }

        @Override
        protected IAjaxCallDecorator getAjaxCallDecorator() {
            return AjaxCheckboxColumn.this.getAjaxCallDecorator();
        }
    });
    return checkbox;
}

From source file:org.dcm4chee.web.war.common.UIDFieldBehavior.java

License:LGPL

@SuppressWarnings("unchecked")
@Override/*from   ww w  . ja  va  2s.  c o m*/
protected final void onEvent(final AjaxRequestTarget target) {
    final FormComponent<String> formComponent = (FormComponent<String>) getComponent();
    boolean b = QueryUtil.isUniversalMatch(formComponent.getModelObject());
    try {
        formComponent.inputChanged();
        formComponent.validate();
        if (formComponent.hasErrorMessage()) {
            formComponent.invalid();
        } else {
            formComponent.valid();
            formComponent.updateModel();
            if (b != QueryUtil.isUniversalMatch(formComponent.getModelObject())) {
                updateOtherFields(target.getPage().getRequest().getParameterMap(),
                        formComponent.getInputName());
                addToTarget(target);
            }
        }
    } catch (RuntimeException e) {
        onError(target, e);
    }
}