/******************************************************************************* * Copyright (c) 2012-2015 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.ext.java.jdt.codeassistant.ui; /** * @author <a href="mailto:evidolob@exoplatform.com">Evgen Vidolob</a> * @version $Id: 5:02:23 PM 34360 2009-07-22 23:58:59Z evgen $ */ public class StyledString { public static abstract class Styler { public abstract String applyStyles(String text); } public static Styler QUALIFIER_STYLER = new DefaultStyler(/*JavaClientBundle.INSTANCE.css().fqnStyle()*/"#FQN#"); public static Styler COUNTER_STYLER = new DefaultStyler(/*JavaClientBundle.INSTANCE.css().counter()*/"#COUNTER#"); private StringBuilder builder; /** @param string */ public StyledString(String string) { this(); builder.append(string); } /** * */ public StyledString() { builder = new StringBuilder(); } /** @param cs */ public StyledString(char[] cs) { this(); append(cs); } /** * @param name * @param styler */ public StyledString(String name, Styler styler) { this(); append(name, styler); } /** @return */ public String getString() { return builder.toString(); } /** @param completion */ public void append(char[] completion) { builder.append(htmlEncode(new String(completion))); } /** @param c */ public void append(char c) { builder.append(c); } /** @param returnTypeSeparator */ public void append(String returnTypeSeparator) { builder.append(returnTypeSeparator); } /** @param qualifier */ public void append(String qualifier, Styler styler) { builder.append(styler.applyStyles(qualifier)); } /** @param c */ public void append(char c, Styler styler) { builder.append(styler.applyStyles(String.valueOf(c))); } /** @param declaration */ public void append(char[] declaration, Styler styler) { builder.append(styler.applyStyles(new String(declaration))); } /** * HTML-encode a string. This simple method only replaces the five characters &, <, >, ", and '. * * @param input * the String to convert * @return a new String with HTML encoded characters */ public static String htmlEncode(String input) { String output = input.replaceAll("&", "&"); output = output.replaceAll("<", "<"); output = output.replaceAll(">", ">"); output = output.replaceAll("\"", """); output = output.replaceAll("'", "'"); return output; } }