package scrum.client.wiki;
import ilarkesto.gwt.client.Gwt;
import java.util.ArrayList;
import java.util.List;
public class ItemList extends AWikiElement {
private List<Item> items = new ArrayList<Item>();
boolean ordered;
public ItemList(boolean ordered) {
super();
this.ordered = ordered;
}
public void add(Paragraph item) {
items.add(new Item(item));
}
public void add(Paragraph item, String leadingSpaces, boolean ordered) {
if (leadingSpaces.length() > 0) {
Item lastItem = items.get(items.size() - 1);
if (lastItem.list == null) {
lastItem.list = new ItemList(ordered);
lastItem.list.add(item);
} else {
lastItem.list.add(item, leadingSpaces.substring(1), ordered);
}
return;
}
items.add(new Item(item));
}
@Override
String toHtml(HtmlContext context) {
StringBuilder sb = new StringBuilder();
sb.append(ordered ? "<ol>" : "<ul>");
for (Item item : items) {
sb.append("<li>");
sb.append(item.p.toHtml(context));
if (item.containsList()) {
sb.append(item.list.toHtml(context));
}
sb.append("</li>");
}
sb.append(ordered ? "</ol>" : "</ul>");
return sb.toString();
}
public List<Item> getItems() {
return items;
}
public boolean isOrdered() {
return ordered;
}
@Override
public String toString() {
return "ItemList(" + Gwt.toString(items) + ")";
}
public class Item {
Paragraph p;
ItemList list;
public Item(Paragraph p) {
super();
this.p = p;
}
public Paragraph getParagraph() {
return p;
}
public ItemList getList() {
return list;
}
public boolean containsList() {
return list != null;
}
@Override
public String toString() {
return containsList() ? "Item(" + p + "," + list + ")" : p.toString();
}
}
}