@SuppressWarnings("unchecked") protected Severity getSeverity(XtextEditor xtextEditor) { if (xtextEditor == null || xtextEditor.getInternalSourceViewer() == null) return null; IAnnotationModel model = xtextEditor.getInternalSourceViewer().getAnnotationModel(); if (model != null) { Iterator<Annotation> iterator = model.getAnnotationIterator(); boolean hasWarnings = false; boolean hasInfos = false; while (iterator.hasNext()) { Annotation annotation = iterator.next(); if (!annotation.isMarkedDeleted()) { Issue issue = issueUtil.getIssueFromAnnotation(annotation); if (issue != null) { if (issue.getSeverity() == Severity.ERROR) { return Severity.ERROR; } else if (issue.getSeverity() == Severity.WARNING) { hasWarnings = true; } else if (issue.getSeverity() == Severity.INFO) { hasInfos = true; } } } } if (hasWarnings) return Severity.WARNING; if (hasInfos) return Severity.INFO; } return null; }
@Override public void beforeDispose(XtextEditor xtextEditor) { unregisterListener(); if (this.editor != null) { if (defaultImage != null && !defaultImage.isDisposed()) editor.updatedTitleImage(defaultImage); // otherwise we'll leak the defaultImage this.editor = null; } }
protected void updateEditorImage(XtextEditor xtextEditor) { Severity severity = getSeverity(xtextEditor); if (severity == previousSeverity) return; previousSeverity = severity; if (severity != null && severity != Severity.INFO) { ImageDescriptor descriptor = severity == Severity.ERROR ? XtextPluginImages.DESC_OVR_ERROR : XtextPluginImages.DESC_OVR_WARNING; DecorationOverlayIcon decorationOverlayIcon = new DecorationOverlayIcon(defaultImage, descriptor, IDecoration.BOTTOM_LEFT); Image decoratedImage = imageHelper.getImage(decorationOverlayIcon); if (xtextEditor.getTitleImage() != decoratedImage) { scheduleUpdateEditorJob(decoratedImage); } } else { scheduleUpdateEditorJob(defaultImage); } }
protected void updateImageAndRegisterListener() { defaultImage = editor.getDefaultImage(); updateEditorImage(editor); annotationModel = editor.getInternalSourceViewer().getAnnotationModel(); if (annotationModel != null) annotationModel.addAnnotationModelListener(this); }