org.vclipse.configscan.views.labeling.LabelProviderDelegate.java Source code

Java tutorial

Introduction

Here is the source code for org.vclipse.configscan.views.labeling.LabelProviderDelegate.java

Source

/*******************************************************************************
 * Copyright (c) 2010 - 2013 webXcerpt Software GmbH.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *  
 * Contributors:
 *        webXcerpt Software GmbH - initial creator
 *       www.webxcerpt.com
 ******************************************************************************/
package org.vclipse.configscan.views.labeling;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.DecorationOverlayIcon;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.progress.PendingUpdateAdapter;
import org.vclipse.configscan.IConfigScanImages;
import org.vclipse.configscan.extension.ExtensionPointReader;
import org.vclipse.configscan.impl.model.TestCase;
import org.vclipse.configscan.impl.model.TestCase.Status;
import org.vclipse.configscan.impl.model.TestRun;
import org.w3c.dom.NamedNodeMap;

import com.google.inject.Inject;

public class LabelProviderDelegate extends ExtensionsHandlingLabelProvider {

    @Inject
    public LabelProviderDelegate(ExtensionPointReader reader) {
        super(reader);
    }

    protected Image decorateImage(Image image, TestCase testCase) {
        if (image == null) {
            return image;
        }
        if (Status.FAILURE == testCase.getStatus()) {
            ImageData imageData = image.getImageData();
            ImageDescriptor[] overlay = new ImageDescriptor[5];
            overlay[2] = imageHelper.getImageDescriptor(IConfigScanImages.ERROR_OVERLAY);
            return new DecorationOverlayIcon(image, overlay, new Point(imageData.width, imageData.height))
                    .createImage();
        }
        ImageData imageData = image.getImageData();
        ImageDescriptor[] overlay = new ImageDescriptor[5];
        overlay[2] = imageHelper.getImageDescriptor(IConfigScanImages.SUCCESS_OVERLAY);
        return new DecorationOverlayIcon(image, overlay, new Point(imageData.width, imageData.height))
                .createImage();
    }

    protected String toolTip(TestCase testCase) {
        if (isExtensionEnabled()) {
            IBaseLabelProvider labelProvider = getLabelProviderExtension(testCase);
            Object result = extensionCall(labelProvider, "getToolTipText", testCase);
            if (result instanceof String) {
                return (String) result;
            }
        } else {
            StringBuffer stringBuffer = new StringBuffer();
            NamedNodeMap attributes = testCase.getLogElement().getAttributes();
            for (String current : new String[] { "cstic", "item", "i_status" }) {
                String text = extractText(attributes,
                        "ConfigScan XML log for " + (current.equals("i_status") ? " status statement " : ""),
                        current);
                if (text == null) {
                    continue;
                } else {
                    stringBuffer.append(text);
                }
            }
            stringBuffer.append("\n");
            stringBuffer.append("Test run: " + testCase.getRoot().getTitle());
            stringBuffer.append("\n");
            stringBuffer.append("Test group: " + testCase.getParent().getTitle());
            stringBuffer.append("\n");
            stringBuffer.append(extractText(attributes, "Bompath: ", "bompath"));
            stringBuffer.append("\n");
            stringBuffer.append(extractText(attributes, "Command: ", "cmd"));
            stringBuffer.append("\n");
            stringBuffer.append(extractText(attributes, "Execution time: ", "ttime"));
            return stringBuffer.toString();
        }
        return null;
    }

    protected Image image(TestCase testCase) {
        if (isExtensionEnabled()) {
            return decorateImage((Image) extensionCall(getLabelProviderExtension(testCase), "getImage", testCase),
                    testCase);
        } else {
            return testCase.getStatus() == Status.SUCCESS ? imageHelper.getImage(IConfigScanImages.SUCCESS)
                    : imageHelper.getImage(IConfigScanImages.ERROR);
        }
    }

    protected Image image(TestRun testRun) {
        return imageHelper.getImage(testRun.getImageDescriptor(null));
    }

    protected Image image(PendingUpdateAdapter adapter) {
        return imageHelper.getImage(IConfigScanImages.HOURGLASS);
    }

    protected StyledString styledText(TestCase testCase) {
        IBaseLabelProvider labelProvider = getLabelProviderExtension(testCase);
        if (isExtensionEnabled()) {
            Object result = extensionCall(labelProvider, "getStyledText", testCase);
            if (result instanceof StyledString) {
                return (StyledString) result;
            }
            result = extensionCall(labelProvider, "getText", testCase);
            if (result instanceof String) {
                return new StyledString((String) result);
            }
        } else {
            StyledString styledString = new StyledString(testCase.getTitle()).append(getStatistics(testCase));
            String description = (String) extensionCall(labelProvider, "getText", testCase);
            if (description != null && !description.isEmpty()) {
                styledString.append(new StyledString("  " + description, StyledString.DECORATIONS_STYLER));
            }
            return styledString;
        }
        return new StyledString(EMPTY);
    }

    protected StyledString styledText(TestRun testRun) {
        return new StyledString(testRun.getLabel(null));
    }

    protected StyledString styledText(PendingUpdateAdapter adapter) {
        return new StyledString(adapter.getLabel(null));
    }
}