1010 */
1111package org .eclipse .che .ide .navigation ;
1212
13- import com .google .gwt .core .client .Scheduler ;
1413import com .google .gwt .dom .client .Style ;
1514import com .google .gwt .event .dom .client .KeyCodes ;
1615import com .google .gwt .event .dom .client .KeyDownEvent ;
17- import com .google .gwt .event .logical .shared .ResizeEvent ;
18- import com .google .gwt .event .logical .shared .ResizeHandler ;
1916import com .google .gwt .event .shared .HandlerRegistration ;
2017import com .google .gwt .resources .client .CssResource ;
2118import com .google .gwt .uibinder .client .UiBinder ;
2219import com .google .gwt .uibinder .client .UiField ;
2320import com .google .gwt .uibinder .client .UiHandler ;
24- import com .google .gwt .user .client .Command ;
2521import com .google .gwt .user .client .Timer ;
2622import com .google .gwt .user .client .Window ;
2723import com .google .gwt .user .client .ui .FlowPanel ;
@@ -111,8 +107,6 @@ public void setDelegate(ActionDelegate delegate) {
111107
112108 @ Override
113109 public void showPopup () {
114- suggestionsContainer = new HTML ();
115- suggestionsContainer .addStyleName (style .noborder ());
116110 fileName .getElement ().setAttribute ("placeholder" , locale .navigateToFileSearchIsCaseSensitive ());
117111
118112 setPopupPositionAndShow (
@@ -130,18 +124,16 @@ public void run() {
130124 }.schedule (300 );
131125 });
132126
133- Scheduler .get ().scheduleDeferred (() -> fileName .setFocus (true ));
127+ new Timer () {
128+ @ Override
129+ public void run () {
130+ fileName .setFocus (true );
131+ }
132+ }.schedule (300 );
134133
135134 // Add window resize handler
136135 if (resizeHandler == null ) {
137- resizeHandler =
138- Window .addResizeHandler (
139- new ResizeHandler () {
140- @ Override
141- public void onResize (ResizeEvent event ) {
142- updatePositionAndSize ();
143- }
144- });
136+ resizeHandler = Window .addResizeHandler (event -> updatePositionAndSize ());
145137 }
146138 }
147139
@@ -189,6 +181,9 @@ public void hidePopup() {
189181 public void showItems (List <SearchResultDto > items ) {
190182 // Hide popup if it is nothing to show
191183 if (items .isEmpty ()) {
184+ if (suggestionsContainer == null ) {
185+ return ;
186+ }
192187 suggestionsContainer .getElement ().setInnerHTML ("" );
193188 suggestionsContainer .removeFromParent ();
194189 suggestionsPanel .setVisible (false );
@@ -201,6 +196,8 @@ public void showItems(List<SearchResultDto> items) {
201196
202197 // Show popup
203198 suggestionsPanel .setVisible (true );
199+ suggestionsContainer = new HTML ();
200+ suggestionsContainer .addStyleName (style .noborder ());
204201 suggestionsPanel .add (suggestionsContainer );
205202
206203 // Create and show list of items
@@ -278,31 +275,31 @@ void handleKeyDown(KeyDownEvent event) {
278275 if (list != null ) {
279276 list .getSelectionModel ().selectPrevious ();
280277 }
281- return ;
278+ break ;
282279
283280 case KeyCodes .KEY_DOWN :
284281 event .stopPropagation ();
285282 event .preventDefault ();
286283 if (list != null ) {
287284 list .getSelectionModel ().selectNext ();
288285 }
289- return ;
286+ break ;
290287
291288 case KeyCodes .KEY_PAGEUP :
292289 event .stopPropagation ();
293290 event .preventDefault ();
294291 if (list != null ) {
295292 list .getSelectionModel ().selectPreviousPage ();
296293 }
297- return ;
294+ break ;
298295
299296 case KeyCodes .KEY_PAGEDOWN :
300297 event .stopPropagation ();
301298 event .preventDefault ();
302299 if (list != null ) {
303300 list .getSelectionModel ().selectNextPage ();
304301 }
305- return ;
302+ break ;
306303
307304 case KeyCodes .KEY_ENTER :
308305 event .stopPropagation ();
@@ -311,16 +308,23 @@ void handleKeyDown(KeyDownEvent event) {
311308 if (selectedItem != null ) {
312309 delegate .onFileSelected (Path .valueOf (selectedItem .getItemReference ().getPath ()));
313310 }
314- return ;
311+ break ;
315312
316313 case KeyCodes .KEY_ESCAPE :
317314 event .stopPropagation ();
318315 event .preventDefault ();
319316 hidePopup ();
320- return ;
317+ break ;
318+ default :
319+ //here need some delay to be sure input box initiated with given value
320+ //in manually testing hard to reproduce this problem but it reproduced with selenium tests
321+ new Timer () {
322+ @ Override
323+ public void run () {
324+ delegate .onFileNameChanged (fileName .getText ());
325+ }
326+ }.schedule (300 );
327+ break ;
321328 }
322-
323- Scheduler .get ()
324- .scheduleDeferred ((Command ) () -> delegate .onFileNameChanged (fileName .getText ()));
325329 }
326330}
0 commit comments