Subversion Repository Public Repository

litesoft

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

Diff revisions: vs.
  @@ -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 {