Subversion Repository Public Repository

litesoft

Diff Revisions 947 vs 948 for /trunk/Java/GWT/Client/src/org/litesoft/GWT/client/pavsupport/internal/PanelPlaceActivityHelper.java

Diff revisions: vs.
  @@ -1,36 +1,31 @@
1 1 package org.litesoft.GWT.client.pavsupport.internal;
2 2
3 + import org.litesoft.GWT.client.pavsupport.*;
4 + import org.litesoft.commonfoundation.typeutils.Objects;
5 +
3 6 import com.google.gwt.event.shared.*;
4 7 import com.google.gwt.place.shared.*;
5 8 import com.google.gwt.user.client.ui.*;
6 - import org.litesoft.GWT.client.pavsupport.*;
7 - import org.litesoft.commonfoundation.typeutils.Objects;
8 9
9 10 import java.util.*;
10 11
11 - public class PanelPlaceActivityHelper<CommonActivityParam extends CommonActivityParameter> extends ActivityFactoryRegistry
12 - {
13 - private static final Activity NULL_ACTIVITY = new Activity()
14 - {
12 + public class PanelPlaceActivityHelper<CommonActivityParam extends CommonActivityParameter> extends ActivityFactoryRegistry {
13 + private static final Activity NULL_ACTIVITY = new Activity() {
15 14 @Override
16 - public String mayStop()
17 - {
15 + public String mayStop() {
18 16 return null;
19 17 }
20 18
21 19 @Override
22 - public void onCancel()
23 - {
20 + public void onCancel() {
24 21 }
25 22
26 23 @Override
27 - public void onStop()
28 - {
24 + public void onStop() {
29 25 }
30 26
31 27 @Override
32 - public void start( AcceptsOneWidget panel )
33 - {
28 + public void start( AcceptsOneWidget panel ) {
34 29 panel.setWidget( new Label( "!" ) );
35 30 }
36 31 };
  @@ -45,64 +40,51 @@
45 40 private Place mPlaceChangerRequestedPlace;
46 41 private PlaceChangeListener mPlaceChangeListener;
47 42
48 - public PanelPlaceActivityHelper( AcceptsOneWidget pPanel, CommonActivityParam pCommonActivityParam )
49 - {
43 + public PanelPlaceActivityHelper( AcceptsOneWidget pPanel, CommonActivityParam pCommonActivityParam ) {
50 44 mPanel = pPanel;
51 45 mCommonActivityParam = pCommonActivityParam;
52 46 }
53 47
54 - public void add( PlaceChangeListener pPlaceChangeListener )
55 - {
48 + public void add( PlaceChangeListener pPlaceChangeListener ) {
56 49 mPlaceChangeListener = pPlaceChangeListener;
57 50 }
58 51
59 - public void placeChangeRequested( Place pPlace, PlaceChangeListener.Source pSource )
60 - {
52 + public void placeChangeRequested( Place pPlace, PlaceChangeListener.Source pSource ) {
61 53 mPlaceChangerRequestedPlace = pPlace;
62 54 mPlaceChangerRequestedPlaceSource = pSource;
63 55 }
64 56
65 - public Place getCurrentPlace()
66 - {
57 + public Place getCurrentPlace() {
67 58 return mCurrentPlace;
68 59 }
69 60
70 - public boolean isPendingAsync( Place pPlace )
71 - {
61 + public boolean isPendingAsync( Place pPlace ) {
72 62 return pPlace.equals( mPendingAsyncPlace );
73 63 }
74 64
75 - public void clearPendingAsync()
76 - {
65 + public void clearPendingAsync() {
77 66 mPendingAsyncPlace = null;
78 67 }
79 68
80 - public ActivityFactory get( Place pPlace )
81 - {
69 + public ActivityFactory get( Place pPlace ) {
82 70 return get( PlaceIdExtractor.getPlaceId( pPlace ) );
83 71 }
84 72
85 - public String getCurrentActivityMayStop()
86 - {
73 + public String getCurrentActivityMayStop() {
87 74 return mCurrentActivity.mayStop();
88 75 }
89 76
90 - public boolean activate( Place pNewPlace )
91 - {
92 - if ( !isPendingAsync( pNewPlace ) )
93 - {
77 + public boolean activate( Place pNewPlace ) {
78 + if ( !isPendingAsync( pNewPlace ) ) {
94 79 mPendingAsyncPlace = null;
95 80 ActivityFactory zFactory = get( pNewPlace );
96 - if ( zFactory == null )
97 - {
81 + if ( zFactory == null ) {
98 82 return false;
99 83 }
100 84 if ( zFactory instanceof ActivityFactory.Asynchronous ) // Un-Happy Case!
101 85 {
102 86 loadSyncFactory( (ActivityFactory.Asynchronous) zFactory, mPendingAsyncPlace = pNewPlace );
103 - }
104 - else
105 - {
87 + } else {
106 88 activate( pNewPlace, (ActivityFactory.Synchronous) zFactory );
107 89 }
108 90 }
  @@ -112,8 +94,7 @@
112 94 /**
113 95 * Activate the New Place and it's associated Activity (deactivating the current activity.
114 96 */
115 - public void activate( Place pNewPlace, ActivityFactory.Synchronous pSyncFactory )
116 - {
97 + public void activate( Place pNewPlace, ActivityFactory.Synchronous pSyncFactory ) {
117 98 Set<Throwable> zIssues = new LinkedHashSet<Throwable>();
118 99
119 100 notifyPlaceChangeListener( pNewPlace );
  @@ -131,20 +112,16 @@
131 112 // which handles the Pending Activity becoming the Current Activity.
132 113 AcceptsOneWidget zPanel = new ProtectedDisplay( zIssues, mPendingActivity );
133 114
134 - if ( !canStart( zIssues, mPendingActivity, zPanel ) )
135 - {
115 + if ( !canStart( zIssues, mPendingActivity, zPanel ) ) {
136 116 NULL_ACTIVITY.start( new ProtectedDisplay( zIssues, mPendingActivity = NULL_ACTIVITY ) ); // Can NOT fail!
137 117 }
138 118 }
139 119
140 - private void notifyPlaceChangeListener( Place pNewPlace )
141 - {
142 - if ( mPlaceChangeListener != null )
143 - {
120 + private void notifyPlaceChangeListener( Place pNewPlace ) {
121 + if ( mPlaceChangeListener != null ) {
144 122 if ( (mPlaceChangerRequestedPlaceSource == null) || //
145 123 ((mPlaceChangerRequestedPlaceSource == PlaceChangeListener.Source.Forward) && //
146 - !Objects.areNonArraysEqual( mPlaceChangerRequestedPlace, pNewPlace )) )
147 - {
124 + !Objects.areNonArraysEqual( mPlaceChangerRequestedPlace, pNewPlace )) ) {
148 125 mPlaceChangerRequestedPlaceSource = PlaceChangeListener.Source.Unexpected;
149 126 }
150 127 mPlaceChangeListener.placeChange( mPlaceChangerRequestedPlaceSource, mCurrentPlace, pNewPlace );
  @@ -154,63 +131,49 @@
154 131 }
155 132
156 133 @SuppressWarnings({"unchecked"})
157 - protected Activity createActivity( Collection<Throwable> pIssues, ActivityFactory.Synchronous pFactory, Place pPlace )
158 - {
159 - try
160 - {
134 + protected Activity createActivity( Collection<Throwable> pIssues, ActivityFactory.Synchronous pFactory, Place pPlace ) {
135 + try {
161 136 return pFactory.createActivity( mCommonActivityParam, pFactory.getView(), pPlace );
162 137 }
163 - catch ( Exception e )
164 - {
138 + catch ( Exception e ) {
165 139 pIssues.add( e );
166 140 }
167 141 return null;
168 142 }
169 143
170 - private boolean canStart( Set<Throwable> pIssues, Activity pActivity, AcceptsOneWidget pPanel )
171 - {
172 - try
173 - {
144 + private boolean canStart( Set<Throwable> pIssues, Activity pActivity, AcceptsOneWidget pPanel ) {
145 + try {
174 146 pActivity.start( pPanel );
175 147 return true;
176 148 }
177 - catch ( Exception e )
178 - {
149 + catch ( Exception e ) {
179 150 pIssues.add( e );
180 151 }
181 152 return false;
182 153 }
183 154
184 - private void tryCancel( Collection<Throwable> pIssues, Activity pActivity )
185 - {
186 - try
187 - {
155 + private void tryCancel( Collection<Throwable> pIssues, Activity pActivity ) {
156 + try {
188 157 pActivity.onCancel();
189 158 }
190 - catch ( Exception e )
191 - {
159 + catch ( Exception e ) {
192 160 pIssues.add( e );
193 161 }
194 162 }
195 163
196 - private void tryStop( Collection<Throwable> pIssues, Activity pActivity )
197 - {
198 - try
199 - {
164 + private void tryStop( Collection<Throwable> pIssues, Activity pActivity ) {
165 + try {
200 166 pActivity.onStop();
201 167 }
202 - catch ( Exception e )
203 - {
168 + catch ( Exception e ) {
204 169 pIssues.add( e );
205 170 }
206 171 }
207 172
208 - private void possiblyUpdateActivityAndShowWidget( Set<Throwable> pIssues, Activity pActivity, IsWidget pWidget )
209 - {
173 + private void possiblyUpdateActivityAndShowWidget( Set<Throwable> pIssues, Activity pActivity, IsWidget pWidget ) {
210 174 if ( mPendingActivity == null ) // Normal? Happy case when No Pending Activity and request is from Current Activity
211 175 {
212 - if ( pActivity == mCurrentActivity )
213 - {
176 + if ( pActivity == mCurrentActivity ) {
214 177 showWidget( pWidget );
215 178 }
216 179 return;
  @@ -223,40 +186,32 @@
223 186 mCurrentActivity = mPendingActivity;
224 187 mPendingActivity = null;
225 188 showWidget( pWidget );
226 - if ( !pIssues.isEmpty() )
227 - {
189 + if ( !pIssues.isEmpty() ) {
228 190 throw new UmbrellaException( pIssues );
229 191 }
230 192 }
231 193
232 - private void showWidget( IsWidget pWidget )
233 - {
234 - if ( mPanel != null )
235 - {
194 + private void showWidget( IsWidget pWidget ) {
195 + if ( mPanel != null ) {
236 196 mPanel.setWidget( pWidget );
237 197 }
238 198 }
239 199
240 200 @SuppressWarnings({"unchecked"})
241 - private void loadSyncFactory( final ActivityFactory.Asynchronous pAsyncFactory, final Place pPlace )
242 - {
243 - pAsyncFactory.load( mCommonActivityParam, new ActivityFactory.Asynchronous.Callback<CommonActivityParam, IsWidget, Place>()
244 - {
201 + private void loadSyncFactory( final ActivityFactory.Asynchronous pAsyncFactory, final Place pPlace ) {
202 + pAsyncFactory.load( mCommonActivityParam, new ActivityFactory.Asynchronous.Callback<CommonActivityParam, IsWidget, Place>() {
245 203 @Override
246 - public void loaded( ActivityFactory.Synchronous<CommonActivityParam, IsWidget, Place> pSynchronousFactory )
247 - {
204 + public void loaded( ActivityFactory.Synchronous<CommonActivityParam, IsWidget, Place> pSynchronousFactory ) {
248 205 switchAsyncToSync( pPlace, pAsyncFactory, pSynchronousFactory );
249 206 }
250 207 } );
251 208 }
252 209
253 - private void switchAsyncToSync( Place pPlace, ActivityFactory.Asynchronous pAsyncFactory, ActivityFactory.Synchronous pSyncFactory )
254 - {
210 + private void switchAsyncToSync( Place pPlace, ActivityFactory.Asynchronous pAsyncFactory, ActivityFactory.Synchronous pSyncFactory ) {
255 211 System.out.println( "Switched " + Objects.justSimpleName( pPlace ) + " from Async to Sync" );
256 212 boolean zStillGoing = pPlace.equals( mPendingAsyncPlace );
257 213 mPendingAsyncPlace = null;
258 - if ( replace( pAsyncFactory, pSyncFactory ) && zStillGoing )
259 - {
214 + if ( replace( pAsyncFactory, pSyncFactory ) && zStillGoing ) {
260 215 activate( pPlace, pSyncFactory );
261 216 }
262 217 }
  @@ -265,20 +220,17 @@
265 220 * Wraps our real display to prevent an Activity from taking it over if it is
266 221 * not the currentActivity.
267 222 */
268 - private class ProtectedDisplay implements AcceptsOneWidget
269 - {
223 + private class ProtectedDisplay implements AcceptsOneWidget {
270 224 private final Set<Throwable> mIssues;
271 225 private final Activity mExpectedActivity;
272 226
273 - ProtectedDisplay( Set<Throwable> pIssues, Activity pExpectedActivity )
274 - {
227 + ProtectedDisplay( Set<Throwable> pIssues, Activity pExpectedActivity ) {
275 228 mIssues = pIssues;
276 229 mExpectedActivity = pExpectedActivity;
277 230 }
278 231
279 232 @Override
280 - public void setWidget( IsWidget pWidget )
281 - {
233 + public void setWidget( IsWidget pWidget ) {
282 234 possiblyUpdateActivityAndShowWidget( mIssues, mExpectedActivity, pWidget );
283 235 }
284 236 }