/** * Search for extensions that declare the given element in their * <b>possibleChildren</b> expression. * * @param anElement * The element to use in the query * @return The set of {@link INavigatorContentExtension}s that are * <i>visible</i> and <i>active</i> for this content service and * have a <b>possibleChildren</b> expression that is <i>enabled</i> * for the given element. */ public Set findOverrideableContentExtensionsByTriggerPoint(Object anElement) { Set overrideableExtensions = new TreeSet( ExtensionPriorityComparator.INSTANCE); Set descriptors = findDescriptorsByTriggerPoint(anElement); for (Iterator iter = descriptors.iterator(); iter.hasNext();) { INavigatorContentDescriptor descriptor = (INavigatorContentDescriptor) iter .next(); if (descriptor.hasOverridingExtensions()) { overrideableExtensions.add(getExtension(descriptor)); } } return overrideableExtensions; }
/** * Search for extensions that declare the given element in their * <b>possibleChildren</b> expression. * * @param anElement * The element to use in the query * @return The set of {@link INavigatorContentExtension}s that are * <i>visible</i> and <i>active</i> for this content service and * have a <b>possibleChildren</b> expression that is <i>enabled</i> * for the given element. */ public Set findOverrideableContentExtensionsForPossibleChild( Object anElement) { Set overrideableExtensions = new TreeSet( ExtensionPriorityComparator.INSTANCE); Set descriptors = findDescriptorsWithPossibleChild(anElement, false); for (Iterator iter = descriptors.iterator(); iter.hasNext();) { INavigatorContentDescriptor descriptor = (INavigatorContentDescriptor) iter .next(); if (descriptor.hasOverridingExtensions()) { overrideableExtensions.add(getExtension(descriptor)); } } return overrideableExtensions; }
if(overridingExtension.getDescriptor().hasOverridingExtensions()) pipelineInterceptRemove(aRemoveModification, trackedSet, overridingExtension);
private boolean pipelineInterceptRefresh(NavigatorContentExtension overrideableExtension, PipelinedViewerUpdate aRefreshSynchronization, Object refreshable) { boolean intercepted = false; NavigatorContentExtension[] overridingExtensionsForPossibleChild = overrideableExtension.getOverridingExtensionsForPossibleChild(refreshable); for (int i=0; i<overridingExtensionsForPossibleChild.length; i++) { try { if (overridingExtensionsForPossibleChild[i].getContentProvider() instanceof IPipelinedTreeContentProvider) { intercepted |= ((IPipelinedTreeContentProvider) overridingExtensionsForPossibleChild[i] .getContentProvider()) .interceptRefresh(aRefreshSynchronization); if (overridingExtensionsForPossibleChild[i].getDescriptor().hasOverridingExtensions()) intercepted |= pipelineInterceptRefresh(overridingExtensionsForPossibleChild[i], aRefreshSynchronization, refreshable); } } catch (Throwable e) { String msg = e.getMessage() != null ? e.getMessage() : e.toString(); NavigatorPlugin.logError(0, msg, e); } } return intercepted; }
private boolean pipelineInterceptUpdate(NavigatorContentExtension overrideableExtension, PipelinedViewerUpdate anUpdateSynchronization, Object refreshable) { boolean intercepted = false; NavigatorContentExtension[] overridingExtensionsForPossibleChild = overrideableExtension.getOverridingExtensionsForPossibleChild(refreshable); for (int i=0; i<overridingExtensionsForPossibleChild.length; i++) { try { if (overridingExtensionsForPossibleChild[i].getContentProvider() instanceof IPipelinedTreeContentProvider) { intercepted |= ((IPipelinedTreeContentProvider) overridingExtensionsForPossibleChild[i] .getContentProvider()) .interceptUpdate(anUpdateSynchronization); if (overridingExtensionsForPossibleChild[i].getDescriptor().hasOverridingExtensions()) intercepted |= pipelineInterceptUpdate(overridingExtensionsForPossibleChild[i], anUpdateSynchronization, refreshable); } } catch (Throwable e) { String msg = e.getMessage() != null ? e.getMessage() : e.toString(); NavigatorPlugin.logError(0, msg, e); } } return intercepted; }
private void pipelineInterceptAdd(PipelinedShapeModification anAddModification, ContributorTrackingSet trackedSet, INavigatorContentDescriptor descriptor) { if(descriptor.hasOverridingExtensions()) { Set overridingDescriptors = descriptor.getOverriddingExtensions(); for (Iterator overridingDescriptorsItr = overridingDescriptors.iterator(); overridingDescriptorsItr .hasNext();) { INavigatorContentDescriptor overridingDescriptor = (INavigatorContentDescriptor) overridingDescriptorsItr.next(); if(contentService.isVisible(overridingDescriptor.getId()) && contentService.isActive(overridingDescriptor.getId())) { trackedSet.setContributor((NavigatorContentDescriptor) overridingDescriptor); NavigatorContentExtension extension = contentService.getExtension(overridingDescriptor); ((IPipelinedTreeContentProvider) extension.internalGetContentProvider()).interceptAdd(anAddModification); trackedSet.setContributor(null); pipelineInterceptAdd(anAddModification, trackedSet, overridingDescriptor); } } } }