Example usage for org.apache.wicket.markup.html.form SubmitLink SubmitLink

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

Introduction

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

Prototype

public SubmitLink(String id) 

Source Link

Document

With this constructor the SubmitLink must be inside a Form.

Usage

From source file:org.geoserver.web.wicket.property.PropertyEditorTestPage.java

License:Open Source License

public PropertyEditorTestPage(Foo foo) {
    Form form = new Form("form", new CompoundPropertyModel(foo));
    form.add(new PropertyEditorFormComponent("props"));
    form.add(new SubmitLink("save"));
    add(form);//from  w  w  w . j ava 2s  .c  om
}

From source file:org.geoserver.wms.eo.web.EoCoverageSelectorPage.java

License:Open Source License

private SubmitLink addToLayerGroupLink() {
    return new SubmitLink("save") {
        @Override//from w  w w.  j  a v a2s  . com
        public void onSubmit() {
            CatalogBuilder builder = new CatalogBuilder(getCatalog());
            builder.setStore(selectedStore);

            EoLayerGroupAbstractPage layerGroupPage = (EoLayerGroupAbstractPage) returnPage;
            List<EoLayerGroupEntry> items = layerGroupPage.lgEntryPanel.entryProvider.getItems();
            boolean error = false;
            for (EoCoverageSelection item : selections) {
                if (item.getType() != EoLayerType.IGNORE) {
                    try {
                        LayerInfo layer = createLayer(groupName, item, builder);
                        if (layer == null) {
                            error = true;
                        } else {
                            items.add(new EoLayerGroupEntry(layer, layer.getDefaultStyle(),
                                    layerGroupPage.lgModel.getObject().getName()));
                            info("Layer " + layer.getName()
                                    + " successfully created and added to the EO layer group");
                        }
                    } catch (Exception e) {
                        error = true;
                        error("Failed to create layer from covearge " + item.getCoverageName() + ": "
                                + e.getMessage());
                    }
                }
            }

            if (!error) {
                setResponsePage(returnPage);
            } else {
                updateCoveragesList(true);
            }
        }

    };
}

From source file:org.geoserver.wms.eo.web.EoLayerGroupAbstractPage.java

License:Open Source License

private SubmitLink saveLink() {
    return new SubmitLink("save") {
        @Override/*w  w  w . jav  a  2 s  .  com*/
        public void onSubmit() {
            // validation
            if (lgEntryPanel.getEntries().size() == 0) {
                error((String) new ParamResourceModel("oneLayerMinimum", getPage()).getObject());
                return;
            }

            LayerGroupInfo lg = (LayerGroupInfo) lgModel.getObject();

            // update the layer group entries
            lg.getLayers().clear();
            lg.getStyles().clear();
            for (EoLayerGroupEntry entry : lgEntryPanel.getEntries()) {
                PublishedInfo pi = entry.getLayer();
                if (pi instanceof LayerInfo) {
                    LayerInfo li = getCatalog().getLayer(pi.getId());
                    String expectedName = lg.getName() + "_" + entry.getLayerSubName();
                    String actualName = li.getName();
                    if (!expectedName.equals(actualName)) {
                        ResourceInfo resource = li.getResource();
                        li.setName(expectedName);
                        resource.setName(expectedName);
                        getCatalog().save(resource);
                        getCatalog().save(li);
                    }
                    lg.getLayers().add(li);
                    lg.getStyles().add(entry.getStyle());
                }
            }

            try {
                EoLayerGroupAbstractPage.this.save();
            } catch (Exception e) {
                error(e);
                LOGGER.log(Level.WARNING, "Error adding/modifying layer group.", e);
            }

        }
    };
}

From source file:org.geoserver.wps.web.ProcessLimitsPage.java

License:Open Source License

