litesoft
Diff Revisions
720
vs
735
for /trunk/Java/GWT/Client/src/org/litesoft/GWT/client/pavsupport/internal/PanelPlaceActivityHelper.java
|
@@ -26,6 +26,9 @@ |
26 |
26 |
|
private Activity mPendingActivity; |
27 |
27 |
|
private Place mCurrentPlace = Place.NOWHERE; |
28 |
28 |
|
private Place mPendingAsyncPlace; |
|
29 |
+ |
private PlaceChangeListener.Source mPlaceChangerRequestedPlaceSource; |
|
30 |
+ |
private Place mPlaceChangerRequestedPlace; |
|
31 |
+ |
private PlaceChangeListener mPlaceChangeListener; |
29 |
32 |
|
|
30 |
33 |
|
public PanelPlaceActivityHelper( AcceptsOneWidget pPanel, CommonActivityParam pCommonActivityParam ) |
31 |
34 |
|
{ |
|
@@ -33,6 +36,17 @@ |
33 |
36 |
|
mCommonActivityParam = pCommonActivityParam; |
34 |
37 |
|
} |
35 |
38 |
|
|
|
39 |
+ |
public void add( PlaceChangeListener pPlaceChangeListener ) |
|
40 |
+ |
{ |
|
41 |
+ |
mPlaceChangeListener = pPlaceChangeListener; |
|
42 |
+ |
} |
|
43 |
+ |
|
|
44 |
+ |
public void placeChangeRequested( Place pPlace, PlaceChangeListener.Source pSource ) |
|
45 |
+ |
{ |
|
46 |
+ |
mPlaceChangerRequestedPlace = pPlace; |
|
47 |
+ |
mPlaceChangerRequestedPlaceSource = pSource; |
|
48 |
+ |
} |
|
49 |
+ |
|
36 |
50 |
|
public Place getCurrentPlace() |
37 |
51 |
|
{ |
38 |
52 |
|
return mCurrentPlace; |
|
@@ -87,6 +101,7 @@ |
87 |
101 |
|
{ |
88 |
102 |
|
Set<Throwable> zIssues = new LinkedHashSet<Throwable>(); |
89 |
103 |
|
|
|
104 |
+ |
notifyPlaceChangeListener( pNewPlace ); |
90 |
105 |
|
mCurrentPlace = pNewPlace; |
91 |
106 |
|
|
92 |
107 |
|
Activity zNewActivity = UtilsCommon.deNull( createActivity( zIssues, pSyncFactory, pNewPlace ), NULL_ACTIVITY ); |
|
@@ -107,6 +122,22 @@ |
107 |
122 |
|
} |
108 |
123 |
|
} |
109 |
124 |
|
|
|
125 |
+ |
private void notifyPlaceChangeListener( Place pNewPlace ) |
|
126 |
+ |
{ |
|
127 |
+ |
if ( mPlaceChangeListener != null ) |
|
128 |
+ |
{ |
|
129 |
+ |
if ( (mPlaceChangerRequestedPlaceSource == null) || // |
|
130 |
+ |
((mPlaceChangerRequestedPlaceSource == PlaceChangeListener.Source.Forward) && // |
|
131 |
+ |
!UtilsCommon.areNonArraysEqual( mPlaceChangerRequestedPlace, pNewPlace )) ) |
|
132 |
+ |
{ |
|
133 |
+ |
mPlaceChangerRequestedPlaceSource = PlaceChangeListener.Source.Unexpected; |
|
134 |
+ |
} |
|
135 |
+ |
mPlaceChangeListener.placeChange( mPlaceChangerRequestedPlaceSource, mCurrentPlace, pNewPlace ); |
|
136 |
+ |
} |
|
137 |
+ |
mPlaceChangerRequestedPlaceSource = null; |
|
138 |
+ |
mPlaceChangerRequestedPlace = null; |
|
139 |
+ |
} |
|
140 |
+ |
|
110 |
141 |
|
@SuppressWarnings({"unchecked"}) |
111 |
142 |
|
protected Activity createActivity( Collection<Throwable> pIssues, ActivityFactory.Synchronous pFactory, Place pPlace ) |
112 |
143 |
|
{ |