/*
* Ext GWT - Ext for GWT
* Copyright(c) 2007-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.ui.client.event;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel;
import com.extjs.gxt.ui.client.widget.treepanel.TreePanel.TreeNode;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
/**
* <code>TreePanel</code> event type.
*
* @param <M> the model type contained in the tree
*/
@SuppressWarnings("unchecked")
public class TreePanelEvent<M extends ModelData> extends BoxComponentEvent {
private M parent;
private M child;
private M item;
private TreeStore<M> store;
private TreeNode node;
private TreePanel<M> treePanel;
private boolean checked;
public TreePanelEvent(TreePanel tree) {
super(tree);
this.treePanel = tree;
}
public TreePanelEvent(TreePanel tree, Event event) {
super(tree, event);
this.treePanel = tree;
}
public TreePanelEvent(TreePanel tree, M item) {
this(tree);
setItem(item);
}
public ModelData getChild() {
return child;
}
public ModelData getItem() {
if (item == null) {
if (getNode() != null) {
item = (M) getNode().getModel();
}
}
return item;
}
public TreeNode getNode() {
if (node == null) {
TreeNode n = treePanel.findNode((Element) event.getEventTarget().cast());
if (n != null) {
node = n;
}
}
return node;
}
public ModelData getParent() {
return parent;
}
public TreeStore getStore() {
return store;
}
public TreePanel<M> getTreePanel() {
return treePanel;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public void setChild(M child) {
this.child = child;
}
public void setItem(M item) {
this.item = item;
}
public void setNode(TreeNode node) {
this.node = node;
}
public void setParent(M parent) {
this.parent = parent;
}
public void setStore(TreeStore store) {
this.store = store;
}
public void setTreePanel(TreePanel<M> treePanel) {
this.treePanel = treePanel;
}
}