/** * The <code>PropertySheet</code> implementation of this <code>IPartListener</code> method first * sees if the active part is an <code>IContributedContentsView</code> adapter and if so, asks it * for its contributing part. */ public void partActivated(IWorkbenchPart part) { // Look for a declaratively-contributed adapter - including not yet loaded adapter factories. // See bug 86362 [PropertiesView] Can not access AdapterFactory, when plugin is not loaded. IContributedContentsView view = (IContributedContentsView) ViewsPlugin.getAdapter(part, IContributedContentsView.class, true); IWorkbenchPart source = null; if (view != null) { source = view.getContributingPart(); } if (source != null) { super.partActivated(source); } else { super.partActivated(part); } if (isImportant(part)) { currentPart = part; // reset the selection (to allow selectionChanged() accept part change for empty selections) currentSelection = null; } // When the view is first opened, pass the selection to the page if (bootstrapSelection != null) { IPropertySheetPage page = (IPropertySheetPage) getCurrentPage(); if (page != null) { page.selectionChanged(part, bootstrapSelection); } bootstrapSelection = null; } }
/** @return the {@link IDiagramEditor} diagram editor. */ protected IDiagramEditor getDiagramEditor() { IWorkbenchPart part = getPart(); if (part instanceof DiagramEditorInternal) { return (DiagramEditorInternal) part; } IContributedContentsView contributedView = (IContributedContentsView) part.getAdapter(IContributedContentsView.class); if (contributedView != null) { part = contributedView.getContributingPart(); } if (part instanceof DiagramEditorInternal) { return (DiagramEditorInternal) part; } return null; }
/** * Handle the part activated event. * * @param part the new activated part. */ protected void handlePartActivated(final IWorkbenchPart part) { /* * The properties view has been activated and the current page is this * instance of TabbedPropertySheetPage */ final boolean thisActivated = part instanceof PropertySheet && ((PropertySheet) part).getCurrentPage() == this; /* * When the active part changes and the part does not provide a * selection that affects this property sheet page, the PropertySheet * does not send us a selectionChanged() event. We need to be informed * of these events since we want to send aboutToBeHidden() and * aboutToBeShown() when the property sheet is hidden or shown. */ if (!thisActivated && !part.equals(contributor) && !part.getSite().getId().equals(contributor.getContributorId())) { /* * Is the part is a IContributedContentsView for the contributor, * for example, outline view. */ final IContributedContentsView view = (IContributedContentsView) part.getAdapter(IContributedContentsView.class); if (view == null || view.getContributingPart() != null && !view.getContributingPart().equals(contributor)) { if (activePropertySheet) { if (currentTab != null) { currentTab.aboutToBeHidden(); } activePropertySheet = false; } return; } } if (!activePropertySheet && currentTab != null) { currentTab.aboutToBeShown(); currentTab.refresh(); } activePropertySheet = true; }