litesoft
@ 950
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 |
package org.litesoft.GWT.forms.client; import org.litesoft.bo.*; import org.litesoft.commonfoundation.base.*; import org.litesoft.commonfoundation.typeutils.*; public class ShowBooleanUpdateFilterTransformer implements UpdateFilterTransformer { private UpdateFilterTransformer mDelegate; private String mCtrlAttributeName, mShowBooleanAttributeName; private String mCtrlValueShowTrue, mCtrlValueShowFalse; private boolean mExternalSetCtrlValue; private String mLastInternallySetCtrlValue; private boolean mCurrentShowValue = false; @Override public void clearAllFilterValues( BoAccessorFilter pFilter ) { mExternalSetCtrlValue = mCurrentShowValue = false; mLastInternallySetCtrlValue = null; mDelegate.clearAllFilterValues( pFilter ); } private void updateCtrlValue( BoAccessorFilter pFilter, String pValue ) { mDelegate.updateFilter( pFilter, BoAccessorFilterType.Always, mCtrlAttributeName, pValue ); } private void manageCtrlValue( BoAccessorFilter pFilter ) { if ( !mExternalSetCtrlValue ) { int zCurrentCount = pFilter.activeFilters(); if ( zCurrentCount == 0 ) // We never add as the only value { return; } if ( (zCurrentCount == 1) && (mLastInternallySetCtrlValue != null) ) // Only 1 & it is the Ctrl Value { updateCtrlValue( pFilter, mLastInternallySetCtrlValue = null ); return; } // Either more than 1 or 1 is NOT the Ctrl Value String zNewInternallySetCtrlValue = mCurrentShowValue ? mCtrlValueShowTrue : mCtrlValueShowFalse; if ( !Currently.areEqual( mLastInternallySetCtrlValue, zNewInternallySetCtrlValue ) ) { updateCtrlValue( pFilter, mLastInternallySetCtrlValue = zNewInternallySetCtrlValue ); } } } private void updateShowAttributeFilter( BoAccessorFilter pFilter, boolean pValue ) { mCurrentShowValue = pValue; manageCtrlValue( pFilter ); } private void updateCtrlAttributeFilter( BoAccessorFilter pFilter, String pValue ) { mExternalSetCtrlValue = (pValue != null); // Either Removing or Setting ctrl value externally updateCtrlValue( pFilter, pValue ); manageCtrlValue( pFilter ); } private void updateOtherAttributeFilter( BoAccessorFilter pFilter, BoAccessorFilterType pFilterType, String pAttributeName, String pValue ) { mDelegate.updateFilter( pFilter, pFilterType, pAttributeName, pValue ); manageCtrlValue( pFilter ); } /** * Transform Update Filter requests to map a boolean "show attribute" into two states of the "ctrl attribute" w/ the added behavior that the "ctrl * attribute" is never the only thing set! * * @param pDelegate - pass the real/final updates to this * @param pShowBooleanAttributeName - name of the boolean "show attribute" * @param pCtrlAttributeName - name of the "ctrl attribute" * @param pCtrlValueShowTrue - value to set the "ctrl attribute" to when the boolean "show attribute" is "false" * @param pCtrlValueShowFalse - value to set the "ctrl attribute" to when the boolean "show attribute" is "true" */ public ShowBooleanUpdateFilterTransformer( UpdateFilterTransformer pDelegate, String pShowBooleanAttributeName, String pCtrlAttributeName, Object pCtrlValueShowTrue, Object pCtrlValueShowFalse ) { mDelegate = Confirm.isNotNull( "Delegate", pDelegate ); mCtrlAttributeName = Confirm.significant( "CtrlAttributeName", pCtrlAttributeName ); mShowBooleanAttributeName = Confirm.significant( "ShowBooleanAttributeName", pShowBooleanAttributeName ); mCtrlValueShowTrue = Objects.toString( pCtrlValueShowTrue ); mCtrlValueShowFalse = Objects.toString( pCtrlValueShowFalse ); } @Override public void updateFilter( BoAccessorFilter pFilter, BoAccessorFilterType pFilterType, String pAttributeName, String pValue ) { // System.out.println( "*** " + pAttributeName + " -> " + pValue ); pFilter.suppressRealtimeUpdating(); try { pValue = ConstrainTo.significantOrNull( pValue ); if ( mCtrlAttributeName.equals( pAttributeName ) ) { if ( BoAccessorFilterType.Always != pFilterType ) { throw new IllegalStateException( mCtrlAttributeName + " CTRL Attribute MUST be an Always Attribute!" ); } updateCtrlAttributeFilter( pFilter, pValue ); } else if ( mShowBooleanAttributeName.equals( pAttributeName ) ) { updateShowAttributeFilter( pFilter, Boolean.TRUE == Booleans.fromString( pValue ) ); } else { updateOtherAttributeFilter( pFilter, pFilterType, pAttributeName, pValue ); } } finally { pFilter.releaseRealtimeUpdating(); } } } |
Commits for litesoft/trunk/Java/GWT/Client/src/org/litesoft/GWT/forms/client/ShowBooleanUpdateFilterTransformer.java
Revision | Author | Commited | Message |
---|---|---|---|
950 Diff | GeorgeS | Thu 19 Jun, 2014 17:57:04 +0000 | New Lines |
948 Diff | GeorgeS | Sat 07 Jun, 2014 23:42:39 +0000 | Jusefuls Formatter Updated to New Code Format |
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
822 Diff | GeorgeS | Sun 19 Aug, 2012 01:03:51 +0000 | |
821 Diff | GeorgeS | Sun 19 Aug, 2012 00:08:41 +0000 | |
819 Diff | GeorgeS | Sat 18 Aug, 2012 18:09:40 +0000 | |
804 Diff | GeorgeS | Wed 15 Aug, 2012 12:48:51 +0000 | |
801 Diff | GeorgeS | Wed 15 Aug, 2012 03:59:02 +0000 | |
222 Diff | GeorgeS | Fri 20 May, 2011 18:04:31 +0000 | |
221 | GeorgeS | Fri 20 May, 2011 16:39:20 +0000 |