Lines 2467-2472
Link Here
|
2467 |
if (!certifyPart(part)) |
2467 |
if (!certifyPart(part)) |
2468 |
return; |
2468 |
return; |
2469 |
|
2469 |
|
|
|
2470 |
if (part instanceof MultiEditor) { |
2471 |
part = ((MultiEditor) part).getActiveEditor(); |
2472 |
} |
2473 |
|
2470 |
// Real work. |
2474 |
// Real work. |
2471 |
setActivePart(part); |
2475 |
setActivePart(part); |
2472 |
} |
2476 |
} |
Lines 2829-2836
Link Here
|
2829 |
label = newPart != null ? newPart.getTitle() : "none"; //$NON-NLS-1$ |
2833 |
label = newPart != null ? newPart.getTitle() : "none"; //$NON-NLS-1$ |
2830 |
} |
2834 |
} |
2831 |
try { |
2835 |
try { |
2832 |
IWorkbenchPartReference partref = getReference(newPart); |
2836 |
IWorkbenchPartReference parentRef = getReference(newPart); |
2833 |
partBeingActivated = partref; |
2837 |
partBeingActivated = getReference(newPart, false); |
2834 |
|
2838 |
|
2835 |
UIStats.start(UIStats.ACTIVATE_PART, label); |
2839 |
UIStats.start(UIStats.ACTIVATE_PART, label); |
2836 |
// Notify perspective. It may deactivate fast view. |
2840 |
// Notify perspective. It may deactivate fast view. |
Lines 2848-2862
Link Here
|
2848 |
if (newPart != null) { |
2852 |
if (newPart != null) { |
2849 |
activationList.setActive(newPart); |
2853 |
activationList.setActive(newPart); |
2850 |
if (newPart instanceof IEditorPart) { |
2854 |
if (newPart instanceof IEditorPart) { |
2851 |
IEditorReference ref = (IEditorReference) getReference(newPart); |
2855 |
makeActiveEditor((IEditorReference)parentRef); |
2852 |
makeActiveEditor(ref); |
|
|
2853 |
} |
2856 |
} |
2854 |
} |
2857 |
} |
2855 |
activatePart(newPart); |
2858 |
activatePart(newPart); |
2856 |
|
2859 |
|
2857 |
actionSwitcher.updateActivePart(newPart); |
2860 |
actionSwitcher.updateActivePart(newPart); |
2858 |
|
2861 |
|
2859 |
partList.setActivePart(partref); |
2862 |
partList.setActivePart(parentRef); |
2860 |
} finally { |
2863 |
} finally { |
2861 |
partBeingActivated = null; |
2864 |
partBeingActivated = null; |
2862 |
Object blame = newPart == null ? (Object)this : newPart; |
2865 |
Object blame = newPart == null ? (Object)this : newPart; |
Lines 3439-3497
Link Here
|
3439 |
|
3442 |
|
3440 |
/** |
3443 |
/** |
3441 |
* Returns the reference to the given part, or <code>null</code> if it has no reference |
3444 |
* Returns the reference to the given part, or <code>null</code> if it has no reference |
3442 |
* (i.e. it is not a top-level part in this workbench page). |
3445 |
* (i.e. it is not a top-level part in this workbench page). For |
|
|
3446 |
* the MultiEditor, it returns parent reference. |
3443 |
* |
3447 |
* |
3444 |
* @param part the part |
3448 |
* @param part the part |
3445 |
* @return the part's reference or <code>null</code> if the given part does not belong |
3449 |
* @return the part's reference or <code>null</code> if the given part does not belong |
3446 |
* to this workbench page |
3450 |
* to this workbench page |
3447 |
*/ |
3451 |
*/ |
3448 |
public IWorkbenchPartReference getReference(IWorkbenchPart part) { |
3452 |
public IWorkbenchPartReference getReference(IWorkbenchPart part) { |
3449 |
if (part == null) { |
3453 |
return getReference(part, true); |
3450 |
return null; |
3454 |
} |
3451 |
} |
3455 |
|
3452 |
IWorkbenchPartSite site = part.getSite(); |
3456 |
/** |
3453 |
if (!(site instanceof PartSite)) { |
3457 |
* Returns the reference to the given part, or <code>null</code> if it has |
3454 |
return null; |
3458 |
* no reference (i.e. it is not a top-level part in this workbench page). |
3455 |
} |
3459 |
* |
3456 |
PartSite partSite = ((PartSite) site); |
3460 |
* @param part |
3457 |
PartPane pane = partSite.getPane(); |
3461 |
* the part |
3458 |
if (pane instanceof MultiEditorInnerPane) { |
3462 |
* @param findContainer |
3459 |
MultiEditorInnerPane innerPane = (MultiEditorInnerPane) pane; |
3463 |
* true - return the parent reference for InnerEditors |
3460 |
return innerPane.getParentPane().getPartReference(); |
3464 |
* @return the part's reference or <code>null</code> if the given part |
3461 |
} |
3465 |
* does not belong to this workbench page |
3462 |
return partSite.getPartReference(); |
3466 |
*/ |
|
|
3467 |
public IWorkbenchPartReference getReference(IWorkbenchPart part, |
3468 |
boolean findContainer) { |
3469 |
if (part == null) { |
3470 |
return null; |
3471 |
} |
3472 |
IWorkbenchPartSite site = part.getSite(); |
3473 |
if (!(site instanceof PartSite)) { |
3474 |
return null; |
3475 |
} |
3476 |
PartSite partSite = ((PartSite) site); |
3477 |
PartPane pane = partSite.getPane(); |
3478 |
if (findContainer && pane instanceof MultiEditorInnerPane) { |
3479 |
MultiEditorInnerPane innerPane = (MultiEditorInnerPane) pane; |
3480 |
return innerPane.getParentPane().getPartReference(); |
3481 |
} |
3482 |
return partSite.getPartReference(); |
3463 |
} |
3483 |
} |
3464 |
|
3484 |
|
3465 |
private class ActivationList { |
3485 |
private class ActivationList { |
3466 |
//List of parts in the activation order (oldest first) |
3486 |
// List of parts in the activation order (oldest first) |
3467 |
List parts = new ArrayList(); |
3487 |
List parts = new ArrayList(); |
3468 |
|
3488 |
|
3469 |
/* |
3489 |
/* |
3470 |
* Add/Move the active part to end of the list; |
3490 |
* Add/Move the active part to end of the list; |
3471 |
*/ |
3491 |
*/ |
3472 |
void setActive(IWorkbenchPart part) { |
3492 |
void setActive(IWorkbenchPart part) { |
3473 |
if (parts.size() <= 0) |
3493 |
if (parts.size() <= 0) |
3474 |
return; |
3494 |
return; |
3475 |
PartPane pane = ((PartSite) part.getSite()).getPane(); |
3495 |
IWorkbenchPartReference ref = getReference(part); |
3476 |
if (pane instanceof MultiEditorInnerPane) { |
3496 |
if (ref != null) { |
3477 |
MultiEditorInnerPane innerPane = (MultiEditorInnerPane) pane; |
3497 |
if (ref == parts.get(parts.size() - 1)) |
3478 |
setActive(innerPane.getParentPane().getPartReference().getPart( |
3498 |
return; |
3479 |
true)); |
3499 |
parts.remove(ref); |
3480 |
} else { |
3500 |
parts.add(ref); |
3481 |
IWorkbenchPartReference ref = getReference(part); |
3501 |
} |
3482 |
if (ref != null) { |
|
|
3483 |
if (ref == parts.get(parts.size() - 1)) |
3484 |
return; |
3485 |
parts.remove(ref); |
3486 |
parts.add(ref); |
3487 |
} |
3488 |
} |
3489 |
} |
3502 |
} |
3490 |
|
3503 |
|
3491 |
/* |
3504 |
/* |
3492 |
* Ensures that the given part appears AFTER any other part in the same |
3505 |
* Ensures that the given part appears AFTER any other part in the same |
3493 |
* container. |
3506 |
* container. |
3494 |
*/ |
3507 |
*/ |
3495 |
void bringToTop(IWorkbenchPartReference ref) { |
3508 |
void bringToTop(IWorkbenchPartReference ref) { |
3496 |
ILayoutContainer targetContainer = getContainer(ref); |
3509 |
ILayoutContainer targetContainer = getContainer(ref); |
3497 |
|
3510 |
|