@Override public Image getImage(Object element) { if (element instanceof CPElement) { CPElement cpentry = (CPElement) element; ImageDescriptor imageDescriptor = getCPElementBaseImage(cpentry); if (imageDescriptor != null) { switch (cpentry.getStatus().getSeverity()) { case IStatus.WARNING: imageDescriptor = new CPListImageDescriptor( imageDescriptor, CPListImageDescriptor.WARNING, SMALL_SIZE); break; case IStatus.ERROR: imageDescriptor = new CPListImageDescriptor(imageDescriptor, CPListImageDescriptor.ERROR, SMALL_SIZE); break; } if (cpentry.getInherited() != null) { imageDescriptor = new CPListImageDescriptor( imageDescriptor, CPListImageDescriptor.PATH_INHERIT, SMALL_SIZE); } return fRegistry.get(imageDescriptor); } } else if (element instanceof CPElementAttribute) { String key = ((CPElementAttribute) element).getKey(); if (key.equals(CPElement.SOURCEATTACHMENT)) { return fRegistry.get( CDTSharedImages.getImageDescriptor(CDTSharedImages.IMG_OBJS_SOURCE_ATTACH_ATTRIB)); } else if (key.equals(CPElement.EXCLUSION)) { return CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_EXCLUSION_FILTER_ATTRIB); } } else if (element instanceof IPathEntry) { return getImage(CPElement.createFromExisting((IPathEntry) element, null)); } else if (element instanceof CPElementGroup) { switch (((CPElementGroup) element).getEntryKind()) { case IPathEntry.CDT_INCLUDE: return CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_INCLUDES_CONTAINER); case IPathEntry.CDT_MACRO: return fRegistry.get(fMacroIcon); case IPathEntry.CDT_INCLUDE_FILE: case IPathEntry.CDT_MACRO_FILE: return CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_INCLUDE); case IPathEntry.CDT_LIBRARY: return CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_LIBRARY); case -1: IResource res = ((CPElementGroup) element).getResource(); IWorkbenchAdapter adapter = (IWorkbenchAdapter) res.getAdapter(IWorkbenchAdapter.class); ImageDescriptor imageDescriptor = adapter.getImageDescriptor(res); if (!res.exists()) { imageDescriptor = new CPListImageDescriptor( imageDescriptor, CPListImageDescriptor.WARNING, SMALL_SIZE); } return fRegistry.get(imageDescriptor); } } return null; }
@Override public String getText(Object element) { if (element instanceof CPElement) { return getCPElementText((CPElement) element); } else if (element instanceof CPElementAttribute) { return getCPElementAttributeText((CPElementAttribute) element); } else if (element instanceof IPathEntry) { return getCPElementText(CPElement.createFromExisting((IPathEntry) element, null)); } else if (element instanceof CPElementGroup) { return (getCPContainerGroupText((CPElementGroup) element)); } return super.getText(element); }
protected CPElement[] openContainerSelectionDialog(CPElement existing) { IContainerEntry elem = null; String title; if (existing == null) { title = CPathEntryMessages.IncludeSymbolEntryPage_ContainerDialog_new_title; } else { title = CPathEntryMessages.IncludeSymbolEntryPage_ContainerDialog_edit_title; elem = (IContainerEntry) existing.getPathEntry(); } CPathContainerWizard wizard = new CPathContainerWizard( elem, null, fCurrCProject, getRawPathEntries(), new int[] {IPathEntry.CDT_INCLUDE, IPathEntry.CDT_MACRO}); wizard.setWindowTitle(title); if (CPathContainerWizard.openWizard(getShell(), wizard) == Window.OK) { IPathEntry parent = wizard.getEntriesParent(); IPathEntry[] elements = wizard.getEntries(); if (elements != null) { CPElement[] res = new CPElement[elements.length]; CPElementGroup group = getSelectedGroup(); for (int i = 0; i < res.length; i++) { if (elements[i].getEntryKind() == IPathEntry.CDT_INCLUDE) { res[i] = new CPElement( fCurrCProject, IPathEntry.CDT_INCLUDE, group.getResource().getFullPath(), group.getResource()); res[i].setAttribute(CPElement.INCLUDE, ((IIncludeEntry) elements[i]).getIncludePath()); res[i].setAttribute(CPElement.BASE_REF, parent.getPath()); } else if (elements[i].getEntryKind() == IPathEntry.CDT_MACRO) { res[i] = new CPElement( fCurrCProject, IPathEntry.CDT_MACRO, group.getResource().getFullPath(), group.getResource()); res[i].setAttribute(CPElement.MACRO_NAME, ((IMacroEntry) elements[i]).getMacroName()); res[i].setAttribute(CPElement.BASE_REF, parent.getPath()); } } return res; } return new CPElement[] {CPElement.createFromExisting(parent, fCurrCProject)}; } return null; }