package com.adobe.dp.office.word;
import java.util.Iterator;
import com.adobe.dp.xml.util.StringUtil;
public class NumberingLabelIterator implements Iterator {
NumberingDefinitionInstance instance;
NumberingLevelDefinition level;
int count;
boolean first;
NumberingLabelIterator(NumberingDefinitionInstance instance, NumberingLevelDefinition level) {
this.instance = instance;
this.level = level;
reset();
}
void reset() {
first = true;
count = level.start;
}
public boolean hasNext() {
return true;
}
public String latin(int n) {
StringBuffer r = new StringBuffer();
n--;
char c = (char) ('a' + n % 26);
int cc = n / 26 + 1;
for (int i = 0; i < cc; i++)
r.append(c);
return r.toString();
}
String getNumberStr() {
String fmt = level.numFmt;
if (fmt.equals("decimal"))
return Integer.toString(count);
if (fmt.equals("upperLetter"))
return latin(count).toUpperCase();
if (fmt.equals("lowerLetter"))
return latin(count);
if (fmt.equals("upperRoman"))
return StringUtil.printRoman(count).toUpperCase();
if (fmt.equals("lowerRoman"))
return StringUtil.printRoman(count);
return "";
}
public Object next() {
if (first)
first = false;
else
count++;
String txt = instance.formatText(level.lvlText, level.lvl);
// System.out.println("[" + instance.numId + "," + level.lvl + "]: " +
// level.lvlText + " -> " + txt);
instance.resetLevels(level.lvl);
return new NumberingLabel(instance, level, txt);
}
public void remove() {
throw new RuntimeException("not supported");
}
}