fr.openpeople.rdal.ide.view.traceability.navigator.ShowHideCommonNavigatorCoverageActionDelegate.java Source code

Java tutorial

Introduction

Here is the source code for fr.openpeople.rdal.ide.view.traceability.navigator.ShowHideCommonNavigatorCoverageActionDelegate.java

Source

/*******************************************************************************
 * Copyright (c) 2011 Lab-STICC Universite de Bretagne Sud, Lorient.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the CeCILL-B license available
 * at :
 * en : http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
 * fr : http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
 * 
 * Contributors:
 * Dominique BLOUIN (Lab-STICC UBS), dominique.blouin@univ-ubs.fr
 ******************************************************************************/
package fr.openpeople.rdal.ide.view.traceability.navigator;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.layout.TreeColumnLayout;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.navigator.CommonNavigator;
import org.eclipse.ui.views.navigator.ResourceNavigator;

import fr.openpeople.rdal.ide.RdalIdePlugin;

@SuppressWarnings("deprecation")
public class ShowHideCommonNavigatorCoverageActionDelegate implements IViewActionDelegate {

    private CommonNavigator commonNavigator;
    private ResourceNavigator resourceNavigator;

    private Layout parentLayout;

    public ShowHideCommonNavigatorCoverageActionDelegate() {
        commonNavigator = null;
        resourceNavigator = null;
        parentLayout = null;
    }

    @Override
    public void init(final IViewPart p_view) {
        if (p_view instanceof CommonNavigator) {
            commonNavigator = (CommonNavigator) p_view;
        } else if (p_view instanceof ResourceNavigator) {
            resourceNavigator = (ResourceNavigator) p_view;
        }
    }

    @Override
    public void run(final IAction p_action) {
        setCoverageColumnVisible(p_action.isChecked());
    }

    private TreeViewer getTreeVIewer() {
        if (commonNavigator != null) {
            return commonNavigator.getCommonViewer();
        }

        if (resourceNavigator != null) {
            return resourceNavigator.getTreeViewer();
        }

        throw new IllegalStateException("Unknowned type of navigator.");
    }

    private void setCoverageColumnVisible(final boolean pb_value) {
        final TreeViewer viewer = getTreeVIewer();
        final Tree tree = viewer.getTree();

        if (pb_value) {
            parentLayout = tree.getParent().getLayout();
            final TreeColumnLayout colLayout = new TreeColumnLayout();
            tree.getParent().setLayout(colLayout);
            final TreeColumn resourceColumn = new TreeColumn(tree, SWT.NONE);
            resourceColumn.setText("Resources");
            final ColumnWeightData colDataRes = new ColumnWeightData(70, 200);
            colLayout.setColumnData(resourceColumn, colDataRes);

            final TreeViewerColumn coverageViewerColumn = new TreeViewerColumn(viewer, SWT.NONE);
            coverageViewerColumn.setLabelProvider(new CoverageLabelProvider(coverageViewerColumn, viewer,
                    RdalIdePlugin.getDefault().getDefinedCoverageListers(),
                    RdalIdePlugin.getDefault().getExceptionHandler()));

            final TreeColumn coverageColumn = coverageViewerColumn.getColumn();
            coverageColumn.setText("Verif. Rate");
            final ColumnWeightData colDataCov = new ColumnWeightData(30, 40);
            colLayout.setColumnData(coverageColumn, colDataCov);
        } else {
            for (final TreeColumn column : tree.getColumns()) {
                column.dispose();
            }

            tree.getParent().setLayout(parentLayout);
        }

        // This works for both Windows and Linux
        tree.setHeaderVisible(pb_value);
        tree.getParent().layout();
        viewer.refresh();

        //      final TreeColumn coverageColumn = tree.getColumn( 1 );

        //      coverageColumn.setResizable( pb_value );
        // Set width does not work for Linux platforms
        //      coverageColumn.setWidth( pb_value ? 150 : 0 );
    }

    @Override
    public void selectionChanged(IAction action, ISelection selection) {
    }
}