public ProcessLimitsPage(Page returnPage, final FilteredProcess process) {
    setReturnPage(returnPage);// ww  w  . j a  v a 2s.com
    this.process = process;

    Form form = new Form("form");
    add(form);

    final List<InputLimit> inputLimits = buildInputLimits(process);
    GeoServerDataProvider<InputLimit> inputLimitsProvider = new GeoServerDataProvider<ProcessLimitsPage.InputLimit>() {

        @Override
        protected List<org.geoserver.web.wicket.GeoServerDataProvider.Property<InputLimit>> getProperties() {
            List<Property<InputLimit>> result = new ArrayList<>();
            result.add(new BeanProperty<InputLimit>("name", "name"));
            result.add(new PropertyPlaceholder("type"));
            result.add(new BeanProperty<InputLimit>("editor", "validator"));
            return result;
        }

        @Override
        protected List<InputLimit> getItems() {
            return inputLimits;
        }

    };

    table = new GeoServerTablePanel<InputLimit>("table", inputLimitsProvider) {

        @Override
        protected Component getComponentForProperty(String id, IModel itemModel,
                Property<InputLimit> property) {
            InputLimit limit = (InputLimit) itemModel.getObject();
            String propertyName = property.getName();
            if (propertyName.equals("type")) {
                String type;
                try {
                    String key = "type." + limit.getValidator().getClass().getName();
                    type = new ParamResourceModel(key, ProcessLimitsPage.this).getString();
                } catch (Exception e) {
                    type = limit.validator.getClass().getSimpleName();
                }
                return new Label(id, type);
            } else if (propertyName.equals("editor")) {
                WPSInputValidator validator = limit.getValidator();
                if (validator instanceof MaxSizeValidator) {
                    Fragment f = new Fragment(id, "textEditor", ProcessLimitsPage.this);
                    PropertyModel maxSizeModel = new PropertyModel(itemModel, "validator.maxSizeMB");
                    TextField<Integer> text = new TextField<Integer>("text", maxSizeModel, Integer.class);
                    f.add(text);
                    return f;
                } else if (validator instanceof MultiplicityValidator) {
                    Fragment f = new Fragment(id, "textEditor", ProcessLimitsPage.this);
                    PropertyModel maxMultiplicityModel = new PropertyModel(itemModel, "validator.maxInstances");
                    TextField<Integer> text = new TextField<Integer>("text", maxMultiplicityModel,
                            Integer.class);
                    f.add(text);
                    return f;
                } else if (validator instanceof NumberRangeValidator) {
                    Fragment f = new Fragment(id, "rangeEditor", ProcessLimitsPage.this);
                    PropertyModel rangeModel = new PropertyModel(itemModel, "validator.range");
                    RangePanel rangeEditor = new RangePanel("range", rangeModel);
                    f.add(rangeEditor);
                    return f;
                }
            }
            // have the base class create a label for us
            return null;
        }

    };
    table.setOutputMarkupId(true);
    table.setFilterable(false);
    table.setPageable(false);
    table.setItemReuseStrategy(new DefaultItemReuseStrategy());
    table.setSortable(false);
    form.add(table);

    SubmitLink apply = new SubmitLink("apply") {
        @Override
        public void onSubmit() {
            // super.onSubmit();
            process.setValidators(buildValidators(inputLimits));
            doReturn();
        }
    };
    form.add(apply);
    Link cancel = new Link("cancel") {
        @Override
        public void onClick() {
            doReturn();
        }
    };
    form.add(cancel);
}

From source file:org.geoserver.wps.web.ProcessSelectionPage.java

License:Open Source License

