Example usage for org.apache.wicket.util.string Strings escapeMarkup

List of usage examples for org.apache.wicket.util.string Strings escapeMarkup

Introduction

In this page you can find the example usage for org.apache.wicket.util.string Strings escapeMarkup.

Prototype

public static CharSequence escapeMarkup(final CharSequence s, final boolean escapeSpaces) 

Source Link

Document

Converts a Java String to an HTML markup String by replacing illegal characters with HTML entities where appropriate.

Usage

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;
}