package com.delcyon.capo.webapp.widgets;
import org.w3c.dom.Element;
import com.delcyon.capo.webapp.models.DomItemModel;
import com.delcyon.capo.webapp.models.DomItemModel.DomUse;
import eu.webtoolkit.jwt.SelectionBehavior;
import eu.webtoolkit.jwt.SelectionMode;
import eu.webtoolkit.jwt.WLength;
import eu.webtoolkit.jwt.WPopupMenu;
public class WCapoXmlTreeView extends CapoWTreeView
{
private WPopupMenu treeViewRightClickMenu;
private Element rootElement;
public WCapoXmlTreeView()
{
//basic setup
setLayoutSizeAware(true);
setColumnResizeEnabled(false);
setWidth(new WLength(250));
setSelectionMode(SelectionMode.SingleSelection);
setSelectionBehavior(SelectionBehavior.SelectItems);
setSelectable(true);
setAlternatingRowColors(true);
//setup Right click Menu
setRightClickAware(true);
rightClicked().addListener(this, (modelIndex,mouseEvent)->getTreeViewRightClickMenu().popup(mouseEvent));
}
public void setRootElement(Element rootElement)
{
this.rootElement = rootElement;
setModel(new DomItemModel(rootElement,DomUse.NAVIGATION));
}
/**
* Generate the views right click menu
* @return
*/
private WPopupMenu getTreeViewRightClickMenu()
{
if(treeViewRightClickMenu == null)
{
treeViewRightClickMenu = new WPopupMenu();
//setup create node method
treeViewRightClickMenu.addItem("Create Node...").clicked().addListener(this, this::doNothing);
//setup delete method
treeViewRightClickMenu.addItem("Delete").clicked().addListener(this, this::doNothing);
//TODO we still need a rename, and a move method there
}
return this.treeViewRightClickMenu;
}
private void doNothing(){}
}