public ProcessSelectionPage(final WPSAccessRulePage wpsAccessRulePage, final ProcessGroupInfo pfi) {
    this.pfi = pfi;

    // prepare the process factory title
    Class<? extends ProcessFactory> factoryClass = pfi.getFactoryClass();
    ProcessFactory pf = GeoServerProcessors.getProcessFactory(factoryClass, false);
    if (pf == null) {
        throw new IllegalArgumentException("Failed to locate the process factory " + factoryClass);
    }// w  w  w  . j  av  a  2  s. c o  m
    this.title = pf.getTitle().toString(getLocale());

    Form form = new Form("form");
    add(form);

    GeoServerRoleService roleService = getSecurityManager().getActiveRoleService();
    try {
        for (GeoServerRole r : roleService.getRoles()) {
            availableRoles.add(r.getAuthority());
        }
    } catch (IOException e1) {
        LOGGER.log(Level.FINER, e1.getMessage(), e1);
    }

    final FilteredProcessesProvider provider = new FilteredProcessesProvider(pfi, getLocale());
    final AutoCompleteSettings settings = new AutoCompleteSettings();
    settings.setShowCompleteListOnFocusGain(false);
    settings.setShowListOnEmptyInput(true);
    settings.setShowListOnFocusGain(true);
    settings.setMaxHeightInPx(100);
    processSelector = new GeoServerTablePanel<FilteredProcess>("selectionTable", provider) {

        @Override
        protected Component getComponentForProperty(String id, final IModel itemModel,
                Property<FilteredProcess> property) {
            if (property.getName().equals("enabled")) {
                Fragment fragment = new Fragment(id, "enabledFragment", ProcessSelectionPage.this);
                CheckBox enabled = new CheckBox("enabled", property.getModel(itemModel));
                enabled.setOutputMarkupId(true);
                fragment.add(enabled);
                return fragment;
            } else if (property.getName().equals("title")) {
                return new Label(id, property.getModel(itemModel));
            } else if (property.getName().equals("description")) {
                return new Label(id, property.getModel(itemModel));
            } else if (property.getName().equals("roles")) {
                Fragment fragment = new Fragment(id, "rolesFragment", ProcessSelectionPage.this);
                TextArea<String> roles = new TextArea<String>("roles", property.getModel(itemModel)) {
                    public org.apache.wicket.util.convert.IConverter getConverter(java.lang.Class<?> type) {
                        return new RolesConverter(availableRoles);
                    };
                };
                StringBuilder selectedRoles = new StringBuilder();
                IAutoCompleteRenderer<String> roleRenderer = new RolesRenderer(selectedRoles);
                AutoCompleteBehavior<String> b = new RolesAutoCompleteBehavior(roleRenderer, settings,
                        selectedRoles, availableRoles);
                roles.setOutputMarkupId(true);
                roles.add(b);
                fragment.add(roles);
                return fragment;
            } else if (property.getName().equals("validated")) {
                final IModel<Boolean> hasValidatorsModel = property.getModel(itemModel);
                IModel<String> availableModel = new AbstractReadOnlyModel<String>() {

                    @Override
                    public String getObject() {
                        Boolean value = hasValidatorsModel.getObject();
                        if (Boolean.TRUE.equals(value)) {
                            return "*";
                        } else {
                            return "";
                        }
                    }

                };
                return new Label(id, availableModel);
            } else if (property.getName().equals("edit")) {
                Fragment fragment = new Fragment(id, "linkFragment", ProcessSelectionPage.this);
                // we use a submit link to avoid losing the other edits in the form
                Link link = new Link("link") {
                    @Override
                    public void onClick() {
                        FilteredProcess fp = (FilteredProcess) itemModel.getObject();
                        setResponsePage(new ProcessLimitsPage(ProcessSelectionPage.this, fp));
                    }
                };
                fragment.add(link);

                return fragment;
            }
            return null;
        }
    };
    processSelector.setFilterable(false);
    processSelector.setPageable(false);
    processSelector.setOutputMarkupId(true);
    form.add(processSelector);
    SubmitLink apply = new SubmitLink("apply") {
        @Override
        public void onSubmit() {
            // super.onSubmit();
            pfi.getFilteredProcesses().clear();
            for (FilteredProcess process : provider.getItems()) {
                if (!process.getRoles().isEmpty() || !process.getEnabled()
                        || !process.getValidators().isEmpty()) {
                    ProcessInfo pai = process.toProcessInfo();
                    pfi.getFilteredProcesses().add(pai);
                }
            }
            setResponsePage(wpsAccessRulePage);
        }
    };
    form.add(apply);
    Link cancel = new Link("cancel") {
        @Override
        public void onClick() {
            setResponsePage(wpsAccessRulePage);
        }
    };
    form.add(cancel);
}

From source file:org.jabylon.rest.ui.wicket.panels.PropertyEditorPanel.java

License:Open Source License

