litesoft
@ 948
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.GWT.client.widgets.datatables; import com.google.gwt.event.dom.client.*; import com.google.gwt.gen2.table.client.*; import com.google.gwt.user.client.*; import java.util.*; public interface TableHelper { public abstract static class GridHelper { private final HTMLTable mGrid; public GridHelper( HTMLTable pGrid ) { mGrid = pGrid; } public int getRowForEvent( Event pEvent ) { Element targetCell = mGrid.getEventTargetCell( pEvent ); return (targetCell != null) ? getRowIndex( DOM.getParent( targetCell ) ) : -1; } public Cell getCellForEvent( Event pEvent ) { Element targetCell = mGrid.getEventTargetCell( pEvent ); if ( targetCell != null ) { Element targetRow = DOM.getParent( targetCell ); int row = getRowIndex( targetRow ); int col = getCellIndex( targetRow, targetCell ); if ( col != -1 ) { return new Cell( row, col ); } } return null; } protected abstract int getRowIndex( Element pRowElement ); protected abstract int getCellIndex( Element pRowElement, Element pCellElement ); } public static abstract class GridClickHandler<RowType> implements ClickHandler { private final List<ColumnDefinition<RowType, ?>> mColDefs; private final GridHelper mGridHelper; private final int mFirstRowOffset; public GridClickHandler( int pFirstRowOffset, GridHelper pGridHelper, List<ColumnDefinition<RowType, ?>> pColDefs ) { mFirstRowOffset = pFirstRowOffset; mGridHelper = pGridHelper; mColDefs = pColDefs; } @SuppressWarnings("unchecked") public void onClick( ClickEvent pEvent ) { Cell cell = mGridHelper.getCellForEvent( Event.as( pEvent.getNativeEvent() ) ); if ( cell != null ) { ColumnDefinition<RowType, ?> colDef = mColDefs.get( cell.getCol() ); ClickHandlerProperty zProperty = colDef.getColumnProperty( ClickHandlerProperty.TYPE ); if ( zProperty != null ) { CellClickHandler<?> clickHandler = zProperty.getValue(); if ( clickHandler != null ) { int rowIndex = cell.getRow() - mFirstRowOffset; // Mat, I updated this to remove the overhead on the Accordion table if ( rowIndex >= 0 ) { RowType rowValue = getRowValue( rowIndex ); ((CellClickHandler<RowType>) clickHandler).execute( colDef, rowIndex, rowValue ); } } } pEvent.stopPropagation(); } } protected abstract RowType getRowValue( int pRow ); } public static class Cell { private final int mRow; private final int mCol; public Cell( int pRow, int pCol ) { mRow = pRow; mCol = pCol; } public int getRow() { return mRow; } public int getCol() { return mCol; } } } |
Commits for litesoft/trunk/Java/GWT/Client/src/org/litesoft/GWT/client/widgets/datatables/TableHelper.java
Revision | Author | Commited | Message |
---|---|---|---|
948 Diff | GeorgeS | Sat 07 Jun, 2014 23:42:39 +0000 | Jusefuls Formatter Updated to New Code Format |
947 Diff | GeorgeS | Fri 06 Jun, 2014 23:36:56 +0000 | Correct Spelling of package! |
282 Diff | GeorgeS | Fri 17 Jun, 2011 13:54:39 +0000 | |
151 Diff | GeorgeS | Thu 17 Mar, 2011 04:16:22 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |