Package org.locationtech.udig.project.element.provider

Source Code of org.locationtech.udig.project.element.provider.ProjectElementAdapterItemProvider

/**
* uDig - User Friendly Desktop Internet GIS client
* http://udig.refractions.net
* (C) 2004-2012, Refractions Research Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html), and the Refractions BSD
* License v1.0 (http://udig.refractions.net/files/bsd3-v10.html).
*
* $Id$
*/
package org.locationtech.udig.project.element.provider;

import java.util.List;

import org.locationtech.udig.core.internal.ExtensionPointList;
import org.locationtech.udig.project.element.ElementPackage;
import org.locationtech.udig.project.element.IGenericProjectElement;
import org.locationtech.udig.project.element.ProjectElementAdapter;
import org.locationtech.udig.project.internal.ProjectPackage;
import org.locationtech.udig.project.internal.provider.ProjectEditPlugin;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.ResourceLocator;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.ui.plugin.AbstractUIPlugin;

/**
* This is the item provider adapter for a {@link org.locationtech.udig.project.element.ProjectElementAdapter} object.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public class ProjectElementAdapterItemProvider extends ItemProviderAdapter implements
        IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
        IItemLabelProvider, IItemPropertySource {
    private static final String LABEL_PROVIDER_ATT = "labelProvider";

    private static final String LABEL_ATT = "label";

    private static final String ICON_ATT = "icon";

    /**
     * This constructs an instance from a factory and a notifier.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public ProjectElementAdapterItemProvider(AdapterFactory adapterFactory) {
        super(adapterFactory);
    }

    /**
     * This returns the property descriptors for the adapted class.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    @Override
    public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
        if (itemPropertyDescriptors == null) {
            super.getPropertyDescriptors(object);

            addNamePropertyDescriptor(object);
            addProjectInternalPropertyDescriptor(object);
            addBackingObjectPropertyDescriptor(object);
        }
        return itemPropertyDescriptors;
    }

    /**
     * This adds a property descriptor for the Name feature.
     *
     * @generated NO MORE
     */
    protected void addNamePropertyDescriptor(Object object) {
        //  TODO uncomment when all emf has been regenerated
        //
        //        itemPropertyDescriptors
        //                .add(createItemPropertyDescriptor(
        //                        ((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
        //                        getResourceLocator(),
        //                        getString("_UI_ProjectElement_name_feature"), //$NON-NLS-1$
        //                        getString(
        //                                "_UI_PropertyDescriptor_description", "_UI_ProjectElement_name_feature", "_UI_ProjectElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        //                        ProjectPackage.Literals.PROJECT_ELEMENT__NAME, true, false, false,
        //                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
    }

    /**
     * This adds a property descriptor for the Project Internal feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    protected void addProjectInternalPropertyDescriptor(Object object) {
        itemPropertyDescriptors
                .add(createItemPropertyDescriptor(
                        ((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
                        getResourceLocator(),
                        getString("_UI_ProjectElement_projectInternal_feature"), //$NON-NLS-1$
                        getString(
                                "_UI_PropertyDescriptor_description", "_UI_ProjectElement_projectInternal_feature", "_UI_ProjectElement_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                        ProjectPackage.Literals.PROJECT_ELEMENT__PROJECT_INTERNAL, true, false,
                        true, null, null, null));
    }

    /**
     * This adds a property descriptor for the Backing Object feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    protected void addBackingObjectPropertyDescriptor(Object object) {
        itemPropertyDescriptors
                .add(createItemPropertyDescriptor(
                        ((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
                        getResourceLocator(),
                        getString("_UI_ProjectElementAdapter_backingObject_feature"), //$NON-NLS-1$
                        getString(
                                "_UI_PropertyDescriptor_description", "_UI_ProjectElementAdapter_backingObject_feature", "_UI_ProjectElementAdapter_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                        ElementPackage.Literals.PROJECT_ELEMENT_ADAPTER__BACKING_OBJECT, true,
                        false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
    }

    private IConfigurationElement findExtension(String extensionId) {
        List<IConfigurationElement> list = ExtensionPointList
                .getExtensionPointList(ProjectElementAdapter.EXT_ID);
        for (IConfigurationElement configurationElement : list) {
            String id = configurationElement.getAttribute("id"); //$NON-NLS-1$
            if (id != null && id.equals(extensionId)) {
                return configurationElement;
            }
        }
        return null;
    }

    /**
     * If the extension's LabelProvider is non-null and implements the
     * IColorProvider interface the foreground color from the provider is
     * returned otherwise null is returned
     */
    public Color getForeground(Object object) {
        ProjectElementAdapter projectElementAdapter = ((ProjectElementAdapter) object);
        IGenericProjectElement backingObject = projectElementAdapter.getBackingObject();
        if (backingObject == null) {
            return null;
        }
        String extensionId = backingObject.getExtensionId();
        IConfigurationElement extension = findExtension(extensionId);
        String labelProviderAtt = extension.getAttribute(LABEL_PROVIDER_ATT);
        Color color = null;
        if (labelProviderAtt != null) {
            try {
                IBaseLabelProvider baseProvider = (IBaseLabelProvider) extension
                        .createExecutableExtension(LABEL_PROVIDER_ATT);
                if (baseProvider instanceof IColorProvider) {
                    IColorProvider labelProvider = (IColorProvider) baseProvider;
                    color = labelProvider.getForeground(backingObject);
                }
            } catch (CoreException e) {
                // not good log this
                ProjectEditPlugin.log("Unable to load the LabelProvider for Element: "
                        + extensionId, e);
            }
        }
        return color;
    }

    /**
     * If the extension's LabelProvider is non-null and implements the
     * IColorProvider interface the background color from the provider is
     * returned otherwise null is returned
     */
    public Color getBackground(Object object) {
        ProjectElementAdapter projectElementAdapter = ((ProjectElementAdapter) object);
        IGenericProjectElement backingObject = projectElementAdapter.getBackingObject();
        if (backingObject == null) {
            return null;
        }
        String extensionId = backingObject.getExtensionId();
        IConfigurationElement extension = findExtension(extensionId);
        String labelProviderAtt = extension.getAttribute(LABEL_PROVIDER_ATT);
        Color color = null;
        if (labelProviderAtt != null) {
            try {
                IBaseLabelProvider baseProvider = (IBaseLabelProvider) extension
                        .createExecutableExtension(LABEL_PROVIDER_ATT);
                if (baseProvider instanceof IColorProvider) {
                    IColorProvider labelProvider = (IColorProvider) baseProvider;
                    color = labelProvider.getBackground(backingObject);
                }
            } catch (CoreException e) {
                // not good log this
                ProjectEditPlugin.log("Unable to load the LabelProvider for Element: "
                        + extensionId, e);
            }
        }
        return color;
    }

    /**
     * If the extension's LabelProvider is non-null and implements the
     * IFontProvider interface the font from the provider is returned otherwise
     * null is returned
     */
    public Font getFont(Object object) {
        ProjectElementAdapter projectElementAdapter = ((ProjectElementAdapter) object);
        IGenericProjectElement backingObject = projectElementAdapter.getBackingObject();
        if (backingObject == null) {
            return null;
        }
        String extensionId = backingObject.getExtensionId();
        IConfigurationElement extension = findExtension(extensionId);
        String labelProviderAtt = extension.getAttribute(LABEL_PROVIDER_ATT);
        Font font = null;
        if (labelProviderAtt != null) {
            try {
                IBaseLabelProvider baseProvider = (IBaseLabelProvider) extension
                        .createExecutableExtension(LABEL_PROVIDER_ATT);
                if (baseProvider instanceof IFontProvider) {
                    IFontProvider labelProvider = (IFontProvider) baseProvider;
                    font = labelProvider.getFont(backingObject);
                }
            } catch (CoreException e) {
                // not good log this
                ProjectEditPlugin.log("Unable to load the LabelProvider for Element: "
                        + extensionId, e);
            }
        }
        return font;
    }

    /**
     * If the object is a {@link ProjectElementAdapter} it returns the image
     * returned by the extension's labelProvider or the icon defined in the
     * extension (if it is defined). If the element is not a
     * ProjectElementAdapter the a default image is returned
     *
     * @generated NOT
     */
    public Object getImage(Object object) {
        ProjectElementAdapter projectElementAdapter = ((ProjectElementAdapter) object);
        IGenericProjectElement backingObject = projectElementAdapter.getBackingObject();
        if (backingObject == null) {
            return null;
        }
        String extensionId = backingObject.getExtensionId();
        IConfigurationElement extension = findExtension(extensionId);
        String labelProviderAtt = extension.getAttribute(LABEL_PROVIDER_ATT);
        Object image = null;
        if (labelProviderAtt != null) {
            try {
                IBaseLabelProvider baseProvider = (IBaseLabelProvider) extension
                        .createExecutableExtension(LABEL_PROVIDER_ATT);
                if (baseProvider instanceof ILabelProvider) {
                    ILabelProvider labelProvider = (ILabelProvider) baseProvider;
                    image = labelProvider.getImage(backingObject);
                }
            } catch (CoreException e) {
                // not good log this
                ProjectEditPlugin.log("Unable to load the LabelProvider for Element: "
                        + extensionId, e);
            }
        }
        String iconPath = extension.getAttribute(ICON_ATT);
        if (image == null && iconPath != null) {
            image = AbstractUIPlugin.imageDescriptorFromPlugin(extension.getNamespaceIdentifier(),
                    iconPath);
        }
        return image;
    }

    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    @Override
    protected boolean shouldComposeCreationImage() {
        return true;
    }

    /**
     * If the object is a {@link ProjectElementAdapter} it returns the text
     * returned by the extension's labelProvider or the label defined in the
     * extension (if it is defined). If the element is not a
     * ProjectElementAdapter the a default text is returned
     *
     * @generated NOT
     */
    public String getText(Object object) {
        ProjectElementAdapter projectElementAdapter = ((ProjectElementAdapter) object);
        IGenericProjectElement backingObject = projectElementAdapter.getBackingObject();
        if (backingObject == null) {
            return projectElementAdapter.getName() + "- No backing object";
        }
        String extensionId = backingObject.getExtensionId();
        IConfigurationElement extension = findExtension(extensionId);
        String labelProviderAtt = extension.getAttribute(LABEL_PROVIDER_ATT);
        String text = null;
        if (labelProviderAtt != null) {
            try {
                IBaseLabelProvider baseProvider = (IBaseLabelProvider) extension
                        .createExecutableExtension(LABEL_PROVIDER_ATT);
                if (baseProvider instanceof ILabelProvider) {
                    ILabelProvider labelProvider = (ILabelProvider) baseProvider;
                    text = labelProvider.getText(backingObject);
                }
            } catch (CoreException e) {
                // not good log this
                ProjectEditPlugin.log("Unable to load the LabelProvider for Element: "
                        + extensionId, e);
            }
        }
        if (text == null) {
            text = extension.getAttribute(LABEL_ATT);
        }
        return text;
    }

    /**
     * This handles model notifications by calling {@link #updateChildren} to update any cached
     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    @Override
    public void notifyChanged(Notification notification) {
        updateChildren(notification);

        switch (notification.getFeatureID(ProjectElementAdapter.class)) {
        case ElementPackage.PROJECT_ELEMENT_ADAPTER__NAME:
        case ElementPackage.PROJECT_ELEMENT_ADAPTER__BACKING_OBJECT:
            fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(),
                    false, true));
            return;
        }
        super.notifyChanged(notification);
    }

    /**
     * Return the resource locator for this item provider's resources.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    @Override
    public ResourceLocator getResourceLocator() {
        return ProjectEditPlugin.INSTANCE;
    }

}
TOP

Related Classes of org.locationtech.udig.project.element.provider.ProjectElementAdapterItemProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.