package org.nocket.gen.domain.visitor.html.create; import gengui.domain.AbstractDomainReference; import java.util.ArrayList; import java.util.List; import java.util.Stack; import org.apache.ecs.Element; import org.apache.ecs.html.Col; import org.apache.ecs.html.ColGroup; import org.apache.ecs.html.Form; import org.apache.ecs.html.Html; import org.apache.ecs.html.Label; import org.apache.ecs.html.Legend; import org.apache.ecs.html.TBody; import org.apache.ecs.html.TD; import org.apache.ecs.html.TR; import org.apache.ecs.html.Table; import org.nocket.gen.domain.DMDWebGenContext; import org.nocket.gen.domain.element.ButtonElement; import org.nocket.gen.domain.element.HeadlineElement; import org.nocket.gen.domain.visitor.html.styling.StylingFactory; @Deprecated public class HtmlGeneratorVisitorTablegrid<E extends AbstractDomainReference> extends CreateHtmlVisitor<E> { public static final int NUMBER_GRID_ROWS = 5; protected Table gridTable; protected TBody grid; protected Stack<List<Element>> collectedButtons = new Stack<List<Element>>(); public HtmlGeneratorVisitorTablegrid(DMDWebGenContext<E> context) { super(context, StylingFactory.newStylingStrategyInstance(context)); collectedButtons.push(new ArrayList<Element>()); } @Override protected Html newHtml() { Html html = super.newHtml(); addTablegrid(); return html; } protected void addTablegrid() { gridTable = new Table(); gridTable.setCellPadding(4).setCellSpacing(4).setWidth("100%").setClass("tablegrid"); Form form = (Form) panelStack.peek(); form.addElement(gridTable); ColGroup gridColumns = new ColGroup(); gridColumns.addElement(new Col().setSpan(1).setWidth(100)); gridColumns.addElement(new Col().setSpan(1).setWidth(250)); gridColumns.addElement(new Col().setSpan(1).setWidth(100)); gridColumns.addElement(new Col().setSpan(1).setWidth(250)); gridTable.addElement(gridColumns); grid = new TBody(); gridTable.addElement(grid); panelStack.add(grid); } @Override public void visitFieldsetOpen(HeadlineElement<E> e) { TR tablerow = new TR(); //TODO JL: Legend is not allowed any more in a table cells since HTML although it looks fine Legend legend = new Legend(); Label label = componentBuilder.createFieldsetHeaderLabel(e); legend.addElement(label); tablerow.addElement(new TD().setColSpan(5).addElement(legend)); maybeAdd(tablerow); collectedButtons.push(new ArrayList<Element>()); } @Override public void visitFieldsetClose() { addCollectedButtons(); } protected void addCollectedButtons() { List<Element> collectedButtonsOnLevel = collectedButtons.pop(); if (collectedButtonsOnLevel.size() > 0) { TR tablerow = new TR(); TD tablecell = new TD().setColSpan(NUMBER_GRID_ROWS); for (Element button : collectedButtonsOnLevel) { tablecell.addElement(button); } tablerow.addElement(tablecell); grid.addElement(tablerow); } } @Override public void finish() { addCollectedButtons(); super.finish(); } @Override public void visitButton(ButtonElement<E> e) { Element button = componentBuilder.createButton(e); collectedButtons.peek().add(button); } }