private void updateStatus() { CPElement entryError = null; int nErrorEntries = 0; IStatus status = Status.OK_STATUS; List<CPElement> elements = getCPaths(); for (int i = elements.size() - 1; i >= 0; i--) { CPElement currElement = elements.get(i); if (currElement.getStatus().getSeverity() != IStatus.OK) { nErrorEntries++; if (entryError == null) { entryError = currElement; } } } if (nErrorEntries > 0) { if (nErrorEntries == 1 && entryError != null) { status = entryError.getStatus(); } else { status = new Status( IStatus.WARNING, CUIPlugin.PLUGIN_ID, -1, NLS.bind( CPathEntryMessages.CPElement_status_multiplePathErrors, String.valueOf(nErrorEntries)), null); } } fContext.statusChanged(status); }
@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; }
private void updateStatus(List<?> selected) { if (selected.size() != 1) { updateStatus(); return; } CPElement element = null; if (selected.get(0) instanceof CPElement) { element = (CPElement) selected.get(0); } else if (selected.get(0) instanceof CPElementAttribute) { element = ((CPElementAttribute) selected.get(0)).getParent(); } if (element != null && element.getStatus().getSeverity() != IStatus.OK) { fContext.statusChanged(element.getStatus()); } else { updateStatus(); return; } }
public String getCPElementText(CPElement cpentry) { IPath path = cpentry.getPath(); switch (cpentry.getEntryKind()) { case IPathEntry.CDT_LIBRARY: { IPath libPath = (IPath) cpentry.getAttribute(CPElement.LIBRARY); StringBuffer str = new StringBuffer(); addBaseString(libPath, cpentry, str); addExport(cpentry, str); addParentInfo(cpentry, str); return str.toString(); } case IPathEntry.CDT_PROJECT: return path.lastSegment(); case IPathEntry.CDT_INCLUDE: { IPath incPath = ((IPath) cpentry.getAttribute(CPElement.INCLUDE)); StringBuffer str = new StringBuffer(); addBaseString(incPath, cpentry, str); addExport(cpentry, str); addParentInfo(cpentry, str); return str.toString(); } case IPathEntry.CDT_INCLUDE_FILE: { IPath incFilePath = ((IPath) cpentry.getAttribute(CPElement.INCLUDE_FILE)); StringBuffer str = new StringBuffer(); addBaseString(incFilePath, cpentry, str); addExport(cpentry, str); addParentInfo(cpentry, str); return str.toString(); } case IPathEntry.CDT_MACRO: { StringBuffer str = new StringBuffer( (String) cpentry.getAttribute(CPElement.MACRO_NAME) + "=" //$NON-NLS-1$ + (String) cpentry.getAttribute(CPElement.MACRO_VALUE)); addBaseString(null, cpentry, str); addExport(cpentry, str); addParentInfo(cpentry, str); return str.toString(); } case IPathEntry.CDT_MACRO_FILE: { IPath macroFilePath = ((IPath) cpentry.getAttribute(CPElement.MACROS_FILE)); StringBuffer str = new StringBuffer(); addBaseString(macroFilePath, cpentry, str); addExport(cpentry, str); addParentInfo(cpentry, str); return str.toString(); } case IPathEntry.CDT_CONTAINER: { StringBuffer str = new StringBuffer(path.toString()); try { IPathEntryContainer container = CoreModel.getPathEntryContainer(cpentry.getPath(), cpentry.getCProject()); if (container != null) { str.setLength(0); str.append(container.getDescription()); } } catch (CModelException e) { } addExport(cpentry, str); return str.toString(); } case IPathEntry.CDT_SOURCE: case IPathEntry.CDT_OUTPUT: { StringBuffer buf = new StringBuffer(path.makeRelative().toString()); IResource resource = cpentry.getResource(); if (resource != null && !resource.exists()) { buf.append(' '); if (cpentry.getStatus().getSeverity() != IStatus.OK) { // only valid error for src/output would missing path... buf.append(fCreateLabel); } else { buf.append(fNewLabel); } } return buf.toString(); } default: // pass } return CPathEntryMessages.CPElementLabelProvider_unknown_element_label; }