Lines 397-441
Link Here
|
397 |
} |
397 |
} |
398 |
|
398 |
|
399 |
public void run() { |
399 |
public void run() { |
400 |
Profile profile = initializeProfiling(); |
400 |
for (;;) { |
401 |
try { |
401 |
final int[] retry = new int[1]; |
402 |
LOGGER.fine( "Worker for " + text + " - started " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
|
|
403 |
|
402 |
|
404 |
final List<? extends TypeDescriptor> types = getTypeNames( text ); |
403 |
Profile profile = initializeProfiling(); |
405 |
if ( isCanceled ) { |
404 |
try { |
406 |
LOGGER.fine( "Worker for " + text + " exited after cancel " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
405 |
LOGGER.fine( "Worker for " + text + " - started " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
|
|
406 |
|
407 |
final List<? extends TypeDescriptor> types = getTypeNames(text, retry); |
408 |
if ( isCanceled ) { |
409 |
LOGGER.fine( "Worker for " + text + " exited after cancel " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
410 |
return; |
411 |
} |
412 |
ListModel model = Models.fromList(types); |
413 |
if (typeFilter != null) { |
414 |
model = LazyListModel.create(model, GoToTypeAction.this, 0.1, "Not computed yet"); |
415 |
} |
416 |
final ListModel fmodel = model; |
417 |
if ( isCanceled ) { |
418 |
LOGGER.fine( "Worker for " + text + " exited after cancel " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
419 |
return; |
420 |
} |
421 |
|
422 |
if ( !isCanceled && fmodel != null ) { |
423 |
LOGGER.fine( "Worker for text " + text + " finished after " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
424 |
SwingUtilities.invokeLater(new Runnable() { |
425 |
public void run() { |
426 |
panel.setModel(fmodel); |
427 |
if (okButton != null && !types.isEmpty()) { |
428 |
okButton.setEnabled (true); |
429 |
} |
430 |
} |
431 |
}); |
432 |
} |
433 |
} finally { |
434 |
if (profile != null) { |
435 |
try { |
436 |
profile.stop(); |
437 |
} catch (Exception ex) { |
438 |
LOGGER.log(Level.INFO, "Cannot stop profiling", ex); |
439 |
} |
440 |
} |
441 |
} |
442 |
|
443 |
if (retry[0] > 0) { |
444 |
try { |
445 |
Thread.sleep(retry[0]); |
446 |
} catch (InterruptedException ex) { |
447 |
Exceptions.printStackTrace(ex); |
448 |
} |
449 |
} else { |
407 |
return; |
450 |
return; |
408 |
} |
451 |
} |
409 |
ListModel model = Models.fromList(types); |
452 |
} // for |
410 |
if (typeFilter != null) { |
|
|
411 |
model = LazyListModel.create(model, GoToTypeAction.this, 0.1, "Not computed yet"); |
412 |
} |
413 |
final ListModel fmodel = model; |
414 |
if ( isCanceled ) { |
415 |
LOGGER.fine( "Worker for " + text + " exited after cancel " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
416 |
return; |
417 |
} |
418 |
|
419 |
if ( !isCanceled && fmodel != null ) { |
420 |
LOGGER.fine( "Worker for text " + text + " finished after " + ( System.currentTimeMillis() - createTime ) + " ms." ); |
421 |
SwingUtilities.invokeLater(new Runnable() { |
422 |
public void run() { |
423 |
panel.setModel(fmodel); |
424 |
if (okButton != null && !types.isEmpty()) { |
425 |
okButton.setEnabled (true); |
426 |
} |
427 |
} |
428 |
}); |
429 |
} |
430 |
} finally { |
431 |
if (profile != null) { |
432 |
try { |
433 |
profile.stop(); |
434 |
} catch (Exception ex) { |
435 |
LOGGER.log(Level.INFO, "Cannot stop profiling", ex); |
436 |
} |
437 |
} |
438 |
} |
439 |
} |
453 |
} |
440 |
|
454 |
|
441 |
public void cancel() { |
455 |
public void cancel() { |
Lines 453-459
Link Here
|
453 |
} |
467 |
} |
454 |
|
468 |
|
455 |
@SuppressWarnings("unchecked") |
469 |
@SuppressWarnings("unchecked") |
456 |
private List<? extends TypeDescriptor> getTypeNames(String text) { |
470 |
private List<? extends TypeDescriptor> getTypeNames(String text, int[] retry) { |
457 |
// TODO: Search twice, first for current project, then for all projects |
471 |
// TODO: Search twice, first for current project, then for all projects |
458 |
List<TypeDescriptor> items; |
472 |
List<TypeDescriptor> items; |
459 |
// Multiple providers: merge results |
473 |
// Multiple providers: merge results |
Lines 478-485
Link Here
|
478 |
} |
492 |
} |
479 |
long delta = System.currentTimeMillis() - start; |
493 |
long delta = System.currentTimeMillis() - start; |
480 |
LOGGER.fine("Provider '" + provider.getDisplayName() + "' took " + delta + " ms."); |
494 |
LOGGER.fine("Provider '" + provider.getDisplayName() + "' took " + delta + " ms."); |
481 |
|
|
|
482 |
} |
495 |
} |
|
|
496 |
retry[0] = TypeProviderAccessor.DEFAULT.getRetry(result); |
483 |
if ( !isCanceled ) { |
497 |
if ( !isCanceled ) { |
484 |
//time = System.currentTimeMillis(); |
498 |
//time = System.currentTimeMillis(); |
485 |
Collections.sort(items, new TypeComparator()); |
499 |
Collections.sort(items, new TypeComparator()); |
Lines 526-532
Link Here
|
526 |
final void waitSearchFinished() { |
540 |
final void waitSearchFinished() { |
527 |
task.waitFinished(); |
541 |
task.waitFinished(); |
528 |
} |
542 |
} |
529 |
|
543 |
|
530 |
private static class Renderer extends DefaultListCellRenderer implements ChangeListener { |
544 |
private static class Renderer extends DefaultListCellRenderer implements ChangeListener { |
531 |
|
545 |
|
532 |
private MyPanel rendererComponent; |
546 |
private MyPanel rendererComponent; |