package org.jblooming.utilities;
import org.jblooming.waf.html.display.Img;
import org.jblooming.waf.html.layout.Skin;
import org.jblooming.waf.settings.I18n;
import org.jblooming.waf.view.PageState;
import javax.servlet.jsp.PageContext;
import java.util.HashSet;
import java.util.Set;
/**
* @author Pietro Polsinelli ppolsinelli@open-lab.com
* @author Roberto Bicchierai rbicchierai@open-lab.com
*/
public class SmileyUtilities {
public static Set<Smiley> smileys = new HashSet<Smiley>();
private static void feedSmileys() {
smileys.add(new Smiley(":)", "smile"));
smileys.add(new Smiley(":-)", "smile"));
smileys.add(new Smiley(":-]", "polite_smile"));
smileys.add(new Smiley(":-(", "frown"));
smileys.add(new Smiley(":(", "frown"));
smileys.add(new Smiley(":-/", "skepticism"));
smileys.add(new Smiley(":-\\", "skepticism"));
smileys.add(new Smiley(":-|", "sarcasm"));
smileys.add(new Smiley(";-)", "wink"));
smileys.add(new Smiley(":-D", "grin"));
smileys.add(new Smiley(":-P", "tongue"));
smileys.add(new Smiley(":-p", "tongue"));
smileys.add(new Smiley(":-o", "surprise"));
smileys.add(new Smiley(":-O", "surprise"));
smileys.add(new Smiley(":-0", "surprise"));
smileys.add(new Smiley(":'-(", "tear"));
smileys.add(new Smiley("(@)", "angry"));
}
public static String getTextWithSmileys(String text, PageContext pageContext) {
synchronized (smileys) {
if (smileys.size() == 0)
feedSmileys();
}
PageState pageState = PageState.getCurrentPageState();
Skin skin = pageState.sessionState.getSkin();
for (Smiley smiley : smileys) {
Img img = new Img(skin.imgPath + "/smiley/" + smiley.img + ".png", I18n.get(smiley.code));
img.align = "absmiddle";
text = StringUtilities.replaceAllNoRegex(text, smiley.code, img.toHtmlStringBuffer().toString());
}
return ""+text+"";
}
public static class Smiley {
String code;
String img;
public Smiley(String code, String img) {
this.code = code;
this.img = img;
}
}
}