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