|
@@ -6,8 +6,7 @@ |
6 |
6 |
|
|
7 |
7 |
|
import com.google.gwt.user.client.*; |
8 |
8 |
|
|
9 |
|
- |
public class DeferableFloaterDimensionHandler |
10 |
|
- |
{ |
|
9 |
+ |
public class DeferableFloaterDimensionHandler { |
11 |
10 |
|
private AbstractLogger mLogger; |
12 |
11 |
|
private AbstractSizeableWidget mOurWidget; |
13 |
12 |
|
private ISizeableDimensionHelper mDimensionHelper; |
|
@@ -22,66 +21,53 @@ |
22 |
21 |
|
private boolean mPendingMaximizeVisable = false; |
23 |
22 |
|
private int mSetDimensionValue = 0; |
24 |
23 |
|
|
25 |
|
- |
public DeferableFloaterDimensionHandler( AbstractSizeableWidget pOurWidget, AbstractLogger pLogger, ISizeableDimensionHelper pDimensionHelper, FloaterPositionHandler pPositionHandler ) |
26 |
|
- |
{ |
|
24 |
+ |
public DeferableFloaterDimensionHandler( AbstractSizeableWidget pOurWidget, AbstractLogger pLogger, ISizeableDimensionHelper pDimensionHelper, |
|
25 |
+ |
FloaterPositionHandler pPositionHandler ) { |
27 |
26 |
|
mLogger = pLogger; |
28 |
27 |
|
mOurWidget = pOurWidget; |
29 |
28 |
|
mDimensionHelper = pDimensionHelper; |
30 |
29 |
|
mPositionHandler = pPositionHandler; |
31 |
30 |
|
} |
32 |
31 |
|
|
33 |
|
- |
public boolean isPendingAny() |
34 |
|
- |
{ |
|
32 |
+ |
public boolean isPendingAny() { |
35 |
33 |
|
return mPendingAny; |
36 |
34 |
|
} |
37 |
35 |
|
|
38 |
|
- |
public void initializeDimension() |
39 |
|
- |
{ |
40 |
|
- |
if ( !mMinimumDimensionSet ) |
41 |
|
- |
{ |
|
36 |
+ |
public void initializeDimension() { |
|
37 |
+ |
if ( !mMinimumDimensionSet ) { |
42 |
38 |
|
reinitializeDimension(); |
43 |
39 |
|
} |
44 |
40 |
|
} |
45 |
41 |
|
|
46 |
|
- |
public void setDimension( String pDimension ) |
47 |
|
- |
{ |
48 |
|
- |
if ( mLogger != null ) |
49 |
|
- |
{ |
|
42 |
+ |
public void setDimension( String pDimension ) { |
|
43 |
+ |
if ( mLogger != null ) { |
50 |
44 |
|
mLogger.log( mDimensionHelper.getWhat(), "=", pDimension ); |
51 |
45 |
|
} |
52 |
|
- |
try |
53 |
|
- |
{ |
|
46 |
+ |
try { |
54 |
47 |
|
setDimension( Integer.parseInt( pDimension ) ); |
55 |
48 |
|
} |
56 |
|
- |
catch ( NumberFormatException e ) |
57 |
|
- |
{ |
|
49 |
+ |
catch ( NumberFormatException e ) { |
58 |
50 |
|
// Not a Number? |
59 |
51 |
|
} |
60 |
52 |
|
} |
61 |
53 |
|
|
62 |
|
- |
private boolean setPrefferredDimension() |
63 |
|
- |
{ |
|
54 |
+ |
private boolean setPrefferredDimension() { |
64 |
55 |
|
int zSaved = mSetDimensionValue; |
65 |
56 |
|
mMinimumDimensionSet = mDimensionHelper.setPrefferredDimension(); |
66 |
|
- |
if ( zSaved != 0 ) |
67 |
|
- |
{ |
|
57 |
+ |
if ( zSaved != 0 ) { |
68 |
58 |
|
mSetDimensionValue = zSaved; |
69 |
59 |
|
} |
70 |
60 |
|
return mMinimumDimensionSet; |
71 |
61 |
|
} |
72 |
62 |
|
|
73 |
|
- |
public void reinitializeDimension() |
74 |
|
- |
{ |
|
63 |
+ |
public void reinitializeDimension() { |
75 |
64 |
|
mMinimumDimensionSet = false; |
76 |
|
- |
if ( mPendingAny ) |
77 |
|
- |
{ |
|
65 |
+ |
if ( mPendingAny ) { |
78 |
66 |
|
mPendingReinitialize = true; |
79 |
67 |
|
return; |
80 |
68 |
|
} |
81 |
|
- |
if ( mOurWidget.isSizingWorking() ) |
82 |
|
- |
{ |
83 |
|
- |
if ( setPrefferredDimension() ) |
84 |
|
- |
{ |
|
69 |
+ |
if ( mOurWidget.isSizingWorking() ) { |
|
70 |
+ |
if ( setPrefferredDimension() ) { |
85 |
71 |
|
return; |
86 |
72 |
|
} |
87 |
73 |
|
} |
|
@@ -89,19 +75,15 @@ |
89 |
75 |
|
launchInitialDeferredProcess(); |
90 |
76 |
|
} |
91 |
77 |
|
|
92 |
|
- |
private void setDimension( int pDimension ) |
93 |
|
- |
{ |
|
78 |
+ |
private void setDimension( int pDimension ) { |
94 |
79 |
|
LLsetDimension( pDimension ); |
95 |
80 |
|
initializeDimension(); |
96 |
|
- |
if ( mPendingAny ) |
97 |
|
- |
{ |
|
81 |
+ |
if ( mPendingAny ) { |
98 |
82 |
|
mPendingSetDimension = true; |
99 |
83 |
|
return; |
100 |
84 |
|
} |
101 |
|
- |
if ( mOurWidget.isSizingWorking() ) |
102 |
|
- |
{ |
103 |
|
- |
if ( setOverallDimension( mSetDimensionValue ) ) |
104 |
|
- |
{ |
|
85 |
+ |
if ( mOurWidget.isSizingWorking() ) { |
|
86 |
+ |
if ( setOverallDimension( mSetDimensionValue ) ) { |
105 |
87 |
|
return; |
106 |
88 |
|
} |
107 |
89 |
|
} |
|
@@ -109,26 +91,21 @@ |
109 |
91 |
|
launchInitialDeferredProcess(); |
110 |
92 |
|
} |
111 |
93 |
|
|
112 |
|
- |
public void LLsetDimension( int pDimension ) |
113 |
|
- |
{ |
|
94 |
+ |
public void LLsetDimension( int pDimension ) { |
114 |
95 |
|
mSetDimensionValue = pDimension; |
115 |
96 |
|
} |
116 |
97 |
|
|
117 |
|
- |
public void relayout() |
118 |
|
- |
{ |
|
98 |
+ |
public void relayout() { |
119 |
99 |
|
initializeDimension(); |
120 |
|
- |
if ( mPendingAny ) |
121 |
|
- |
{ |
|
100 |
+ |
if ( mPendingAny ) { |
122 |
101 |
|
mPendingRelayout = true; |
123 |
102 |
|
return; |
124 |
103 |
|
} |
125 |
|
- |
if ( mOurWidget.isSizingWorking() ) |
126 |
|
- |
{ |
|
104 |
+ |
if ( mOurWidget.isSizingWorking() ) { |
127 |
105 |
|
Element zInnerElement = mOurWidget.getHelper().getInnerElement(); |
128 |
106 |
|
int zCurInnerSize = mDimensionHelper.getDimension( zInnerElement ); |
129 |
107 |
|
int zCurOuterSize = mDimensionHelper.getDimension(); |
130 |
|
- |
if ( (zCurInnerSize != 0) && (zCurOuterSize != 0) && setOverallDimension( zCurOuterSize ) ) |
131 |
|
- |
{ |
|
108 |
+ |
if ( (zCurInnerSize != 0) && (zCurOuterSize != 0) && setOverallDimension( zCurOuterSize ) ) { |
132 |
109 |
|
mDimensionHelper.distributeToChildrenChangedDimension(); |
133 |
110 |
|
return; |
134 |
111 |
|
} |
|
@@ -137,18 +114,14 @@ |
137 |
114 |
|
launchInitialDeferredProcess(); |
138 |
115 |
|
} |
139 |
116 |
|
|
140 |
|
- |
public void maximizeVisibility() |
141 |
|
- |
{ |
|
117 |
+ |
public void maximizeVisibility() { |
142 |
118 |
|
initializeDimension(); |
143 |
|
- |
if ( mPendingAny ) |
144 |
|
- |
{ |
|
119 |
+ |
if ( mPendingAny ) { |
145 |
120 |
|
mPendingMaximizeVisable = true; |
146 |
121 |
|
return; |
147 |
122 |
|
} |
148 |
|
- |
if ( mOurWidget.isSizingWorking() ) |
149 |
|
- |
{ |
150 |
|
- |
if ( LLmaximizeVisibility() ) |
151 |
|
- |
{ |
|
123 |
+ |
if ( mOurWidget.isSizingWorking() ) { |
|
124 |
+ |
if ( LLmaximizeVisibility() ) { |
152 |
125 |
|
return; |
153 |
126 |
|
} |
154 |
127 |
|
} |
|
@@ -156,15 +129,12 @@ |
156 |
129 |
|
launchInitialDeferredProcess(); |
157 |
130 |
|
} |
158 |
131 |
|
|
159 |
|
- |
private boolean LLmaximizeVisibility() |
160 |
|
- |
{ |
|
132 |
+ |
private boolean LLmaximizeVisibility() { |
161 |
133 |
|
int zMaxSize = mPositionHandler.getMaxPotentialSize(); |
162 |
|
- |
if ( (mSetDimensionValue != 0) && (zMaxSize > 1) ) |
163 |
|
- |
{ |
|
134 |
+ |
if ( (mSetDimensionValue != 0) && (zMaxSize > 1) ) { |
164 |
135 |
|
int zPos = mPositionHandler.getPos(); |
165 |
136 |
|
int zSpace = zMaxSize - (zPos + mSetDimensionValue); |
166 |
|
- |
if ( (zPos > 0) && (zSpace < 0) ) |
167 |
|
- |
{ |
|
137 |
+ |
if ( (zPos > 0) && (zSpace < 0) ) { |
168 |
138 |
|
zPos += zSpace; |
169 |
139 |
|
mPositionHandler.setPos( (zPos < 0) ? 0 : zPos ); |
170 |
140 |
|
} |
|
@@ -173,73 +143,58 @@ |
173 |
143 |
|
return false; |
174 |
144 |
|
} |
175 |
145 |
|
|
176 |
|
- |
private boolean setOverallDimension( int pDimension ) |
177 |
|
- |
{ |
|
146 |
+ |
private boolean setOverallDimension( int pDimension ) { |
178 |
147 |
|
int curDimension = mDimensionHelper.getDimension(); |
179 |
|
- |
if ( curDimension <= 0 ) |
180 |
|
- |
{ |
181 |
|
- |
if ( mLogger.isEnabled() ) |
182 |
|
- |
{ |
|
148 |
+ |
if ( curDimension <= 0 ) { |
|
149 |
+ |
if ( mLogger.isEnabled() ) { |
183 |
150 |
|
mLogger.log( mDimensionHelper.getWhat() + " : setOverallDimension from " + curDimension + " **** <= 0" ); |
184 |
151 |
|
} |
185 |
152 |
|
return false; |
186 |
153 |
|
} |
187 |
154 |
|
int zSaved = mSetDimensionValue; |
188 |
155 |
|
boolean rv = mDimensionHelper.adjustSizeBy( pDimension - curDimension ); |
189 |
|
- |
if ( zSaved != 0 ) |
190 |
|
- |
{ |
|
156 |
+ |
if ( zSaved != 0 ) { |
191 |
157 |
|
mSetDimensionValue = zSaved; |
192 |
158 |
|
} |
193 |
|
- |
if ( mLogger.isEnabled() ) |
194 |
|
- |
{ |
|
159 |
+ |
if ( mLogger.isEnabled() ) { |
195 |
160 |
|
mLogger.log( mDimensionHelper.getWhat() + " : setOverallDimension from " + curDimension + " to " + pDimension + " set? " + rv ); |
196 |
161 |
|
} |
197 |
162 |
|
return rv; |
198 |
163 |
|
} |
199 |
164 |
|
|
200 |
|
- |
private void launchInitialDeferredProcess() |
201 |
|
- |
{ |
|
165 |
+ |
private void launchInitialDeferredProcess() { |
202 |
166 |
|
new EscalatingProcess( new MyDelayedProcess() ).schedule(); |
203 |
167 |
|
} |
204 |
168 |
|
|
205 |
|
- |
private class MyDelayedProcess implements DelayedProcess |
206 |
|
- |
{ |
|
169 |
+ |
private class MyDelayedProcess implements DelayedProcess { |
207 |
170 |
|
@Override |
208 |
171 |
|
public boolean process() // Todo: Special Sizing Support... |
209 |
172 |
|
{ |
210 |
|
- |
if ( mPendingReinitialize ) |
211 |
|
- |
{ |
212 |
|
- |
if ( !setPrefferredDimension() ) |
213 |
|
- |
{ |
|
173 |
+ |
if ( mPendingReinitialize ) { |
|
174 |
+ |
if ( !setPrefferredDimension() ) { |
214 |
175 |
|
trace( "Reinitialize" ); |
215 |
176 |
|
return false; |
216 |
177 |
|
} |
217 |
178 |
|
mPendingReinitialize = false; |
218 |
179 |
|
} |
219 |
180 |
|
boolean nnSetDimension = true; |
220 |
|
- |
if ( mPendingSetDimension ) |
221 |
|
- |
{ |
222 |
|
- |
if ( !setOverallDimension( mSetDimensionValue ) ) |
223 |
|
- |
{ |
|
181 |
+ |
if ( mPendingSetDimension ) { |
|
182 |
+ |
if ( !setOverallDimension( mSetDimensionValue ) ) { |
224 |
183 |
|
trace( "SetDimension" ); |
225 |
184 |
|
return false; |
226 |
185 |
|
} |
227 |
186 |
|
nnSetDimension = mPendingSetDimension = false; |
228 |
187 |
|
} |
229 |
|
- |
if ( mPendingRelayout ) |
230 |
|
- |
{ |
231 |
|
- |
if ( nnSetDimension && !setOverallDimension( mDimensionHelper.getDimension() ) ) |
232 |
|
- |
{ |
|
188 |
+ |
if ( mPendingRelayout ) { |
|
189 |
+ |
if ( nnSetDimension && !setOverallDimension( mDimensionHelper.getDimension() ) ) { |
233 |
190 |
|
trace( "Relayout" ); |
234 |
191 |
|
return false; |
235 |
192 |
|
} |
236 |
193 |
|
mPendingRelayout = false; |
237 |
194 |
|
mDimensionHelper.distributeToChildrenChangedDimension(); |
238 |
195 |
|
} |
239 |
|
- |
if ( mPendingMaximizeVisable ) |
240 |
|
- |
{ |
241 |
|
- |
if ( !LLmaximizeVisibility() ) |
242 |
|
- |
{ |
|
196 |
+ |
if ( mPendingMaximizeVisable ) { |
|
197 |
+ |
if ( !LLmaximizeVisibility() ) { |
243 |
198 |
|
trace( "MaximizeVisable" ); |
244 |
199 |
|
return false; |
245 |
200 |
|
} |
|
@@ -252,8 +207,7 @@ |
252 |
207 |
|
} |
253 |
208 |
|
|
254 |
209 |
|
@SuppressWarnings({"UnusedParameters"}) |
255 |
|
- |
private void trace( String pMessage ) |
256 |
|
- |
{ |
|
210 |
+ |
private void trace( String pMessage ) { |
257 |
211 |
|
// System.out.println( mDimensionHelper.getWhat() + " - " + pMessage); |
258 |
212 |
|
} |
259 |
213 |
|
} |