package com.ibm.smartgwt.defect.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.types.TreeModelType;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.events.RightMouseDownEvent;
import com.smartgwt.client.widgets.events.RightMouseDownHandler;
import com.smartgwt.client.widgets.grid.events.CellClickEvent;
import com.smartgwt.client.widgets.grid.events.CellClickHandler;
import com.smartgwt.client.widgets.tree.Tree;
import com.smartgwt.client.widgets.tree.TreeGrid;
import com.smartgwt.client.widgets.tree.TreeGridField;
import com.smartgwt.client.widgets.tree.TreeNode;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class SmartTreeGridDefect implements EntryPoint {
	/**
	 * This is the entry point method.
	 */
	public void onModuleLoad() {
		RootPanel.get().add(getViewPanel());
	}

	public Canvas getViewPanel() {
		Tree employeeTree = new Tree();
		employeeTree.setModelType(TreeModelType.PARENT);
		employeeTree.setIdField("EmployeeId");
		employeeTree.setParentIdField("ReportsTo");
		employeeTree.setNameProperty("Name");
		employeeTree.setRootValue(1);
		employeeTree.setData(employeeData);

		TreeGrid employeeTreeGrid = new TreeGrid();
		employeeTreeGrid.setWidth(500);
		employeeTreeGrid.setHeight(400);
		employeeTreeGrid.setNodeIcon("icons/16/person.png");
		employeeTreeGrid.setFolderIcon("icons/16/person.png");
		employeeTreeGrid.setShowOpenIcons(false);
		employeeTreeGrid.setShowDropIcons(false);
		employeeTreeGrid.setClosedIconSuffix("");
		employeeTreeGrid.setFields(new TreeGridField("Name"));
		employeeTreeGrid.setData(employeeTree);

		employeeTreeGrid.getData().openAll();
		
		employeeTreeGrid.addRightMouseDownHandler(new RightMouseDownHandler() {
			
			@Override
			public void onRightMouseDown(RightMouseDownEvent event) {
				System.out.println("RightMouseDownEvent fired");
				
			}
		});
		
		employeeTreeGrid.addCellClickHandler(new CellClickHandler() {
			
			@Override
			public void onCellClick(CellClickEvent event) {
				System.out.println("CellClickEvent fired");
				
			}
		});

		return employeeTreeGrid;

	}

	public static class EmployeeTreeNode extends TreeNode {
		public EmployeeTreeNode(String employeeId, String reportsTo, String name) {
			setAttribute("EmployeeId", employeeId);
			setAttribute("ReportsTo", reportsTo);
			setAttribute("Name", name);
		}
	}

	public static final TreeNode[] employeeData = new TreeNode[] {
			new EmployeeTreeNode("4", "1", "Charles Madigen"),
			new EmployeeTreeNode("189", "4", "Gene Porter"),
			new EmployeeTreeNode("265", "189", "Olivier Doucet"),
			new EmployeeTreeNode("264", "189", "Cheryl Pearson"),
			new EmployeeTreeNode("188", "4", "Rogine Leger") };

}
