/*
* 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.widget.treegrid;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.event.GridEvent;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
@SuppressWarnings("unchecked")
public class TreeGridSelectionModel<M extends ModelData> extends GridSelectionModel<M> {
protected TreeGrid tree;
protected TreeStore<M> treeStore;
@Override
public void bindGrid(Grid grid) {
tree = null;
treeStore = null;
super.bindGrid(grid);
if (grid != null) {
tree = (TreeGrid) grid;
treeStore = tree.getTreeStore();
}
}
@Override
protected void handleMouseDown(GridEvent<M> e) {
if (!tree.getTreeView().isSelectableTarget(e.getModel(), e.getTarget())) {
return;
}
super.handleMouseDown(e);
}
@Override
protected void handleMouseClick(GridEvent<M> e) {
if (!tree.getTreeView().isSelectableTarget(e.getModel(), e.getTarget())) {
return;
}
super.handleMouseClick(e);
}
@Override
protected void onKeyLeft(GridEvent<M> ce) {
ce.preventDefault();
if (!tree.isLeaf(lastSelected) && tree.isExpanded(lastSelected)) {
tree.setExpanded(lastSelected, false);
}
}
@Override
protected void onKeyRight(GridEvent<M> ce) {
ce.preventDefault();
if (!tree.isLeaf(lastSelected) && !tree.isExpanded(lastSelected)) {
tree.setExpanded(lastSelected, true);
}
}
}