public PropertyEditorPanel(PropertyFileDescriptor object, PageParameters parameters) {
    super("content", object, parameters);
    List<ReviewParticipant> activeReviews = PropertyListModeFactory.filterActiveReviews(
            getModel().getObject().getProjectLocale().getParent().getParent(), reviewParticipants);
    PropertyListMode mode = PropertyListModeFactory.allAsMap(activeReviews)
            .get(parameters.get("mode").toString());
    addLinkList(mode);/*from ww w . j av a  2  s .  c  o  m*/
    reviewModel = new LoadableDetachableModel<Multimap<String, Review>>() {

        private static final long serialVersionUID = 1L;

        @Override
        protected Multimap<String, Review> load() {
            return buildReviewMap(getModelObject());
        }
    };
    PropertyPairDataProvider provider = new PropertyPairDataProvider(object, mode, reviewModel);
    List<PropertyPair> contents = provider.createContents();

    ListView<PropertyPair> properties = new ListView<PropertyPair>("repeater", contents) {

        private static final long serialVersionUID = -7087485011138279358L;

        @Override
        protected void populateItem(final ListItem<PropertyPair> item) {
            IModel<PropertyPair> model = item.getModel();
            String key = model.getObject().getKey();
            Collection<Review> reviewList = reviewModel.getObject().get(key);
            item.add(new SinglePropertyEditor("row", model, false, reviewList));
        }

    };
    properties.setOutputMarkupId(true);

    Form<List<? extends PropertyPair>> form = new Form<List<? extends PropertyPair>>("properties-form",
            Model.ofList(contents)) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            super.onSubmit();
            IModel<List<? extends PropertyPair>> model = getModel();
            List<? extends PropertyPair> list = model.getObject();

            PropertyFileDescriptor descriptor = PropertyEditorPanel.this.getModelObject();
            PropertyFile file = descriptor.loadProperties();
            Map<String, Property> map = file.asMap();

            for (PropertyPair pair : list) {
                Property translation = pair.getTranslation();
                if (translation == null)
                    continue;
                if (map.containsKey(translation.getKey())) {
                    Property property = map.get(translation.getKey());
                    property.setComment(translation.getComment());
                    property.setValue(translation.getValue());
                } else
                    file.getProperties().add(translation);
            }
            propertyPersistence.saveProperties(descriptor, file);
            getSession().info("Saved successfully");
            try {
                //TODO: this is very unclean...
                // give it some time to store the values
                Thread.sleep(500);
            } catch (InterruptedException e) {
                logger.error("Interrupted while waiting for property persistence", e);
            }
        }
    };

    add(form);
    form.add(new SubmitLink("properties-submit") {
        private static final long serialVersionUID = 1L;

        @Override
        protected String getTriggerJavaScript() {
            /* disables the default submit behaviour since we do that ourselfs in JS
             * https://github.com/jutzig/jabylon/issues/52
             * see propertyEditor.js
             */
            return "";
        }
    });
    form.add(properties);

    final PropertiesEditorToolbar editorToolbar = new PropertiesEditorToolbar("properties-toolbar", getModel(),
            getPageParameters());
    editorToolbar.setOutputMarkupId(true);
    add(editorToolbar);

    //
    //        final AbstractDefaultAjaxBehavior behave = new AbstractDefaultAjaxBehavior() {
    //            protected void respond(final AjaxRequestTarget target) {
    //                editorToolbar.respond(target);
    //
    //                StringValue parameter = RequestCycle.get().getRequest().getRequestParameters().getParameterValue("key");
    //                editorToolbar.setKey(parameter.toString(""));
    //            }
    //
    //            public CharSequence getCallbackFunction(String functionName, CallbackParameter... extraParameters)
    //            {
    //                StringBuilder sb = new StringBuilder();
    //                sb.append("function ");
    //                sb.append(functionName);
    //                sb.append(" (");
    //                boolean first = true;
    //                for (CallbackParameter curExtraParameter : extraParameters)
    //                {
    //                    if (curExtraParameter.getFunctionParameterName() != null)
    //                    {
    //                        if (!first)
    //                            sb.append(',');
    //                        else
    //                            first = false;
    //                        sb.append(curExtraParameter.getFunctionParameterName());
    //                    }
    //                }
    //                sb.append(") {\n");
    //                sb.append(getCallbackFunctionBody(extraParameters));
    //                sb.append("}\n");
    //                return sb;
    //            }
    //
    //            @Override
    //            public void renderHead(Component component, IHeaderResponse response) {
    //                response.render(JavaScriptHeaderItem.forScript(getCallbackFunction("requestAid",CallbackParameter.explicit("key")), "requestAid"));
    //                super.renderHead(component, response);
    //            }
    //
    //        };
    //
    //        add(behave);

}

From source file:org.projectforge.plugins.skillmatrix.SkillSelectPanel.java

License:Open Source License

/**
 * @see org.projectforge.web.wicket.AbstractSelectPanel#onBeforeRender()
 *///from ww  w  .  j av a  2s .c om
