org.eclipse.jubula.client.analyze.ui.internal.ResultPage.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jubula.client.analyze.ui.internal.ResultPage.java

Source

/*******************************************************************************
 * Copyright (c) 2004, 2012 BREDEX 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:
 *     BREDEX GmbH - initial API and implementation and/or initial documentation
 *******************************************************************************/
package org.eclipse.jubula.client.analyze.ui.internal;

import java.util.Map;

import org.eclipse.jface.viewers.TreePath;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jubula.client.analyze.internal.Analyze;
import org.eclipse.jubula.client.analyze.internal.AnalyzeResult;
import org.eclipse.jubula.client.analyze.internal.Renderer;
import org.eclipse.jubula.client.analyze.internal.helper.RendererSelectionHelper;
import org.eclipse.jubula.client.analyze.ui.definition.IResultRendererUI;
import org.eclipse.jubula.client.analyze.ui.internal.listener.AnalyzeTreeViewerDoubleClickListener;
import org.eclipse.jubula.client.analyze.ui.internal.provider.QueryTreeContentProvider;
import org.eclipse.jubula.client.analyze.ui.internal.provider.QueryTreeLabelProvider;
import org.eclipse.search.ui.ISearchResult;
import org.eclipse.search.ui.ISearchResultPage;
import org.eclipse.search.ui.ISearchResultViewPart;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.part.Page;

/**
 * 
 * @author volker
 *
 */
public class ResultPage extends Page implements ISearchResultPage {

    /** The Control of the Page */
    private Control m_control;

    /** the ID */
    private String m_id;

    /** The queryResult */
    private QueryResult m_queryResult;

    /** The ListViewer of this class */
    private TreeViewer m_tvl;

    /** The Stack-Layout Composite with the sash */
    private Composite m_stackComp;

    /** The parentComposite */
    private Composite m_parentComp;

    /** The DoubleClickListener */
    private AnalyzeTreeViewerDoubleClickListener m_listener;

    /** 
     * @return m_lvr the TreeViewer of the ResultPage
     */
    public TreeViewer getLeftTreeViewer() {
        return m_tvl;
    }

    /** 
     * @return Composite with the Stack-Layout Composite of this Page 
     */
    public Composite getStackComposite() {
        return m_stackComp;
    }

    /**
     *  @return The Click Listener of the Tree
     */
    public AnalyzeTreeViewerDoubleClickListener getListener() {
        return m_listener;
    }

    /** 
     * @param listener The Listener that is to be set 
     */
    public void setListener(AnalyzeTreeViewerDoubleClickListener listener) {
        this.m_listener = listener;
    }

    /**
     * @return The QueryResult
     */
    public QueryResult getQueryResult() {
        return m_queryResult;
    }

    /**
     * @param queryResult The given QueryResult
     */
    public void setQueryResult(QueryResult queryResult) {
        this.m_queryResult = queryResult;
    }

    /**
     * @param parent The given Composite
     */
    private void setParentComposite(Composite parent) {
        this.m_parentComp = parent;
    }

    /**
     * @return The parentComposite
     */
    private Composite getParentComposite() {
        return m_parentComp;
    }

    /**
     * @param comp
     *            The Composite with the Stack-Layout Composite of this Page
     */
    public void setStackComposite(Composite comp) {
        this.m_stackComp = comp;
    }

    /**
     * {@inheritDoc}
     */
    public void createControl(Composite parent) {

        setQueryResult(null);
        setParentComposite(null);

        Composite par = new Composite(parent, SWT.NONE);
        FillLayout f = new FillLayout(SWT.HORIZONTAL);
        par.setLayout(f);

        Composite c = new Composite(par, SWT.NONE);
        StackLayout s = new StackLayout();
        c.setLayout(s);
        setParentComposite(c);
        setControl(par);

    }

    /** {@inheritDoc} */
    public void dispose() {

    }

    /**
     * @param control
     *            the control to set
     */
    private void setControl(Control control) {
        m_control = control;
    }

    /** {@inheritDoc} */
    public Control getControl() {
        return m_control;
    }

    /** {@inheritDoc} */
    public void setFocus() {
        this.getControl().setFocus();
    }

    /** {@inheritDoc} */
    public Object getUIState() {
        return null;
    }

    /** {@inheritDoc} */
    public void setInput(ISearchResult search, Object uiState) {
        if (search instanceof QueryResult) {
            setQueryResult((QueryResult) search);

            if (getQueryResult().getResultMap().size() == 1) {
                Analyze analyze = null;
                AnalyzeResult result = null;
                for (Map.Entry<Analyze, AnalyzeResult> a : getQueryResult().getResultMap().entrySet()) {
                    analyze = a.getKey();
                    result = a.getValue();
                }
                if (analyze != null && result != null) {
                    Renderer ren = RendererSelectionHelper.getActiveRenderer(analyze);
                    IResultRendererUI rendererUI = (IResultRendererUI) ren.getRendererInstance();
                    // setChosenRenderer(rendererUI);
                    rendererUI.renderResult(result, getParentComposite());

                    if (getParentComposite().getLayout() instanceof StackLayout) {
                        StackLayout sl = (StackLayout) getParentComposite().getLayout();
                        sl.topControl = rendererUI.getTopControl();
                        getParentComposite().layout();
                    }
                    getParentComposite().layout();
                }
            }
            if (getQueryResult().getResultMap().size() > 1) {
                // create a new SashForm
                SashForm sash = new SashForm(getParentComposite(), SWT.HORIZONTAL);
                // create a new TreeViewer
                m_tvl = new TreeViewer(sash);
                m_tvl.setContentProvider(new QueryTreeContentProvider());
                m_tvl.setLabelProvider(new QueryTreeLabelProvider());
                StackLayout stack = new StackLayout();
                Composite cmp = new Composite(sash, SWT.NONE);
                // use a StackLayout to enable to change the content of this
                // Composite
                cmp.setLayout(stack);
                setStackComposite(cmp);
                m_listener = new AnalyzeTreeViewerDoubleClickListener(cmp);
                m_tvl.addDoubleClickListener(m_listener);
                sash.setWeights(new int[] { 40, 60 });
                // set the Control
                // setControl(sash);

                TreeViewer tv = new TreeViewer(getStackComposite());
                StackLayout l = (StackLayout) getStackComposite().getLayout();

                l.topControl = tv.getControl();
                getStackComposite().layout();

                getLeftTreeViewer().setInput(search);
                getLeftTreeViewer().expandAll();

                TreePath[] paths = getLeftTreeViewer().getExpandedTreePaths();
                if (paths.length > 0) {
                    TreeSelection sel = new TreeSelection(paths);
                    getLeftTreeViewer().setSelection(sel, true);
                }

                StackLayout s = (StackLayout) getParentComposite().getLayout();
                s.topControl = sash;

                getParentComposite().layout();
            }
        }
    }

    /** {@inheritDoc} */
    public void setViewPart(ISearchResultViewPart part) {
    }

    /** {@inheritDoc} */
    public void restoreState(IMemento memento) {
    }

    /** {@inheritDoc} */
    public void saveState(IMemento memento) {
    }

    /** {@inheritDoc} */
    public void setID(String id) {
        m_id = id;
    }

    /** {@inheritDoc} */
    public String getID() {
        return m_id;
    }

    /** {@inheritDoc} */
    public String getLabel() {
        return "";
    }
}