/******************************************************************************* * Copyright (c) 2011-2014 Fernando Petrola * * This file is part of Dragome SDK. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html ******************************************************************************/ package com.dragome.examples.tree; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.w3c.dom.Element; import com.dragome.examples.tree.views.TreeNodeView; import com.dragome.guia.GuiaServiceLocator; import com.dragome.render.canvas.interfaces.Canvas; import com.dragome.render.html.renderers.MergeableElement; import com.dragome.render.interfaces.ComponentRenderer; import com.dragome.render.interfaces.View; import com.dragome.templates.TemplateLayout; import com.dragome.templates.TemplateRepeater; import com.dragome.templates.interfaces.Template; public class HTMLTreeRenderer implements ComponentRenderer<Element, VisualTreeImpl> { public HTMLTreeRenderer() { } public Canvas<Element> render(final VisualTreeImpl visualTree) { Canvas<Element> canvas= GuiaServiceLocator.getInstance().getTemplateManager().getCanvasFactory().createCanvas(); canvas.setContent(new MergeableElement() { public void mergeWith(Element element) { Template rootTemplate= ((TemplateLayout) visualTree.getLayout()).getTemplate(); List<View<TreeNode>> modelViews= new ArrayList<View<TreeNode>>(); Template originalTemplate= visualTree.getOriginalTemplate(); modelViews.add(new TreeNodeView(originalTemplate)); TreeNode rootNode= visualTree.getRootNode(); TemplateRepeater templateRepeater= new TemplateRepeater(false); templateRepeater.repeatItems(Arrays.asList(rootNode), templateRepeater.createItemAdder(rootTemplate, originalTemplate, modelViews, "children")); } }); return canvas; } }