org.eclipse.rcptt.ui.report.internal.TestCaseComposite.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.rcptt.ui.report.internal.TestCaseComposite.java

Source

/*******************************************************************************
 * Copyright (c) 2009, 2015 Xored Software Inc and others.
 * 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:
 *     Xored Software Inc - initial API and implementation and/or initial documentation
 *******************************************************************************/
package org.eclipse.rcptt.ui.report.internal;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.eclipse.core.resources.IFile;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.rcptt.core.model.IQ7NamedElement;
import org.eclipse.rcptt.core.model.search.Q7SearchCore;
import org.eclipse.rcptt.internal.ui.Images;
import org.eclipse.rcptt.reporting.Q7Info;
import org.eclipse.rcptt.reporting.core.IQ7ReportConstants;
import org.eclipse.rcptt.reporting.core.SimpleSeverity;
import org.eclipse.rcptt.reporting.core.TimeFormatHelper;
import org.eclipse.rcptt.sherlock.core.model.sherlock.report.Node;
import org.eclipse.rcptt.sherlock.core.model.sherlock.report.Report;
import org.eclipse.rcptt.ui.controls.AbstractEmbeddedComposite;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;

public class TestCaseComposite extends AbstractEmbeddedComposite {

    private Composite control;
    private Report report;

    private class ReportEntryLabelProvider extends LabelProvider implements ITableLabelProvider {
        public Image getColumnImage(Object element, int columnIndex) {
            Node entry = (Node) element;
            Q7Info object = (Q7Info) entry.getProperties().get(IQ7ReportConstants.ROOT);
            if (object != null) {
                SimpleSeverity severity = SimpleSeverity.create(object);
                switch (object.getType()) {
                case SCRIPT:
                case TESTCASE:
                    if (severity == SimpleSeverity.OK)
                        return Images.getImage(Images.SCENARIO_PASS);
                    if (severity == SimpleSeverity.CANCEL)
                        return Images.getImage(Images.SCENARIO);
                    return Images.getImage(Images.SCENARIO_FAIL);
                case CONTEXT:
                    if (severity == SimpleSeverity.OK)
                        return Images.getImage(Images.CONTEXT_PASS);
                    if (severity == SimpleSeverity.CANCEL)
                        return Images.getImage(Images.CONTEXT);
                    return Images.getImage(Images.CONTEXT_FAIL);
                case VERIFICATION:
                    if (severity == SimpleSeverity.OK)
                        return Images.getImage(Images.VERIFICATION_PASS);
                    if (severity == SimpleSeverity.CANCEL)
                        return Images.getImage(Images.VERIFICATION);
                    return Images.getImage(Images.VERIFICATION_FAIL);
                case ECL_COMMAND:
                    if (severity == SimpleSeverity.OK)
                        return Images.getImage(Images.ECL_COMMAND);
                    if (severity == SimpleSeverity.CANCEL)
                        return Images.getOverlayImageBottomLeft(Images.ECL_COMMAND, Images.OVERLAY_WARNING);
                    return Images.getOverlayImageBottomLeft(Images.ECL_COMMAND, Images.OVERLAY_ERROR);
                case TEST_SUITE:
                    if (severity == SimpleSeverity.OK)
                        return Images.getImage(Images.EXECUTION_SESSION_OK);
                    if (severity == SimpleSeverity.CANCEL)
                        return Images.getImage(Images.EXECUTION_SESSION_STOP);
                    return Images.getImage(Images.EXECUTION_SESSION_FAIL);
                }
            }
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            Node entry = (Node) element;
            Q7Info object = (Q7Info) entry.getProperties().get(IQ7ReportConstants.ROOT);
            switch (columnIndex) {
            case 0:// name
                return entry.getName();
            case 1:// status
                if (object != null) {
                    return SimpleSeverity.create(object.getResult()).name();
                }
                return "";
            case 2:// time
                return TimeFormatHelper.format(entry.getEndTime() - entry.getStartTime());
            // case 3:// location
            // return entry.location;
            }
            return null;
        }
    }

    private class ReportEntryContentProvider implements ITreeContentProvider {
        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        public Object[] getElements(Object inputElement) {
            return new Object[] { report.getRoot() };
        }

        public Object[] getChildren(Object parentElement) {
            Node nde = (Node) parentElement;
            return nde.getChildren().toArray();
        }

        public Object getParent(Object element) {
            Node nde = (Node) element;
            return nde.getParent();
        }

        public boolean hasChildren(Object element) {
            Node nde = (Node) element;
            return !nde.getChildren().isEmpty();
        }
    };

    @Override
    protected void fillActions(IToolBarManager manager) {
    }

    public TestCaseComposite(Report report) {
        this.report = report;
    }

    public String getName() {
        return report.getRoot().getName();
    }

    public Image getImage() {
        return Images.getImage(Images.FILE);
    }

    public void createControl(Composite parent) {
        super.createControl(parent);

        control = new Composite(parent, SWT.NONE);
        GridDataFactory.fillDefaults().grab(true, true).applyTo(control);
        GridLayoutFactory.swtDefaults().numColumns(2).equalWidth(false).applyTo(control);

        TreeViewer viewer = new TreeViewer(control,
                SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
        Tree tree = viewer.getTree();
        tree.setHeaderVisible(true);
        GridDataFactory.fillDefaults().grab(true, true).hint(SWT.DEFAULT, 100).applyTo(viewer.getControl());
        TreeColumn testcaseColumn = new TreeColumn(tree, SWT.NONE);
        testcaseColumn.setText("Test case");
        testcaseColumn.setWidth(200);

        TreeColumn statusColumn = new TreeColumn(tree, SWT.NONE);
        statusColumn.setText("Status");
        statusColumn.setWidth(80);

        TreeColumn timeColumn = new TreeColumn(tree, SWT.NONE);
        timeColumn.setText("Time");
        timeColumn.setWidth(80);

        viewer.setLabelProvider(new ReportEntryLabelProvider());
        viewer.setContentProvider(new ReportEntryContentProvider());
        viewer.setInput(report);

        viewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                List<Node> nodes = new ArrayList<Node>();
                Iterator<?> i = selection.iterator();
                while (i.hasNext()) {
                    addNodes(nodes, (Node) i.next());
                }
                doNodesSelection(nodes);
            }

            private void addNodes(List<Node> nodes, Node next) {
                if (!nodes.contains(next)) {
                    nodes.add(next);
                }
            }
        });

        viewer.addDoubleClickListener(new IDoubleClickListener() {
            @Override
            public void doubleClick(DoubleClickEvent event) {
                IStructuredSelection thisSelection = (IStructuredSelection) event.getSelection();
                Object selectedNode = thisSelection.getFirstElement();
                if (selectedNode == null || !(selectedNode instanceof Node)) {
                    return;
                }

                Node node = (Node) selectedNode;
                Q7Info info = (Q7Info) node.getProperties().get(IQ7ReportConstants.ROOT);
                if (info == null) {
                    return;
                }
                String id = info.getId();
                IQ7NamedElement element = Q7SearchCore.findById(id);
                if (element == null) {
                    return;
                }

                try {
                    IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(),
                            (IFile) element.getResource());
                } catch (PartInitException e) {
                    // Do nothing
                }
            }
        });

    }

    protected void doNodesSelection(List<Node> nodes) {

    }

    public Control getControl() {
        return control;
    }

}