org.ebayopensource.turmeric.eclipse.ui.components.SOAConsumerServicesViewer.java Source code

Java tutorial

Introduction

Here is the source code for org.ebayopensource.turmeric.eclipse.ui.components.SOAConsumerServicesViewer.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *******************************************************************************/
/**
 * 
 */
package org.ebayopensource.turmeric.eclipse.ui.components;

import java.util.Collection;
import java.util.Collections;

import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger;
import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants;
import org.ebayopensource.turmeric.eclipse.resources.model.AssetInfo;
import org.ebayopensource.turmeric.eclipse.resources.util.SOAConsumerUtil.EnvironmentItem;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;

/**
 * The Class SOAConsumerServicesViewer.
 *
 * @author yayu
 * @since 1.0.0
 */
public class SOAConsumerServicesViewer extends TreeViewer {
    private static final SOALogger logger = SOALogger.getLogger();
    private boolean useAssetInfo = true;
    private boolean isZeroConfig = false;

    /**
     * Instantiates a new sOA consumer services viewer.
     *
     * @param parent the parent
     */
    public SOAConsumerServicesViewer(Composite parent) {
        this(parent, true);
    }

    /**
     * Instantiates a new sOA consumer services viewer.
     *
     * @param parent the parent
     * @param useAssetInfo the use asset info
     */
    public SOAConsumerServicesViewer(Composite parent, boolean useAssetInfo) {
        this(parent, useAssetInfo, false);
    }

    /**
     * Instantiates a new sOA consumer services viewer.
     *
     * @param parent the parent
     * @param useAssetInfo the use asset info
     * @param isZeroConfig whether is zero configured
     */
    public SOAConsumerServicesViewer(Composite parent, boolean useAssetInfo, boolean isZeroConfig) {
        super(parent, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL | SWT.FULL_SELECTION);
        this.useAssetInfo = useAssetInfo;
        this.isZeroConfig = isZeroConfig;
        init();
    }

    public boolean isZeroConfig() {
        return isZeroConfig;
    }

    public void setZeroConfig(boolean isZeroConfig) {
        this.isZeroConfig = isZeroConfig;
    }

    /**
     * Adds the content provider.
     */
    protected void addContentProvider() {
        setContentProvider(new ITreeContentProvider() {

            public Object[] getChildren(Object parentElement) {
                return getElements(parentElement);
            }

            @Override
            public Object getParent(Object element) {
                return null;
            }

            @Override
            public boolean hasChildren(Object element) {
                return element instanceof EnvironmentItem;
            }

            @Override
            public Object[] getElements(Object inputElement) {
                if (inputElement instanceof Collection<?>) {
                    Collection<?> data = (Collection<?>) inputElement;
                    if (isZeroConfig && data.isEmpty() == false) {
                        Object obj = data.iterator().next();
                        if (obj instanceof EnvironmentItem) {

                            return useAssetInfo ? ((EnvironmentItem) obj).getServiceData().values().toArray()
                                    : ((EnvironmentItem) obj).getServices().toArray();
                        }
                    }
                    return ((Collection<?>) inputElement).toArray();
                } else if (inputElement instanceof EnvironmentItem) {

                    return useAssetInfo ? ((EnvironmentItem) inputElement).getServiceData().values().toArray()
                            : ((EnvironmentItem) inputElement).getServices().toArray();
                }
                return Collections.EMPTY_LIST.toArray();
            }

            @Override
            public void dispose() {

            }

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

            }
        });
    }

    /**
     * Adds the label provider.
     */
    protected void addLabelProvider() {
        setLabelProvider(new ITableLabelProvider() {

            @Override
            public Image getColumnImage(Object element, int columnIndex) {

                return null;
            }

            @Override
            public String getColumnText(Object element, int columnIndex) {
                if (isZeroConfig == false) {
                    if (element instanceof AssetInfo) {
                        if (columnIndex == 1)
                            return ((AssetInfo) element).getDescription();
                    } else if (element instanceof String) {
                        if (columnIndex == 1)
                            return element.toString();
                    } else if (element instanceof EnvironmentItem) {
                        final EnvironmentItem info = (EnvironmentItem) element;
                        if (columnIndex == 0) {
                            return info.getName();
                        }
                    }
                } else {
                    if (element instanceof AssetInfo) {
                        if (columnIndex == 0)
                            return ((AssetInfo) element).getDescription();
                    } else if (element instanceof String) {
                        if (columnIndex == 0)
                            return element.toString();
                    }
                }
                return SOAProjectConstants.EMPTY_STRING;
            }

            @Override
            public void addListener(ILabelProviderListener listener) {

            }

            @Override
            public void dispose() {

            }

            @Override
            public boolean isLabelProperty(Object element, String property) {
                return false;
            }

            @Override
            public void removeListener(ILabelProviderListener listener) {

            }
        });
    }

    /**
     * Inits the.
     */
    protected void init() {
        setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
        addContentProvider();
        addLabelProvider();
        createColumns();
    }

    /**
     * Creates the columns.
     */
    protected void createColumns() {
        final Tree tree = getTree();
        Assert.isTrue(tree.getParent().getLayout() instanceof GridLayout,
                "The SOA Consumer Services Viewer must be put in a composite that is using GridLayout.");
        tree.setLayoutData(new GridData(GridData.FILL_BOTH));
        tree.setHeaderVisible(true);
        tree.setLinesVisible(true);

        final TableLayout layout = new TableLayout();
        if (isZeroConfig == false) {
            layout.addColumnData(new ColumnWeightData(40, 100, true));
        }
        layout.addColumnData(new ColumnWeightData(60, 150, true));
        tree.setLayout(layout);

        TreeColumn column = new TreeColumn(tree, SWT.LEFT);
        if (isZeroConfig == false) {
            column.setText("Environment");

            column = new TreeColumn(tree, SWT.LEFT);
        }
        column.setText("Admin Name");
    }

}