/******************************************************************************* * Copyright (c) 2012 Dmitry Tikhomirov. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Dmitry Tikhomirov - initial API and implementation ******************************************************************************/ package org.opensheet.client.utils; import com.extjs.gxt.ui.client.data.ModelData; import com.extjs.gxt.ui.client.event.ComponentEvent; import com.extjs.gxt.ui.client.event.GridEvent; import com.extjs.gxt.ui.client.widget.grid.CellSelectionModel; import com.extjs.gxt.ui.client.widget.grid.ColumnHeader; import com.extjs.gxt.ui.client.widget.menu.Menu; import com.extjs.gxt.ui.client.widget.treegrid.TreeGridView; /** * @author Vadim_Kolesnikov */ public class MyTreeGridView extends TreeGridView { private int headsOffset = 0; public int getHeadsOffset() { return headsOffset; } public void setHeadsOffset(int headsOffset) { this.headsOffset = headsOffset; } @Override protected ColumnHeader newColumnHeader() { header = new ColumnHeader(grid, cm) { @SuppressWarnings("unchecked") @Override protected ComponentEvent createColumnEvent(ColumnHeader header, int column, Menu menu) { GridEvent<ModelData> event = (GridEvent<ModelData>) MyTreeGridView.this.createComponentEvent(null); event.setColIndex(column); event.setMenu(menu); return event; } @Override protected Menu getContextMenu(int column) { return createContextMenu(column); } @Override protected void onColumnSplitterMoved(int colIndex, int width) { super.onColumnSplitterMoved(colIndex, width); MyTreeGridView.this.onColumnSplitterMoved(colIndex, width); } @Override protected void onHeaderClick(ComponentEvent ce, int column) { super.onHeaderClick(ce, column); MyTreeGridView.this.onHeaderClick(grid, column); } @Override protected void onKeyDown(ComponentEvent ce, int index) { ce.cancelBubble(); if (grid.getSelectionModel() instanceof CellSelectionModel<?>) { CellSelectionModel<?> csm = (CellSelectionModel<?>) grid.getSelectionModel(); csm.selectCell(0, index); } else { grid.getSelectionModel().select(0, false); } } @Override // was need override this method. public void updateTotalWidth(int offset, int width) { if (offset != -1) { table.getElement().getParentElement().getStyle().setPropertyPx("width", ++offset); } width += headsOffset; // in some tables headsOffset == cm.getColumnCount(); table.getElement().getStyle().setProperty("width", (width) + "px"); } }; header.setSplitterWidth(splitterWidth); header.setMinColumnWidth(grid.getMinColumnWidth()); return header; } }