+++ /dev/null
-package org.argeo.slc.client.ui.decorators;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
-import org.argeo.slc.SlcException;
-import org.argeo.slc.SlcNames;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.client.ui.SlcImages;
-import org.argeo.slc.client.ui.SlcUiConstants;
-import org.argeo.slc.client.ui.model.ResultFolder;
-import org.argeo.slc.client.ui.model.ResultParent;
-import org.argeo.slc.client.ui.model.SingleResultNode;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DecorationOverlayIcon;
-import org.eclipse.jface.viewers.IDecoration;
-import org.eclipse.jface.viewers.ILabelDecorator;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISharedImages;
-
-/** Dynamically decorates the results tree. */
-public class ResultFailedDecorator extends LabelProvider implements
- ILabelDecorator {
-
- // FIXME why not use? org.eclipse.jface.viewers.DecoratingLabelProvider
-
- // private final static Log log = LogFactory
- // .getLog(ResultFailedDecorator.class);
-
- private final static DateFormat dateFormat = new SimpleDateFormat(
- SlcUiConstants.DEFAULT_DISPLAY_DATE_TIME_FORMAT);
-
- // hack for SWT resource leak
- // see http://www.eclipse.org/articles/swt-design-2/swt-design-2.html
- // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=181215
- private final Image passedFolder;
- private final Image failedFolder;
- private final Image failedSingleResult;
- private final Image errorSingleResult;
- private final Image passedSingleResult;
-
- public ResultFailedDecorator() {
- super();
- ImageDescriptor failedDesc = ClientUiPlugin.getDefault().getWorkbench()
- .getSharedImages()
- .getImageDescriptor(ISharedImages.IMG_DEC_FIELD_ERROR);
- failedFolder = new DecorationOverlayIcon(SlcImages.FOLDER, failedDesc,
- IDecoration.TOP_LEFT).createImage();
- passedFolder = new DecorationOverlayIcon(SlcImages.FOLDER,
- SlcImages.EXECUTION_PASSED, IDecoration.TOP_LEFT).createImage();
- failedSingleResult = new DecorationOverlayIcon(
- SlcImages.PROCESS_COMPLETED, failedDesc, IDecoration.TOP_LEFT)
- .createImage();
- errorSingleResult = new DecorationOverlayIcon(
- SlcImages.PROCESS_COMPLETED, SlcImages.EXECUTION_ERROR,
- IDecoration.TOP_LEFT).createImage();
- passedSingleResult = new DecorationOverlayIcon(
- SlcImages.PROCESS_COMPLETED, SlcImages.EXECUTION_PASSED,
- IDecoration.TOP_LEFT).createImage();
- }
-
- // Method to decorate Image
- public Image decorateImage(Image image, Object object) {
-
- // This method returns an annotated image or null if the
- // image need not be decorated. Returning a null image
- // decorates resource icon with basic decorations provided
- // by Eclipse
- if (object instanceof ResultParent) {
- if (((ResultParent) object).isPassed()) {
- if (object instanceof SingleResultNode)
- return passedSingleResult;
- else if (object instanceof ResultFolder)
- return passedFolder;
- else
- return null;
- } else {
- // ImageDescriptor desc = ClientUiPlugin.getDefault()
- // .getWorkbench().getSharedImages()
- // .getImageDescriptor(ISharedImages.IMG_DEC_FIELD_ERROR);
- // DecorationOverlayIcon decoratedImage = new
- // DecorationOverlayIcon(
- // image, desc, IDecoration.TOP_LEFT);
- // return decoratedImage.createImage();
- if (object instanceof SingleResultNode) {
- SingleResultNode srn = (SingleResultNode) object;
- boolean isError = false;
- try {
- isError = srn.getNode()
- .getNode(SlcNames.SLC_AGGREGATED_STATUS)
- .hasProperty(SlcNames.SLC_ERROR_MESSAGE);
- } catch (RepositoryException re) {
- // Silent node might not exist
- }
- if (isError)
- return errorSingleResult;
- else
- return failedSingleResult;
-
- } else
- return failedFolder;
- }
- }
- return null;
- }
-
- // Method to decorate Text
- public String decorateText(String label, Object object) {
- if (object instanceof SingleResultNode) {
- SingleResultNode srNode = (SingleResultNode) object;
- Node node = srNode.getNode();
- String decoration = null;
- try {
- if (node.hasProperty(SlcNames.SLC_COMPLETED))
- decoration = dateFormat.format(node
- .getProperty(SlcNames.SLC_COMPLETED).getDate()
- .getTime());
- } catch (RepositoryException re) {
- throw new SlcException(
- "Unexpected error defining text decoration for result",
- re);
- }
- return label + " [" + decoration + "]";
- } else
- return null;
- }
-
- @Override
- public void dispose() {
- failedFolder.dispose();
- failedSingleResult.dispose();
- super.dispose();
- }
-
-}