@SuppressWarnings("serial")
@Override
protected void onBeforeRender() {
    super.onBeforeRender();
    final SkillDO skill = getModelObject();
    final Integer skillId = skill != null ? skill.getId() : null;
    if (currentSkillId == skillId) {
        return;
    }
    currentSkillId = skillId;
    if (showPath == true && skill != null) {
        ancestorRepeater.removeAll();
        final SkillNode skillNode = getSkillTree().getSkillNodeById(skill.getId());
        final List<Integer> ancestorIds = skillNode.getAncestorIds();
        final ListIterator<Integer> it = ancestorIds.listIterator(ancestorIds.size());
        while (it.hasPrevious() == true) {
            final Integer ancestorId = it.previous();
            final SkillDO ancestorSkill = getSkillTree().getSkillById(ancestorId);
            if (ancestorSkill.getParent() == null) {
                // Don't show root node:
                continue;
            }
            final WebMarkupContainer cont = new WebMarkupContainer(ancestorRepeater.newChildId());
            ancestorRepeater.add(cont);
            final SubmitLink selectSkillLink = new SubmitLink("ancestorSkillLink") {
                @Override
                public void onSubmit() {
                    caller.select(selectProperty, ancestorSkill.getId());
                }
            };
            selectSkillLink.setDefaultFormProcessing(false);
            cont.add(selectSkillLink);
            WicketUtils.addTooltip(selectSkillLink, getString(I18N_KEY_SELECT_ANCESTOR_SKILL_TOOLTIP));
            selectSkillLink.add(new Label("name", ancestorSkill.getTitle()));
        }
        ancestorRepeater.setVisible(true);
    } else {
        ancestorRepeater.setVisible(false);
    }
}

From source file:org.projectforge.plugins.skillmatrix.SkillSelectPanel.java

License:Open Source License

@Override
@SuppressWarnings("serial")
public SkillSelectPanel init() {
    super.init();
    ancestorRepeater = new RepeatingView("ancestorSkills");
    divContainer.add(ancestorRepeater);/* ww  w . j a va2s  .c  o  m*/
    final SubmitLink skillLink = new SubmitLink("skillLink") {
        @Override
        public void onSubmit() {
            final SkillDO skill = getModelObject();
            if (skill == null) {
                return;
            }
            final PageParameters pageParams = new PageParameters();
            pageParams.add(AbstractEditPage.PARAMETER_KEY_ID, String.valueOf(skill.getId()));
            final SkillEditPage editPage = new SkillEditPage(pageParams);
            editPage.setReturnToPage((AbstractSecuredPage) getPage());
            setResponsePage(editPage);
        }
    };
    skillLink.setDefaultFormProcessing(false);
    divContainer.add(skillLink);
    // auto complete panels
    initAutoCompletePanels();

    WicketUtils.addTooltip(skillLink, getString(I18N_KEY_DISPLAY_SKILL_TOOLTIP));
    skillLink.add(new Label("name", new Model<String>() {
        /**
         * @see org.apache.wicket.model.Model#getObject()
         */
        @Override
        public String getObject() {
            final SkillDO skill = getModelObject();
            return skill != null ? skill.getTitle() : "";
        }
    }));

    final SubmitLink selectButton = new SubmitLink("select") {
        @Override
        public void onSubmit() {
            final SkillTreePage skillTreePage = new SkillTreePage(caller, selectProperty);
            if (getModelObject() != null) {
                skillTreePage.setHighlightedRowId(getModelObject().getId()); // Preselect node for highlighting.
            }
            setResponsePage(skillTreePage);
        };
    };
    selectButton.setDefaultFormProcessing(false);
    divContainer.add(selectButton);
    selectButton.add(new IconPanel("selectHelp", IconType.TASK, getString(I18N_KEY_SELECT_SKILL_TOOLTIP)));
    final SubmitLink unselectButton = new SubmitLink("unselect") {
        @Override
        public void onSubmit() {
            caller.unselect(selectProperty);
        }

        @Override
        public boolean isVisible() {
            return isRequired() == false && getModelObject() != null;
        }
    };
    unselectButton.setDefaultFormProcessing(false);
    divContainer.add(unselectButton);
    unselectButton
            .add(new IconPanel("unselectHelp", IconType.REMOVE_SIGN, getString(I18N_KEY_UNSELECT_SKILL_TOOLTIP))
                    .setColor(CSSColor.RED));

    return this;
}

From source file:org.projectforge.plugins.teamcal.event.TeamEventListForm.java

License:Open Source License

/**
 * @see org.projectforge.web.wicket.AbstractListForm#onOptionsPanelCreate(org.projectforge.web.wicket.flowlayout.FieldsetPanel,
 *      org.projectforge.web.wicket.flowlayout.DivPanel)
 *//*from  www . j av a2 s  . co m*/
