package org.bndtools.core.ui; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.viewers.StyledCellLabelProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.plugin.AbstractUIPlugin; import bndtools.Plugin; public class StatusLabelProvider extends StyledCellLabelProvider { private Image imgError = null; private Image imgWarning = null; private Image imgInfo = null; @Override public void update(ViewerCell cell) { IStatus status = (IStatus) cell.getElement(); switch (status.getSeverity()) { case IStatus.ERROR : if (imgError == null) imgError = AbstractUIPlugin.imageDescriptorFromPlugin(Plugin.PLUGIN_ID, "icons/error_obj.gif").createImage(); cell.setImage(imgError); break; case IStatus.WARNING : if (imgWarning == null) imgWarning = AbstractUIPlugin.imageDescriptorFromPlugin(Plugin.PLUGIN_ID, "icons/warning_obj.gif").createImage(); cell.setImage(imgWarning); break; case IStatus.INFO : if (imgInfo == null) imgInfo = AbstractUIPlugin.imageDescriptorFromPlugin(Plugin.PLUGIN_ID, "icons/information.gif").createImage(); cell.setImage(imgInfo); break; case IStatus.OK : case IStatus.CANCEL : default : break; } StyledString label = new StyledString(status.getMessage()); if (status.getException() != null) label.append(": " + status.getException().toString(), StyledString.QUALIFIER_STYLER); cell.setText(label.getString()); cell.setStyleRanges(label.getStyleRanges()); } @Override public void dispose() { super.dispose(); if (imgError != null) imgError.dispose(); if (imgWarning != null) imgWarning.dispose(); if (imgInfo != null) imgInfo.dispose(); } }