List of usage examples for org.apache.wicket.util.string Strings escapeMarkup
public static CharSequence escapeMarkup(final CharSequence s, final boolean escapeSpaces)
From source file:org.obiba.onyx.quartz.core.wicket.layout.impl.standard.DefaultOpenAnswerDefinitionPanel.java
License:Open Source License
private DataField createAutoCompleteDataField(ValueMap arguments) { final OpenAnswerDefinitionSuggestion suggestion = new OpenAnswerDefinitionSuggestion( getOpenAnswerDefinition());//from w ww.j ava2 s .c o m final AbstractAutoCompleteDataProvider provider = suggestion .getSuggestionSource() == OpenAnswerDefinitionSuggestion.Source.ITEMS_LIST ? new ItemListDataProvider() : new VariableDataProvider(); final IAutoCompleteDataConverter converter = new IAutoCompleteDataConverter() { private static final long serialVersionUID = 1L; @Override public Data getModelObject(String key) { return DataBuilder.buildText(key); } @Override public String getKey(Data data) { return data.getValueAsString(); } @Override public String getDisplayValue(Data data, String partial) { String key = getKey(data); String label = provider.localizeChoice(key); String display = Strings.escapeMarkup(key, true).toString(); if (Strings.isEmpty(label) == false) { display = display + " : " + Strings.escapeMarkup(label); } return highlightMatches(partial, display); } private String highlightMatches(String partial, String mayContain) { if (mayContain == null) return null; if (Strings.isEmpty(partial)) return mayContain; // The pattern we want is "(tylenol|extra|strength)" StringBuilder pattern = new StringBuilder("("); Joiner.on("|").appendTo(pattern, Splitter.on(CharMatcher.WHITESPACE).trimResults().omitEmptyStrings().split(partial)); pattern.append(")"); Matcher matcher = Pattern.compile(pattern.toString(), Pattern.CASE_INSENSITIVE).matcher(mayContain); StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, "<span class='match'>" + Strings.escapeMarkup(matcher.group(0), true) + "</span>"); } matcher.appendTail(sb); return sb.toString(); } }; DataField f = new DataField("open", new PropertyModel<Data>(this, "data"), DataType.TEXT, provider, converter, new AutoCompleteSettings().setAdjustInputWidth(false)); if (suggestion.getNewValueAllowed() == false) { f.add(new AbstractValidator<Data>() { private static final long serialVersionUID = 1L; @Override protected void onValidate(IValidatable<Data> validatable) { Data value = validatable.getValue(); if (value != null && value.getValue() != null && Iterables.contains(provider.getChoices(value.getValueAsString()), value) == false) { error(validatable, "NotASuggestedValue"); } } }); } return f; }