Subversion Repository Public Repository

litesoft

Diff Revisions 948 vs 950 for /trunk/Java/GWT/Client/src/org/litesoft/GWT/forms/client/QBE_FormEngine.java

Diff revisions: vs.
  @@ -1,173 +1,173 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.GWT.forms.client;
3 -
4 - import org.litesoft.GWT.client.*;
5 - import org.litesoft.GWT.client.widgets.*;
6 - import org.litesoft.GWT.client.widgets.datatables.*;
7 - import org.litesoft.GWT.forms.client.components.*;
8 - import org.litesoft.bo.*;
9 - import org.litesoft.commonfoundation.typeutils.*;
10 -
11 - import com.google.gwt.user.client.ui.*;
12 -
13 - public class QBE_FormEngine extends FormEngine {
14 - protected UpdateFilterTransformer mFilterTransformer = NormalUpdateFilterTransformer.INSTANCE;
15 - protected BoAccessorFilter mFilter;
16 - protected SearchStateDefaultRequestable mSSDR;
17 - protected SizeableQBEboxedPanel mQBEboxedPanel;
18 -
19 - private Widget mPointerWidget = null;
20 - private Widget mCurrentPointerWidget = null;
21 -
22 - public QBE_FormEngine( WidgetCtrlMap pWidgetCtrlMap, IFormComponent.Listener.Factory pListenerFactory, SizeableQBEboxedPanel pQBEboxedPanel,
23 - BoAccessorFilter pFilter, SearchStateDefaultRequestable pSSDR ) {
24 - super( pWidgetCtrlMap, Mode.Search, pListenerFactory );
25 - mFilter = (pFilter != null) ? pFilter : BoAccessorFilter.NULL;
26 - mSSDR = (pSSDR != null) ? pSSDR : SearchStateDefaultRequestable.NULL;
27 - mQBEboxedPanel = pQBEboxedPanel;
28 - }
29 -
30 - public Widget getPointerWidget() {
31 - return mPointerWidget;
32 - }
33 -
34 - public void setPointerWidget( Widget pPointerWidget ) {
35 - mPointerWidget = pPointerWidget;
36 - }
37 -
38 - @Override
39 - public void setMode( Mode pMode ) {
40 - if ( (pMode != null) && pMode.isEditing() ) {
41 - mFilter.clearCache();
42 - }
43 - super.setMode( pMode );
44 - updateSSDR();
45 - }
46 -
47 - @Override
48 - protected void LLresetComponents( boolean pResetValues ) {
49 - mFilter.suppressRealtimeUpdating();
50 - try {
51 - super.LLresetComponents( pResetValues );
52 - mFilter.clearAllFilterValues();
53 - mFilterTransformer.clearAllFilterValues( mFilter );
54 - if ( !mMode.shouldMonitorSearchFields() ) {
55 - hideQBE();
56 - return;
57 - }
58 - // Assume that a setFocus will update the View appropriately
59 - for ( IFormComponent zComponent : mComponents ) {
60 - if ( isSearchFilter( zComponent ) ) {
61 - updateFilter( zComponent );
62 - }
63 - }
64 - }
65 - finally {
66 - mFilter.releaseRealtimeUpdating();
67 - }
68 - }
69 -
70 - @Override
71 - protected void enterPressedOn( String pName, IFormComponent pComponent, KeyboardKeyModifier pModifiers ) {
72 - if ( !mSSDR.defaultRequested() ) {
73 - super.enterPressedOn( pName, pComponent, pModifiers );
74 - }
75 - }
76 -
77 - @Override
78 - protected void blurOccurredOn( String pName, IFormComponent pComponent ) {
79 - super.blurOccurredOn( pName, pComponent );
80 - }
81 -
82 - @Override
83 - protected void changeOccurredOn( String pName, IFormComponent pComponent, boolean pChanged ) {
84 - super.changeOccurredOn( pName, pComponent, pChanged );
85 - if ( isSearchFilter( pComponent ) ) {
86 - updateFilter( pComponent );
87 - updateView( pComponent );
88 - }
89 - }
90 -
91 - protected void updateFilter( IFormComponent pComponent ) {
92 - String zName = getComponentName( pComponent );
93 - if ( zName != null ) {
94 - Object zValue = getNamedComponentValue( zName );
95 - String zValStr = (zValue != null) ? Strings.noEmpty( zValue.toString() ) : null;
96 - updateFilter( zName, zValStr );
97 - }
98 - }
99 -
100 - protected void updateFilter( String pName, String pValStr ) {
101 - mFilterTransformer.updateFilter( mFilter, mWidgetCtrlMap.get( pName ).getFilterType(), pName, pValStr );
102 - }
103 -
104 - public UpdateFilterTransformer getFilterTransformer() {
105 - return mFilterTransformer;
106 - }
107 -
108 - public void setFilterTransformer( UpdateFilterTransformer pFilterTransformer ) {
109 - mFilterTransformer = (pFilterTransformer != null) ? pFilterTransformer : NormalUpdateFilterTransformer.INSTANCE;
110 - }
111 -
112 - private boolean isSearchFilter( IFormComponent pComponent ) {
113 - return mMode.isSearchFilter( mListeners.get( pComponent ) );
114 - }
115 -
116 - @Override
117 - protected void focusOccuredOn( String pName, IFormComponent pComponent ) {
118 - super.focusOccuredOn( pName, pComponent );
119 - updateView( pComponent );
120 - }
121 -
122 - private void updateView( IFormComponent pComponent ) {
123 - if ( mMode.shouldMonitorSearchFields() ) {
124 - if ( mPointerWidget != null ) {
125 - pointTo( mPointerWidget );
126 - return;
127 - }
128 - if ( isSearchFilter( pComponent ) ) {
129 - pointTo( (Widget) pComponent );
130 - return;
131 - }
132 - }
133 - hideQBE();
134 - }
135 -
136 - public Widget getCurrentPointerWidget() {
137 - return mCurrentPointerWidget;
138 - }
139 -
140 - public void done() {
141 - hideQBE();
142 - }
143 -
144 - private void hideQBE() {
145 - mQBEboxedPanel.show( false );
146 - mFilter.showResults( false );
147 - mSSDR.setSearching( false );
148 - }
149 -
150 - protected void pointTo( Widget pWidget ) // also: showQBE
151 - {
152 - mQBEboxedPanel.pointTo( mCurrentPointerWidget = pWidget );
153 - mFilter.showResults( true );
154 - updateSSDR();
155 - }
156 -
157 - protected void updateSSDR() {
158 - mSSDR.setSearching( Mode.Search.equals( mMode ) );
159 - }
160 -
161 - private static class NormalUpdateFilterTransformer implements UpdateFilterTransformer {
162 - public static UpdateFilterTransformer INSTANCE = new NormalUpdateFilterTransformer();
163 -
164 - @Override
165 - public void clearAllFilterValues( BoAccessorFilter pFilter ) {
166 - }
167 -
168 - @Override
169 - public void updateFilter( BoAccessorFilter pFilter, BoAccessorFilterType pFilterType, String pAttributeName, String pValue ) {
170 - pFilter.filterValueChanged( pFilterType, pAttributeName, pValue );
171 - }
172 - }
173 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.GWT.forms.client;
3 +
4 + import org.litesoft.GWT.client.*;
5 + import org.litesoft.GWT.client.widgets.*;
6 + import org.litesoft.GWT.client.widgets.datatables.*;
7 + import org.litesoft.GWT.forms.client.components.*;
8 + import org.litesoft.bo.*;
9 + import org.litesoft.commonfoundation.base.*;
10 +
11 + import com.google.gwt.user.client.ui.*;
12 +
13 + public class QBE_FormEngine extends FormEngine {
14 + protected UpdateFilterTransformer mFilterTransformer = NormalUpdateFilterTransformer.INSTANCE;
15 + protected BoAccessorFilter mFilter;
16 + protected SearchStateDefaultRequestable mSSDR;
17 + protected SizeableQBEboxedPanel mQBEboxedPanel;
18 +
19 + private Widget mPointerWidget = null;
20 + private Widget mCurrentPointerWidget = null;
21 +
22 + public QBE_FormEngine( WidgetCtrlMap pWidgetCtrlMap, IFormComponent.Listener.Factory pListenerFactory, SizeableQBEboxedPanel pQBEboxedPanel,
23 + BoAccessorFilter pFilter, SearchStateDefaultRequestable pSSDR ) {
24 + super( pWidgetCtrlMap, Mode.Search, pListenerFactory );
25 + mFilter = (pFilter != null) ? pFilter : BoAccessorFilter.NULL;
26 + mSSDR = (pSSDR != null) ? pSSDR : SearchStateDefaultRequestable.NULL;
27 + mQBEboxedPanel = pQBEboxedPanel;
28 + }
29 +
30 + public Widget getPointerWidget() {
31 + return mPointerWidget;
32 + }
33 +
34 + public void setPointerWidget( Widget pPointerWidget ) {
35 + mPointerWidget = pPointerWidget;
36 + }
37 +
38 + @Override
39 + public void setMode( Mode pMode ) {
40 + if ( (pMode != null) && pMode.isEditing() ) {
41 + mFilter.clearCache();
42 + }
43 + super.setMode( pMode );
44 + updateSSDR();
45 + }
46 +
47 + @Override
48 + protected void LLresetComponents( boolean pResetValues ) {
49 + mFilter.suppressRealtimeUpdating();
50 + try {
51 + super.LLresetComponents( pResetValues );
52 + mFilter.clearAllFilterValues();
53 + mFilterTransformer.clearAllFilterValues( mFilter );
54 + if ( !mMode.shouldMonitorSearchFields() ) {
55 + hideQBE();
56 + return;
57 + }
58 + // Assume that a setFocus will update the View appropriately
59 + for ( IFormComponent zComponent : mComponents ) {
60 + if ( isSearchFilter( zComponent ) ) {
61 + updateFilter( zComponent );
62 + }
63 + }
64 + }
65 + finally {
66 + mFilter.releaseRealtimeUpdating();
67 + }
68 + }
69 +
70 + @Override
71 + protected void enterPressedOn( String pName, IFormComponent pComponent, KeyboardKeyModifier pModifiers ) {
72 + if ( !mSSDR.defaultRequested() ) {
73 + super.enterPressedOn( pName, pComponent, pModifiers );
74 + }
75 + }
76 +
77 + @Override
78 + protected void blurOccurredOn( String pName, IFormComponent pComponent ) {
79 + super.blurOccurredOn( pName, pComponent );
80 + }
81 +
82 + @Override
83 + protected void changeOccurredOn( String pName, IFormComponent pComponent, boolean pChanged ) {
84 + super.changeOccurredOn( pName, pComponent, pChanged );
85 + if ( isSearchFilter( pComponent ) ) {
86 + updateFilter( pComponent );
87 + updateView( pComponent );
88 + }
89 + }
90 +
91 + protected void updateFilter( IFormComponent pComponent ) {
92 + String zName = getComponentName( pComponent );
93 + if ( zName != null ) {
94 + Object zValue = getNamedComponentValue( zName );
95 + String zValStr = (zValue != null) ? ConstrainTo.significantOrNull( zValue.toString() ) : null;
96 + updateFilter( zName, zValStr );
97 + }
98 + }
99 +
100 + protected void updateFilter( String pName, String pValStr ) {
101 + mFilterTransformer.updateFilter( mFilter, mWidgetCtrlMap.get( pName ).getFilterType(), pName, pValStr );
102 + }
103 +
104 + public UpdateFilterTransformer getFilterTransformer() {
105 + return mFilterTransformer;
106 + }
107 +
108 + public void setFilterTransformer( UpdateFilterTransformer pFilterTransformer ) {
109 + mFilterTransformer = (pFilterTransformer != null) ? pFilterTransformer : NormalUpdateFilterTransformer.INSTANCE;
110 + }
111 +
112 + private boolean isSearchFilter( IFormComponent pComponent ) {
113 + return mMode.isSearchFilter( mListeners.get( pComponent ) );
114 + }
115 +
116 + @Override
117 + protected void focusOccuredOn( String pName, IFormComponent pComponent ) {
118 + super.focusOccuredOn( pName, pComponent );
119 + updateView( pComponent );
120 + }
121 +
122 + private void updateView( IFormComponent pComponent ) {
123 + if ( mMode.shouldMonitorSearchFields() ) {
124 + if ( mPointerWidget != null ) {
125 + pointTo( mPointerWidget );
126 + return;
127 + }
128 + if ( isSearchFilter( pComponent ) ) {
129 + pointTo( (Widget) pComponent );
130 + return;
131 + }
132 + }
133 + hideQBE();
134 + }
135 +
136 + public Widget getCurrentPointerWidget() {
137 + return mCurrentPointerWidget;
138 + }
139 +
140 + public void done() {
141 + hideQBE();
142 + }
143 +
144 + private void hideQBE() {
145 + mQBEboxedPanel.show( false );
146 + mFilter.showResults( false );
147 + mSSDR.setSearching( false );
148 + }
149 +
150 + protected void pointTo( Widget pWidget ) // also: showQBE
151 + {
152 + mQBEboxedPanel.pointTo( mCurrentPointerWidget = pWidget );
153 + mFilter.showResults( true );
154 + updateSSDR();
155 + }
156 +
157 + protected void updateSSDR() {
158 + mSSDR.setSearching( Mode.Search.equals( mMode ) );
159 + }
160 +
161 + private static class NormalUpdateFilterTransformer implements UpdateFilterTransformer {
162 + public static UpdateFilterTransformer INSTANCE = new NormalUpdateFilterTransformer();
163 +
164 + @Override
165 + public void clearAllFilterValues( BoAccessorFilter pFilter ) {
166 + }
167 +
168 + @Override
169 + public void updateFilter( BoAccessorFilter pFilter, BoAccessorFilterType pFilterType, String pAttributeName, String pValue ) {
170 + pFilter.filterValueChanged( pFilterType, pAttributeName, pValue );
171 + }
172 + }
173 + }