/* (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ @Override public void dispose() { if (fManager != null) { fManager.cancel(); } super.dispose(); }
/* (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { if (fManager != null) { fManager.cancel(); } super.inputChanged(viewer, oldInput, newInput); }
/* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ @Override public Object[] getChildren(Object element) { Object[] objs = null; if (fManager != null) { // use the the deferred manager for some cases if (element instanceof IBinary) { // It takes sometimes to parse binaries deferred it objs = fManager.getChildren(element); } else if (element instanceof IArchive) { // It takes sometimes to parse archives deferred it objs = fManager.getChildren(element); } } if (objs == null) { objs = super.getChildren(element); } Object[] extras = null; try { if (element instanceof ICProject) { extras = getProjectChildren((ICProject) element); } else if (element instanceof IBinaryContainer) { extras = getExecutables((IBinaryContainer) element); } else if (element instanceof IArchiveContainer) { extras = getArchives((IArchiveContainer) element); } else if (element instanceof IIncludeReference) { extras = getIncludeReferenceChildren((IIncludeReference) element); } /* * Do not to this for now, since ILibraryReference is an Archive. else if (element instanceof ILibraryReference) { extras = ((ILibraryReference)element).getChildren(); }*/ } catch (CModelException e) { } if (extras != null && extras.length > 0) { objs = concatenate(objs, extras); } return objs; }
/* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ @Override public boolean hasChildren(Object element) { if (fManager != null) { if (element instanceof IBinary) { return fManager.mayHaveChildren(element); } else if (element instanceof IArchive) { return fManager.mayHaveChildren(element); } } if (element instanceof IBinaryContainer) { try { IBinaryContainer cont = (IBinaryContainer) element; IBinary[] bins = getBinaries(cont); return (bins != null) && bins.length > 0; } catch (CModelException e) { return false; } } else if (element instanceof IArchiveContainer) { try { IArchiveContainer cont = (IArchiveContainer) element; IArchive[] ars = getArchives(cont); return (ars != null) && ars.length > 0; } catch (CModelException e) { return false; } } else if (element instanceof IncludeReferenceProxy) { IIncludeReference ref = ((IncludeReferenceProxy) element).getReference(); IPath location = ref.getPath(); IContainer[] containers = ref.getCModel().getWorkspace().getRoot().findContainersForLocation(location); for (int i = 0; i < containers.length; ++i) { if (containers[i].isAccessible()) { return false; } } } return super.hasChildren(element); }