@SuppressWarnings("serial")
@Override
protected void onOptionsPanelCreate(final FieldsetPanel optionsFieldsetPanel,
        final DivPanel optionsCheckBoxesPanel) {
    {
        optionsFieldsetPanel.setOutputMarkupId(true);
        startDate = new DatePanel(optionsFieldsetPanel.newChildId(),
                new PropertyModel<Date>(getSearchFilter(), "startDate"),
                DatePanelSettings.get().withSelectPeriodMode(true));
        optionsFieldsetPanel.add(dependentFormComponents[0] = startDate);
        optionsFieldsetPanel.setLabelFor(startDate);
        optionsFieldsetPanel.add(new DivTextPanel(optionsFieldsetPanel.newChildId(), " - "));
        endDate = new DatePanel(optionsFieldsetPanel.newChildId(),
                new PropertyModel<Date>(getSearchFilter(), "endDate"),
                DatePanelSettings.get().withSelectPeriodMode(true));
        optionsFieldsetPanel.add(dependentFormComponents[1] = endDate);
        {
            final SubmitLink unselectPeriod = new SubmitLink(IconLinkPanel.LINK_ID) {
                @Override
                public void onSubmit() {
                    getSearchFilter().setStartDate(null);
                    getSearchFilter().setEndDate(null);
                    clearInput();
                    parentPage.refresh();
                };
            };
            unselectPeriod.setDefaultFormProcessing(false);
            optionsFieldsetPanel.add(new IconLinkPanel(optionsFieldsetPanel.newChildId(), IconType.REMOVE_SIGN,
                    new ResourceModel("calendar.tooltip.unselectPeriod"), unselectPeriod)
                            .setColor(CSSColor.RED));
        }
        final QuickSelectPanel quickSelectPanel = new QuickSelectPanel(optionsFieldsetPanel.newChildId(),
                parentPage, "quickSelect", startDate);
        optionsFieldsetPanel.add(quickSelectPanel);
        quickSelectPanel.init();
        optionsFieldsetPanel.add(new HtmlCommentPanel(optionsFieldsetPanel.newChildId(), new Model<String>() {
            @Override
            public String getObject() {
                return WicketUtils.getUTCDates(getSearchFilter().getStartDate(),
                        getSearchFilter().getEndDate());
            }
        }));
    }
    {
        // Team calendar
        final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.teamcal.calendar"));// .setLabelSide(false);
        final TeamCalsProvider calendarProvider = new TeamCalsProvider();
        calendarsListHelper = new MultiChoiceListHelper<TeamCalDO>().setComparator(new TeamCalsComparator())
                .setFullList(calendarProvider.getSortedCalenders());
        final Collection<Integer> list = getFilter().getTeamCals();
        if (list != null) {
            for (final Integer calId : list) {
                final TeamCalDO cal = TeamCalCache.getInstance().getCalendar(calId);
                calendarsListHelper.addOriginalAssignedItem(cal).assignItem(cal);
            }
        }
        final Select2MultiChoice<TeamCalDO> calendars = new Select2MultiChoice<TeamCalDO>(
                fs.getSelect2MultiChoiceId(),
                new PropertyModel<Collection<TeamCalDO>>(this.calendarsListHelper, "assignedItems"),
                calendarProvider);
        fs.add(calendars);
    }
}

From source file:org.projectforge.web.address.PhoneCallForm.java

License:Open Source License

@SuppressWarnings("serial")
private void addPhoneNumber(final String property, final String label) {
    final SubmitLink numberLink = new SubmitLink(TextLinkPanel.LINK_ID) {
        @Override/*w w w .j  a v  a2  s .  c  o m*/
        public void onSubmit() {
            final String number = (String) BeanHelper.getProperty(address, property);
            setPhoneNumber(parentPage.extractPhonenumber(number));
            numberTextField.setModelObject(new AddressDO().setName(getPhoneNumber()));
            numberTextField.modelChanged();
            parentPage.call();
        }
    };
    final TextLinkPanel numberLinkPanel = new TextLinkPanel(addressPanel.newChildId(), numberLink,
            new Model<String>() {
                @Override
                public String getObject() {
                    final String number = (String) BeanHelper.getProperty(address, property);
                    return HtmlHelper.escapeHtml(number + " (" + label + ")\n", true);
                }
            }) {
        /**
         * @see org.apache.wicket.Component#isVisible()
         */
        @Override
        public boolean isVisible() {
            if (address == null) {
                return false;
            }
            final String number = (String) BeanHelper.getProperty(address, property);
            return (StringUtils.isNotBlank(number) == true);
        }
    };
    numberLinkPanel.getLabel().setEscapeModelStrings(false);
    addressPanel.add(numberLinkPanel);
}