Package org.locationtech.udig.project.ui

Source Code of org.locationtech.udig.project.ui.AdapterFactoryLabelProviderDecorator$LabelProvider

/*
*    uDig - User Friendly Desktop Internet GIS client
*    http://udig.refractions.net
*    (C) 2004, 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).
*
*/
package org.locationtech.udig.project.ui;

import org.locationtech.udig.project.internal.provider.LoadingPlaceHolder;

import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IDecoratorManager;
import org.eclipse.ui.PlatformUI;

/**
* Connects Layers with the usual workbench decorators.
* <p>
* Similar to the usual eclipse boilerplate code:<pre><code>
* new DecoratingLabelProvider(
*     ProjectExplorer.getProjectExplorer().getAdapterFactory(),
*     PlatformUI.getWorkbench().getDecoratorManager()
* )
* </code></pre>
*
* @author jones
* @since 0.6.0
*/
public class AdapterFactoryLabelProviderDecorator extends DecoratingLabelProvider  {

    StructuredViewer viewer;

    public AdapterFactoryLabelProviderDecorator( AdapterFactory factory, StructuredViewer viewer ) {
        super(new LabelProvider(factory), getWorkbenchDecorators() );
        this.viewer=viewer;
    }

    /** Check to see that our lightweight decorators make it into the mix */
    static final ILabelDecorator getWorkbenchDecorators(){
        IDecoratorManager manager = PlatformUI.getWorkbench().getDecoratorManager();
        ILabelDecorator decorator = manager.getLabelDecorator();
        return decorator;
    }

    /**
     * @see org.eclipse.jface.viewers.DecoratingLabelProvider#getText(java.lang.Object)
     */
    public String getText( Object element ) {
        if( element instanceof LoadingPlaceHolder ){
            return ((LoadingPlaceHolder)element).getText();
        }
        if( !viewer.getControl().isDisposed() )
            return super.getText(element);
        return null;
    }
    @Override
    public Image getImage( Object element ) {
        if( element instanceof LoadingPlaceHolder ){
            return ((LoadingPlaceHolder)element).getImage();
        }
        if( !viewer.getControl().isDisposed() )
            return super.getImage(element);
        return null;
    }
   
    @Override
    public void dispose() {
        getLabelProvider().dispose();
        super.dispose();
    }

    private static class LabelProvider extends AdapterFactoryLabelProvider implements IColorProvider{

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

        public Color getForeground(Object object) {
             // Get the adapter from the factory.
            //
            IColorProvider colorProvider = (IColorProvider)adapterFactory.adapt(object, IColorProvider.class);
            if( colorProvider!=null ){
                return colorProvider.getForeground(object);
            }

            IItemLabelProvider itemLabelProvider = (IItemLabelProvider)adapterFactory.adapt(object, IItemLabelProvider.class);
            if( itemLabelProvider instanceof IColorProvider ){
                colorProvider=(IColorProvider) itemLabelProvider;
                return colorProvider.getForeground(object);
            }
            return null;
        }

        public Color getBackground(Object object) {
             // Get the adapter from the factory.
            //
            IColorProvider colorProvider = (IColorProvider)adapterFactory.adapt(object, IColorProvider.class);
            if( colorProvider!=null ){
                return colorProvider.getBackground(object);
            }

            IItemLabelProvider itemLabelProvider = (IItemLabelProvider)adapterFactory.adapt(object, IItemLabelProvider.class);
            if( itemLabelProvider instanceof IColorProvider ){
                colorProvider=(IColorProvider) itemLabelProvider;
                return colorProvider.getBackground(object);
            }
            return null;
        }
       
       
       
    }
   
}
TOP

Related Classes of org.locationtech.udig.project.ui.AdapterFactoryLabelProviderDecorator$LabelProvider

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.