@@ -340,7 +340,7 @@ public void createPartControl(Composite parent) {
340
340
341
341
addProviders ();
342
342
addListners ();
343
- hookPageSelection ();
343
+ hookPostSelectionListener ();
344
344
345
345
makeActions ();
346
346
hookContextMenu ();
@@ -353,19 +353,27 @@ public void setFocus() {
353
353
fViewer .getControl ().setFocus ();
354
354
}
355
355
356
+ /**
357
+ * Register this viewer as source of events.
358
+ */
356
359
private void addProviders () {
357
360
// Register this viewer as the selection provider
358
361
getSite ().setSelectionProvider (fViewer );
359
362
}
360
363
364
+ /**
365
+ * Register listeners for local events.
366
+ */
361
367
private void addListners () {
362
368
369
+ // Register listener for local selection changes
363
370
fViewer .addSelectionChangedListener (new ISelectionChangedListener () {
364
371
365
372
@ Override
366
373
public void selectionChanged (SelectionChangedEvent event ) {
367
374
368
- // Called when the local view selection changes
375
+ // Called when the local view selection changes, to update the
376
+ // two right click actions.
369
377
370
378
fOpenWithText .setEnabled (false );
371
379
fOpenWithSystem .setEnabled (false );
@@ -420,7 +428,10 @@ public void selectionChanged(SelectionChangedEvent event) {
420
428
421
429
}
422
430
423
- private void hookPageSelection () {
431
+ /**
432
+ * Hook to the global selection bus.
433
+ */
434
+ private void hookPostSelectionListener () {
424
435
425
436
fPageSelectionListener = new ISelectionListener () {
426
437
@@ -429,6 +440,7 @@ public void selectionChanged(IWorkbenchPart part,
429
440
ISelection selection ) {
430
441
431
442
if (part instanceof PacksView ) {
443
+ // The selection comes from the packs view
432
444
packsViewSelectionChanged (part , selection );
433
445
} else {
434
446
// System.out.println("Outline: " + part + " selection="
@@ -451,7 +463,14 @@ public void dispose() {
451
463
System .out .println ("OutlineView.dispose()" );
452
464
}
453
465
454
- // Called when selection in other views change
466
+ /**
467
+ * Called when selection in the Packs view changes.
468
+ *
469
+ * @param part
470
+ * the Packs view.
471
+ * @param selection
472
+ * a TreeSelection with a PackNode as first element.
473
+ */
455
474
protected void packsViewSelectionChanged (IWorkbenchPart part ,
456
475
ISelection selection ) {
457
476
@@ -461,7 +480,7 @@ protected void packsViewSelectionChanged(IWorkbenchPart part,
461
480
462
481
if ((!selection .isEmpty ()) && selection instanceof TreeSelection ) {
463
482
464
- // Limit to a single selection.
483
+ // Limit to a single selection, the first one .
465
484
Leaf node = (Leaf ) ((TreeSelection ) selection ).getFirstElement ();
466
485
467
486
// Only PackNode can have an outline.
@@ -470,25 +489,24 @@ protected void packsViewSelectionChanged(IWorkbenchPart part,
470
489
if (((PackNode ) node ).hasOutline ()) {
471
490
472
491
// If the node already has outline, show it
473
- fViewer .setAutoExpandLevel (AUTOEXPAND_LEVEL );
474
492
outline = ((PackNode ) node ).getOutline ();
475
493
476
494
} else if (node .isType (Type .VERSION )) {
477
495
478
496
if (node .isBooleanProperty (Property .INSTALLED )) {
479
497
480
- // If the version node is installed, get outline
481
- parseOutline ((PackNode ) node , ( PackNode ) node );
482
-
498
+ // If the version node is installed, get outline.
499
+ parseOutline ((PackNode ) node );
500
+ outline = (( PackNode ) node ). getOutline ();
483
501
} else {
484
502
485
- // Get brief outline
503
+ // For not installed nodes, get brief outline.
486
504
outline = getBriefOutline ((Node ) node );
487
505
((PackNode ) node ).setOutline (outline );
488
506
}
489
507
} else if (node .isType (Type .PACKAGE )) {
490
508
491
- // Get brief outline
509
+ // Get package brief outline.
492
510
outline = getBriefOutline ((Node ) node );
493
511
((PackNode ) node ).setOutline (outline );
494
512
@@ -498,19 +516,25 @@ protected void packsViewSelectionChanged(IWorkbenchPart part,
498
516
499
517
if (versionNode .isBooleanProperty (Property .INSTALLED )) {
500
518
501
- // If the version node is installed, get outline
502
- parseOutline ((PackNode ) versionNode , ( PackNode ) node );
503
-
519
+ // If the example version node is installed, get outline
520
+ parseOutline ((PackNode ) versionNode );
521
+ outline = (( PackNode ) node ). getOutline ();
504
522
}
505
523
}
506
524
}
507
525
}
508
526
527
+ fViewer .setAutoExpandLevel (OutlineView .AUTOEXPAND_LEVEL );
509
528
fViewer .setInput (outline );
510
-
511
529
}
512
530
513
- private void parseOutline (PackNode versionNode , PackNode selectedNode ) {
531
+ /**
532
+ * Parse the node outline.
533
+ *
534
+ * @param versionNode
535
+ * @return
536
+ */
537
+ private void parseOutline (PackNode versionNode ) {
514
538
515
539
// If the version node is installed, get outline
516
540
IProgressService progressService = PlatformUI .getWorkbench ()
@@ -519,9 +543,6 @@ private void parseOutline(PackNode versionNode, PackNode selectedNode) {
519
543
progressService .busyCursorWhile (new ParsePdscRunnable (
520
544
"Parse Outline" , (PackNode ) versionNode ));
521
545
522
- fViewer .setAutoExpandLevel (OutlineView .AUTOEXPAND_LEVEL );
523
- fViewer .setInput (((PackNode ) selectedNode ).getOutline ());
524
-
525
546
} catch (InvocationTargetException e1 ) {
526
547
// TODO Auto-generated catch block
527
548
e1 .printStackTrace ();
0 commit comments