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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.GWT.client.widgets.datatables; import java.util.*; class DetailRowModelImpl<RowType> implements DetailRowModel<RowType> { private DetailRowAlignment mAlign = DetailRowAlignment.Top; private int mIndex = -1; private RowType mItem = null; private DetailRowCallback<RowType> mCallback = null; public DetailRowCallback<RowType> getCallback() { return mCallback; } public void setCallback( DetailRowCallback<RowType> pCallback ) { mCallback = pCallback; } @Override public int getDetailRow() { return mIndex; } public RowType getDetailItem() { return mItem; } @Override public DetailRowAlignment getAlign() { return mAlign; } @Override public boolean isDetailRow( int pIndex ) { return mIndex == pIndex; } public boolean isDetailRow( RowType pItem ) { return mItem == pItem; } private boolean canShowDetailFor( int index, RowType pItem ) { return (mCallback == null) || mCallback.canShowDetailFor( index, pItem ); } /** * @return true if changed */ public boolean maybeSetDetailRow( int pIndex, RowType pItem ) { if ( mIndex != pIndex && canShowDetailFor( pIndex, pItem ) ) { setDetailRow( pIndex, pItem ); return true; } return false; } private void setDetailRow( int pIndex, RowType pItem ) { assert pIndex >= 0; assert pItem != null; if ( mIndex != pIndex && canShowDetailFor( pIndex, pItem ) ) { int oldIndex = mIndex; mIndex = pIndex; mItem = pItem; mAlign = (oldIndex == -1 || pIndex < oldIndex) ? DetailRowAlignment.Top : DetailRowAlignment.Bottom; } } private void clearDetailRow() { mIndex = -1; mItem = null; } /** * @return true if changed */ public boolean update( List<RowType> pRowValues, int pOffset, int pCount ) { assert pOffset + pCount <= pRowValues.size() : "size=" + pRowValues.size() + ",offset=" + pOffset + ",count=" + pCount; if ( mIndex >= 0 && mIndex < pCount && canShowDetailFor( mIndex, mItem ) ) { return false; } int candidateIndex = mIndex; if ( candidateIndex > pCount ) { candidateIndex = pCount; } for ( int i = candidateIndex + 1; i < pCount; i++ ) { RowType candidate = pRowValues.get( i + pOffset ); if ( canShowDetailFor( i, candidate ) ) { setDetailRow( i, candidate ); return true; } } for ( int i = candidateIndex - 1; i >= 0; i-- ) { RowType candidate = pRowValues.get( i + pOffset ); if ( canShowDetailFor( i, candidate ) ) { setDetailRow( i, candidate ); return true; } } if ( mIndex != -1 ) { clearDetailRow(); return true; } else { return false; } } } |
Commits for litesoft/trunk/Java/GWT/Client/src/org/litesoft/GWT/client/widgets/datatables/DetailRowModelImpl.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! |
151 Diff | GeorgeS | Thu 17 Mar, 2011 04:16:22 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
23 Diff | GeorgeS | Wed 24 Feb, 2010 00:34:32 +0000 | |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |