package org.genedb.web.tags.db;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import org.genedb.db.taxon.TaxonNode;
import org.genedb.web.menu.CompositeMenu;
import org.genedb.web.menu.Menu;
import org.genedb.web.menu.SimpleMenu;
public class DisplayPhylogeny extends AbstractHomepageTag {
int top = 200;
int left = 154;
private void buildMenu(TaxonNode node, CompositeMenu comSrc) {
List<TaxonNode> childs = node.getChildren();
for (TaxonNode child : childs) {
if (child.isLeaf()) {
SimpleMenu sm = new SimpleMenu(Integer.toString(Menu.counter++), child.getLabel(),
null);
comSrc.add(sm);
} else {
CompositeMenu parentMenu = new CompositeMenu(Integer.toString(Menu.counter++),
child.getLabel(), null, false);
comSrc.add(parentMenu);
buildMenu(child, parentMenu);
}
}
}
@Override
protected void display(TaxonNode node, JspWriter out) throws IOException {
Menu.left = this.left;
Menu.top = this.top;
List<TaxonNode> nodes = node.getChildren();
StringBuffer sb = new StringBuffer();
StringBuffer top = new StringBuffer();
int j = 1;
sb
.append("<div id=\"start\" onmouseover=\"showfirst();\" onmouseout=\"hidefirst();\" style=\"position: relative; border: 1px solid black; width: 154px; background: rgb(153, 153, 255);\"><a href=\"null\" style=\"text-decoration: none; color: white;\">Select Organism</a>");
for (TaxonNode tnode : nodes) {
CompositeMenu menu = new CompositeMenu(Integer.toString(Menu.counter++), tnode
.getLabel(), null, true);
top.append(Menu.counter - 1);
top.append(",");
menu.setLevelCoord(Integer.toString(j));
j++;
buildMenu(tnode, menu);
sb.append(menu.render(j - 1));
}
top.deleteCharAt(top.length() - 1);
sb.append("<input type=\"hidden\" id=\"itemsLength\" value=\"" + Menu.counter + "\"/>");
sb.append("<input type=\"hidden\" id=\"topItems\" value=\"" + top.toString() + "\"/>");
Menu.counter = 0;
out.print(sb.toString());
}
}