/* * SmartDoc : Ultimate document format based on XML * Copyright (C) 1998-2001 ASAMI, Tomoharu (asami@zeomtech.com) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.xmlsmartdoc.SmartDoc.plain; import org.w3c.dom.Element; import com.AsamiOffice.jaba2.xml.pdom.PElement; import com.AsamiOffice.jaba2.text.cui.*; /** * TList * * @since Oct. 8, 1999 * @version Mar. 14, 2001 * @author ASAMI, Tomoharu (asami@zeomtech.com) */ public abstract class TList extends AbstractTElement { public TList(String name) { super(name); setIndent(6); } public void format(StringBuffer buffer) { TNode[] nodes = getChildren(); for (int i = 0;i < nodes.length;i++) { TNode node = nodes[i]; if (node instanceof TItem) { TItem item = (TItem)node; _indentParent(buffer); buffer.append(_mark(i + 1, (TItem)nodes[i])); item.format(buffer); } } } public void format(CPanel cnode) { CPanel dlItem = null; TNode[] tnodes = getChildren(); for (int i = 0;i < tnodes.length;i++) { TNode child = tnodes[i]; if (child instanceof TItem) { CPanel item = new CRowPanel(); CBox mark = new CBox(_mark(i + 1, (TItem)child)); mark.setNatural(true); mark.setAlign("right"); mark.setWidth(getIndent()); item.append(mark); CPanel desc = new CPanel(); item.append(desc); child.format(desc); cnode.append(item); } else if (child instanceof TList) { TList childList = (TList)child; childList.setIndent(getIndent() + 2); CPanel desc = new CPanel(); childList.format(desc); cnode.append(desc); } else { throw (new UnsupportedOperationException(child.toString())); } } } public int getTopGap() { return (1); } public int getBottomGap() { return (1); } protected abstract String _mark(int i, TItem item); }