Skip to content

Commit 8368d73

Browse files
committed
packs: outline visible on first click
1 parent bd5136a commit 8368d73

File tree

1 file changed

+40
-19
lines changed

1 file changed

+40
-19
lines changed

ilg.gnuarmeclipse.packs.ui/src/ilg/gnuarmeclipse/packs/ui/views/OutlineView.java

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ public void createPartControl(Composite parent) {
340340

341341
addProviders();
342342
addListners();
343-
hookPageSelection();
343+
hookPostSelectionListener();
344344

345345
makeActions();
346346
hookContextMenu();
@@ -353,19 +353,27 @@ public void setFocus() {
353353
fViewer.getControl().setFocus();
354354
}
355355

356+
/**
357+
* Register this viewer as source of events.
358+
*/
356359
private void addProviders() {
357360
// Register this viewer as the selection provider
358361
getSite().setSelectionProvider(fViewer);
359362
}
360363

364+
/**
365+
* Register listeners for local events.
366+
*/
361367
private void addListners() {
362368

369+
// Register listener for local selection changes
363370
fViewer.addSelectionChangedListener(new ISelectionChangedListener() {
364371

365372
@Override
366373
public void selectionChanged(SelectionChangedEvent event) {
367374

368-
// Called when the local view selection changes
375+
// Called when the local view selection changes, to update the
376+
// two right click actions.
369377

370378
fOpenWithText.setEnabled(false);
371379
fOpenWithSystem.setEnabled(false);
@@ -420,7 +428,10 @@ public void selectionChanged(SelectionChangedEvent event) {
420428

421429
}
422430

423-
private void hookPageSelection() {
431+
/**
432+
* Hook to the global selection bus.
433+
*/
434+
private void hookPostSelectionListener() {
424435

425436
fPageSelectionListener = new ISelectionListener() {
426437

@@ -429,6 +440,7 @@ public void selectionChanged(IWorkbenchPart part,
429440
ISelection selection) {
430441

431442
if (part instanceof PacksView) {
443+
// The selection comes from the packs view
432444
packsViewSelectionChanged(part, selection);
433445
} else {
434446
// System.out.println("Outline: " + part + " selection="
@@ -451,7 +463,14 @@ public void dispose() {
451463
System.out.println("OutlineView.dispose()");
452464
}
453465

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+
*/
455474
protected void packsViewSelectionChanged(IWorkbenchPart part,
456475
ISelection selection) {
457476

@@ -461,7 +480,7 @@ protected void packsViewSelectionChanged(IWorkbenchPart part,
461480

462481
if ((!selection.isEmpty()) && selection instanceof TreeSelection) {
463482

464-
// Limit to a single selection.
483+
// Limit to a single selection, the first one.
465484
Leaf node = (Leaf) ((TreeSelection) selection).getFirstElement();
466485

467486
// Only PackNode can have an outline.
@@ -470,25 +489,24 @@ protected void packsViewSelectionChanged(IWorkbenchPart part,
470489
if (((PackNode) node).hasOutline()) {
471490

472491
// If the node already has outline, show it
473-
fViewer.setAutoExpandLevel(AUTOEXPAND_LEVEL);
474492
outline = ((PackNode) node).getOutline();
475493

476494
} else if (node.isType(Type.VERSION)) {
477495

478496
if (node.isBooleanProperty(Property.INSTALLED)) {
479497

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();
483501
} else {
484502

485-
// Get brief outline
503+
// For not installed nodes, get brief outline.
486504
outline = getBriefOutline((Node) node);
487505
((PackNode) node).setOutline(outline);
488506
}
489507
} else if (node.isType(Type.PACKAGE)) {
490508

491-
// Get brief outline
509+
// Get package brief outline.
492510
outline = getBriefOutline((Node) node);
493511
((PackNode) node).setOutline(outline);
494512

@@ -498,19 +516,25 @@ protected void packsViewSelectionChanged(IWorkbenchPart part,
498516

499517
if (versionNode.isBooleanProperty(Property.INSTALLED)) {
500518

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();
504522
}
505523
}
506524
}
507525
}
508526

527+
fViewer.setAutoExpandLevel(OutlineView.AUTOEXPAND_LEVEL);
509528
fViewer.setInput(outline);
510-
511529
}
512530

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) {
514538

515539
// If the version node is installed, get outline
516540
IProgressService progressService = PlatformUI.getWorkbench()
@@ -519,9 +543,6 @@ private void parseOutline(PackNode versionNode, PackNode selectedNode) {
519543
progressService.busyCursorWhile(new ParsePdscRunnable(
520544
"Parse Outline", (PackNode) versionNode));
521545

522-
fViewer.setAutoExpandLevel(OutlineView.AUTOEXPAND_LEVEL);
523-
fViewer.setInput(((PackNode) selectedNode).getOutline());
524-
525546
} catch (InvocationTargetException e1) {
526547
// TODO Auto-generated catch block
527548
e1.printStackTrace();

0 commit comments

Comments
 (0)