/** * * @param aSelection * The set of elements being dragged. * @return True if the element matches the drag expression from the * extension. */ public boolean areDragElementsSupported(IStructuredSelection aSelection) { if (aSelection.isEmpty()) { return false; } return contentDescriptor.arePossibleChildren(aSelection); }
/** * * @param aContentDescriptor * The content descriptor of inquiry * @return True if and only if the given content extension is declaratively * or programmatically made visible to the viewer. * @see INavigatorContentService#bindExtensions(String[], boolean) For more * information on what <i>visible</i> means. */ public boolean isVisible(INavigatorContentDescriptor aContentDescriptor) { return programmaticVisibilityBindings.contains(aContentDescriptor .getId()) || viewerDescriptor .isVisibleContentExtension(aContentDescriptor.getId()); }
public String getText(Object element) { if (element instanceof NavigatorContentDescriptor) { return ((INavigatorContentDescriptor) element).getName(); } else if (element instanceof ICommonFilterDescriptor) { return ((ICommonFilterDescriptor) element).getName(); } return null; }
INavigatorContentDescriptor aDescriptor, Set theEnabledDescriptors) { if (aDescriptor.getSuppressedExtensionId() != null /* && aDescriptor.getOverridePolicy() == OverridePolicy.InvokeAlwaysRegardlessOfSuppressedExt) { if (theEnabledDescriptors.contains(aDescriptor.getOverriddenDescriptor())) { return true;
public int compare(Object o1, Object o2) { INavigatorContentDescriptor lvalue = null; INavigatorContentDescriptor rvalue = null; if (o1 instanceof INavigatorContentDescriptor) { lvalue = (INavigatorContentDescriptor) o1; } else if (o1 instanceof INavigatorContentExtension) { lvalue = ((INavigatorContentExtension) o1).getDescriptor(); } if (o2 instanceof INavigatorContentDescriptor) { rvalue = (INavigatorContentDescriptor) o2; } else if (o2 instanceof INavigatorContentExtension) { rvalue = ((INavigatorContentExtension) o2).getDescriptor(); } if (lvalue == null || rvalue == null) { return -1 * sortAscending; } int c = lvalue.getPriority() - rvalue.getPriority(); if (c != 0) { return c * sortAscending; } return lvalue.getId().compareTo(rvalue.getId()) * sortAscending; }
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); } } } }
.getAllContentDescriptors(); for (int i = 0; i < contentDescriptors.length; i++) { if (contentDescriptors[i].isActiveByDefault()) { activatedExtensionsMap.put(contentDescriptors[i].getId(), Boolean.TRUE);
/** * 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 image and take overrides into account. * Uses only simple ITreeContentProvider.getParent() style semantics. */ private Image findImage(NavigatorContentExtension foundExtension, Object anElement) { Image image = null; INavigatorContentDescriptor foundDescriptor; image = foundExtension.getLabelProvider().getImage(anElement); if(image == null && (foundDescriptor = foundExtension.getDescriptor()).getOverriddenDescriptor() != null) { return findImage(contentService.getExtension(foundDescriptor.getOverriddenDescriptor()), anElement); } return image; }
public int category(Object element) { if (contentService == null) return 0; INavigatorContentDescriptor source = contentService.getSourceOfContribution(element); if (source == null) source = getSource(element); return source != null ? source.getPriority() : Priority.NORMAL_PRIORITY_VALUE; }
INavigatorContentDescriptor aDescriptor, Set theEnabledExtensions) { if (aDescriptor.getSuppressedExtensionId() != null /* && aDescriptor.getOverridePolicy() == OverridePolicy.InvokeAlwaysRegardlessOfSuppressedExt) { .getExtension(aDescriptor.getOverriddenDescriptor()))) { return true;
/** * 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; }
/** * Search for text label and take overrides into account. * Uses only simple ITreeContentProvider.getParent() style semantics. */ private String findText(NavigatorContentExtension foundExtension, Object anElement) { String text = null; INavigatorContentDescriptor foundDescriptor; text = foundExtension.getLabelProvider().getText(anElement); if(text == null && (foundDescriptor = foundExtension.getDescriptor()).getOverriddenDescriptor() != null) { return findText(contentService.getExtension(foundDescriptor.getOverriddenDescriptor()), anElement); } return text; }
public Image getImage(Object element) { if (element instanceof NavigatorContentDescriptor) { return CONTENT_DESCRIPTOR_REGISTRY.getImage(((INavigatorContentDescriptor) element).getId()); } return null; }
if(overridingExtension.getDescriptor().hasOverridingExtensions()) pipelineInterceptRemove(aRemoveModification, trackedSet, overridingExtension);
private boolean shouldContinue(ReusableViewerLabel label, NavigatorContentExtension foundExtension) { if(foundExtension.getDescriptor().getOverriddenDescriptor() != null) { return !(label.isValid() && label.hasChanged()); } return false; }
/** * * @param descriptorId * The unique id of a particular descriptor * @return The name (value of the 'name' attribute) of the given descriptor */ public String getText(String descriptorId) { INavigatorContentDescriptor descriptor = getContentDescriptor(descriptorId); if (descriptor != null) { return descriptor.getName(); } return descriptorId; }
/** * * @param aContentDescriptor * The content descriptor of inquiry * @return True if and only if the given extension is <i>active</i> * * @see INavigatorContentService For more information on what <i>active</i> * means. * @see INavigatorActivationService#activateExtensions(String[], boolean) * @see INavigatorActivationService#deactivateExtensions(String[], boolean) */ public boolean isActive(INavigatorContentDescriptor aContentDescriptor) { return activationService.isNavigatorExtensionActive(aContentDescriptor .getId()); }
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; }
/** * Search for text label and take overrides into account. * Uses only simple ITreeContentProvider.getParent() style semantics. */ private void findUpdateLabel(NavigatorContentExtension foundExtension, ReusableViewerLabel label, TreePath elementPath) { ILabelProvider labelProvider = foundExtension.getLabelProvider(); if (labelProvider instanceof ITreePathLabelProvider) { ITreePathLabelProvider tplp = (ITreePathLabelProvider) labelProvider; tplp.updateLabel(label, elementPath); } else { label.setImage(labelProvider.getImage(elementPath.getLastSegment())); label.setText(labelProvider.getText(elementPath.getLastSegment())); } if(shouldContinue(label, foundExtension)) { findUpdateLabel(contentService.getExtension(foundExtension.getDescriptor().getOverriddenDescriptor()), label, elementPath); } }