package org.jboss.seam.pdf.ui; import javax.faces.context.*; import com.lowagie.text.*; public class UIList extends ITextComponent { public static final String COMPONENT_TYPE = "org.jboss.seam.pdf.ui.UIList"; public static final String STYLE_NUMBERED = "NUMBERED"; public static final String STYLE_LETTERED = "LETTERED"; public static final String STYLE_GREEK = "GREEK"; public static final String STYLE_ROMAN = "ROMAN"; public static final String STYLE_DINGBATS = "ZAPFDINGBATS"; public static final String STYLE_DINGBATS_NUMBER = "ZAPFDINGBATS_NUMBER"; List list; String style; String listSymbol; float indent = 20; Boolean lowerCase = false; Integer charNumber; Integer numberType = 0; public void setStyle(String style) { this.style = style; } public void setIndent(float indent) { this.indent = indent; } public void setListSymbol(String listSymbol) { this.listSymbol = listSymbol; } /* for dingbats symbol list */ public void setCharNumber(Integer charNumber) { this.charNumber = charNumber; } /* for dingbats number list */ public void setNumberType(Integer numberType) { this.numberType = numberType; } /* for ROMAN,GREEK */ public void setLowerCase(Boolean lowerCase) { this.lowerCase = lowerCase; } @Override public Object getITextObject() { return list; } @Override public void removeITextObject() { list = null; } @Override public void createITextObject(FacesContext context) { style = (String) valueBinding(context, "style", style); lowerCase = (Boolean) valueBinding(context, "lowerCase", lowerCase); indent = (Float) valueBinding(context, "indent", indent); listSymbol = (String) valueBinding(context, "listSymbol", listSymbol); if (style != null) { if (style.equalsIgnoreCase(STYLE_ROMAN)) { list = new RomanList((int) indent); // int? bug in text? if (lowerCase != null) { list.setLowercase(lowerCase); // ((RomanList) list).setRomanLower(lowerCase); } } else if (style.equalsIgnoreCase(STYLE_GREEK)) { list = new GreekList((int) indent); // int? bug in itext? if (lowerCase != null) { list.setLowercase(lowerCase); // ((GreekList) list).setGreekLower(lowerCase); } } else if (style.equalsIgnoreCase(STYLE_DINGBATS)) { charNumber = (Integer) valueBinding(context, "charNumber", charNumber); list = new ZapfDingbatsList(charNumber, (int) indent); } else if (style.equalsIgnoreCase(STYLE_DINGBATS_NUMBER)) { numberType = (Integer) valueBinding(context, "numberType", numberType); list = new ZapfDingbatsNumberList(numberType, (int) indent); } else if (style.equalsIgnoreCase(STYLE_NUMBERED)) { list = new List(true, indent); // setFirst(int) } else if (style.equalsIgnoreCase(STYLE_LETTERED)) { list = new List(false, true, indent); // setFirst(char) } } if (list == null) { list = new List(false, indent); if (listSymbol != null) { list.setListSymbol(listSymbol); } } } @Override public void handleAdd(Object o) { list.add(o); } }