@Override public void addParticipants(ISourceLookupParticipant[] participants) { for (int i = 0; i < participants.length; i++) { ISourceLookupParticipant participant = participants[i]; addSourceLookupParticipant(participant); participant.sourceContainersChanged(this); } } /* (non-Javadoc)
/** * Returns the source containers currently registered with this participant's * source lookup director. * * @return the source containers currently registered with this participant's * source lookup director */ protected ISourceContainer[] getSourceContainers() { ISourceLookupDirector director = getDirector(); if (director != null) { return director.getSourceContainers(); } return new ISourceContainer[0]; }
@Override public Object[] getChildren(Object parentElement) { try { return ((ISourceContainer)parentElement).getSourceContainers(); } catch (CoreException e) { return new Object[0]; } }
@Override public boolean supportsSourceContainerType(ISourceContainerType type) { return !fFilteredTypes.contains(type.getId()); } }
private Object findSourceElement(ISourceContainer[] containers, String typeName) throws CoreException { for (int i = 0; i < containers.length; i++) { Object[] result = containers[i].findSourceElements(typeName); if (result.length > 0) return result[0]; } return null; }
@Override public void initializeFromMemento(String memento, ILaunchConfiguration configuration) throws CoreException { dispose(); setLaunchConfiguration(configuration); doInitializeFromMemento(memento, false); }
@Override public synchronized ISourceContainer[] getSourceContainers() throws CoreException { if (fContainers == null) { fContainers = createSourceContainers(); for (int i = 0; i < fContainers.length; i++) { ISourceContainer container = fContainers[i]; container.init(getDirector()); } } return fContainers; }
/** * Returns whether this participant's source lookup director is configured * to search for duplicate source elements. * * @return whether this participant's source lookup director is configured * to search for duplicate source elements * @since 3.5 */ public boolean isFindDuplicates() { ISourceLookupDirector director = getDirector(); if (director != null) { return director.isFindDuplicates(); } return false; }
@Override public Object getSourceElement(IStackFrame stackFrame) { return getSourceElement((Object)stackFrame); }
@Override public void clearSourceElements(Object element) { List<Object> list = doSourceLookup(element); if (list.size() > 0) { for (Object obj : list) { clearCachedElement(obj); } } } /* (non-Javadoc)
@Override public void init(ISourceLookupDirector director) { super.init(director); fDelegateContainers = new HashMap<>(); } /* (non-Javadoc)
@Override public Object getSourceElement(Object element) { List<Object> sources = doSourceLookup(element); if(sources.size() == 1) { return sources.get(0); } else if(sources.size() > 1) { return resolveSourceElement(element, sources); } else { return null; } }
@Override public void removeParticipants(ISourceLookupParticipant[] participants) { for (int i = 0; i < participants.length; i++) { removeSourceLookupParticipant(participants[i]); } }
@Override public void initializeFromMemento(String memento) throws CoreException { doInitializeFromMemento(memento, true); }
@Override public boolean hasChildren(Object element) { return ((ISourceContainer)element).isComposite(); }
/** * Removes the given participant from the list of registered participants. * Has no effect if an identical participant is not already registered. * * @param participant the participant to remove */ private synchronized void removeSourceLookupParticipant(ISourceLookupParticipant participant) { if (fParticipants.remove(participant)) { participant.dispose(); } }
private void updateDebugElement(Object element) { director.clearSourceElements(element); if (element instanceof DebugElement) { // this is apparently needed to flush StackFrameSourceDisplayAdapter cache ((DebugElement) element).fireChangeEvent(DebugEvent.CONTENT); } }
public Object[] findSourceElements(Object object) throws CoreException { Object[] sourceElements = null; if (object instanceof IJavaStackFrame || object instanceof IJavaObject || object instanceof IJavaReferenceType) { sourceElements = new Object[] {getSourceElement(object)}; } if (sourceElements == null) { sourceElements = super.findSourceElements(object); } return sourceElements; }