gov.redhawk.ide.spd.internal.ui.editor.ComponentOutlinePage.java Source code

Java tutorial

Introduction

Here is the source code for gov.redhawk.ide.spd.internal.ui.editor.ComponentOutlinePage.java

Source

/*******************************************************************************
 * This file is protected by Copyright. 
 * Please refer to the COPYRIGHT file distributed with this source distribution.
 *
 * This file is part of REDHAWK IDE.
 *
 * 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
 *******************************************************************************/
package gov.redhawk.ide.spd.internal.ui.editor;

import gov.redhawk.ide.spd.internal.ui.editor.provider.ImplementationSectionImplementationItemProvider;
import gov.redhawk.ide.spd.internal.ui.editor.provider.ImplementationSectionSoftPkgItemProvider;
import gov.redhawk.ide.spd.internal.ui.editor.provider.SpdItemProviderAdapterFactoryAdapter;
import gov.redhawk.prf.ui.editor.page.PropertiesFormPage;
import gov.redhawk.prf.ui.provider.PropertiesEditorPrfItemProviderAdapterFactory;
import gov.redhawk.ui.editor.FormOutlinePage;
import gov.redhawk.ui.editor.SCAFormEditor;
import gov.redhawk.ui.editor.ScaFormPage;
import mil.jpeojtrs.sca.prf.AbstractProperty;
import mil.jpeojtrs.sca.prf.Properties;
import mil.jpeojtrs.sca.prf.Struct;
import mil.jpeojtrs.sca.prf.StructSequence;
import mil.jpeojtrs.sca.scd.provider.ScdItemProviderAdapterFactory;
import mil.jpeojtrs.sca.spd.Implementation;
import mil.jpeojtrs.sca.spd.SoftPkg;

import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.ui.PlatformUI;

/**
 * 
 */
public class ComponentOutlinePage extends FormOutlinePage {

    /**
     * @since 2.0
     */
    private class ComponentOutlinePageAdapterFactoryLabelProvider extends AdapterFactoryLabelProvider {

        public ComponentOutlinePageAdapterFactoryLabelProvider(AdapterFactory adapterFactory) {
            super(adapterFactory);
        }

        @Override
        public String getText(Object object) {
            if (object instanceof SoftPkg) {
                return "Implementations";
            } else if (object instanceof Properties) {
                return "Properties";
            } else if (object instanceof ScaFormPage) {
                return "Overview";
            }
            return super.getText(object);
        }

    }

    /**
     * The Constructor.
     * 
     * @param editor the editor
     */
    public ComponentOutlinePage(final SCAFormEditor editor) {
        super(editor);
        super.setLabelProvider(new DecoratingLabelProvider(
                new ComponentOutlinePageAdapterFactoryLabelProvider(getAdapterFactory()),
                PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()));
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected void addItemProviders(final ComposedAdapterFactory adapterFactory) {
        final SpdItemProviderAdapterFactoryAdapter provider = new SpdItemProviderAdapterFactoryAdapter();
        provider.setSoftPkgAdapter(new ImplementationSectionSoftPkgItemProvider(provider));
        provider.setImplementationAdapter(
                new ImplementationSectionImplementationItemProvider(provider, this.fEditor.getMainResource()));
        adapterFactory.addAdapterFactory(provider);
        adapterFactory.addAdapterFactory(new ScdItemProviderAdapterFactory());
        adapterFactory.addAdapterFactory(new PropertiesEditorPrfItemProviderAdapterFactory());
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected boolean getChildren(Object parent) {
        boolean retVal = false;
        if (parent instanceof SoftPkg || parent instanceof Properties || parent instanceof Struct
                || parent instanceof StructSequence) {
            retVal = true;
        }
        return retVal;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected String getParentPageId(Object item) {
        String pageId = null;
        if (item instanceof Implementation || item instanceof SoftPkg) {
            pageId = ImplementationPage.PAGE_ID;
        } else if (item instanceof Properties || item instanceof AbstractProperty) {
            pageId = PropertiesFormPage.PAGE_ID;
        }
        if (pageId != null) {
            return pageId;
        }
        return super.getParentPageId(item);
    }

}