com.siteview.mde.internal.runtime.registry.RegistryBrowserLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.siteview.mde.internal.runtime.registry.RegistryBrowserLabelProvider.java

Source

/*******************************************************************************
 * Copyright (c) 2000, 2009 IBM Corporation and others.
 * 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
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package com.siteview.mde.internal.runtime.registry;

import com.siteview.mde.internal.runtime.*;
import com.siteview.mde.internal.runtime.registry.model.*;
import java.util.Arrays;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.*;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
import org.osgi.framework.Constants;

public class RegistryBrowserLabelProvider extends StyledCellLabelProvider implements ILabelProvider {

    private Image fPluginImage;
    private Image fActivePluginImage;
    private Image fUnresolvedPluginImage;
    private Image fLibraryImage;
    private Image fRuntimeImage;
    private Image fGenericTagImage;
    private Image fGenericAttrImage;
    private Image fExtensionImage;
    private Image fExtensionsImage;
    private Image fExtensionPointImage;
    private Image fExtensionPointsImage;
    private Image fRequiresImage;
    private Image fExpReqPluginImage;
    private Image fReqPluginImage;
    private Image fPluginsImage;
    private Image fLocationImage;
    private Image fDisabledImage;
    private Image fExporterImage;
    private Image fImporterImage;
    private Image fServiceImage;
    private Image fPropertyImage;
    private Image fServicePropertyImage;
    private Image fFragmentImage;
    private Image fPackageImage;
    private RegistryBrowser fRegistryBrowser;

    public RegistryBrowserLabelProvider(RegistryBrowser browser) {
        fRegistryBrowser = browser;
        fPluginImage = PDERuntimePluginImages.DESC_PLUGIN_OBJ.createImage();
        fReqPluginImage = PDERuntimePluginImages.DESC_REQ_PLUGIN_OBJ.createImage();
        fExtensionPointImage = PDERuntimePluginImages.DESC_EXT_POINT_OBJ.createImage();
        fExtensionPointsImage = PDERuntimePluginImages.DESC_EXT_POINTS_OBJ.createImage();
        fExtensionImage = PDERuntimePluginImages.DESC_EXTENSION_OBJ.createImage();
        fExtensionsImage = PDERuntimePluginImages.DESC_EXTENSIONS_OBJ.createImage();
        fRequiresImage = PDERuntimePluginImages.DESC_REQ_PLUGINS_OBJ.createImage();
        fLibraryImage = PDERuntimePluginImages.DESC_JAVA_LIB_OBJ.createImage();
        fGenericTagImage = PDERuntimePluginImages.DESC_GENERIC_XML_OBJ.createImage();
        fGenericAttrImage = PDERuntimePluginImages.DESC_ATTR_XML_OBJ.createImage();
        fRuntimeImage = PDERuntimePluginImages.DESC_RUNTIME_OBJ.createImage();
        fLocationImage = PDERuntimePluginImages.DESC_LOCATION.createImage();
        fExporterImage = PDERuntimePluginImages.DESC_EXP_OBJ.createImage();
        fImporterImage = PDERuntimePluginImages.DESC_IMP_OBJ.createImage();
        fServiceImage = PDERuntimePluginImages.DESC_SERVICE_OBJ.createImage();
        fPropertyImage = PDERuntimePluginImages.DESC_PROPERTY_OBJ.createImage();
        fPluginsImage = PDERuntimePluginImages.DESC_PLUGINS_OBJ.createImage();
        fFragmentImage = PDERuntimePluginImages.DESC_FRAGMENT_OBJ.createImage();
        fPackageImage = PDERuntimePluginImages.DESC_PACKAGE_OBJ.createImage();

        ImageDescriptor activePluginDesc = new OverlayIcon(PDERuntimePluginImages.DESC_PLUGIN_OBJ,
                new ImageDescriptor[][] { { PDERuntimePluginImages.DESC_RUN_CO } });
        fActivePluginImage = activePluginDesc.createImage();

        ImageDescriptor disabledPluginDesc = new OverlayIcon(PDERuntimePluginImages.DESC_PLUGIN_OBJ,
                new ImageDescriptor[][] { { PDERuntimePluginImages.DESC_ERROR_CO } });
        fDisabledImage = disabledPluginDesc.createImage();

        ImageDescriptor unresolvedPluginDesc = new OverlayIcon(PDERuntimePluginImages.DESC_PLUGIN_OBJ,
                new ImageDescriptor[][] { { PDERuntimePluginImages.DESC_ERROR_CO } });
        fUnresolvedPluginImage = unresolvedPluginDesc.createImage();

        ImageDescriptor exportedRequiresDesc = new OverlayIcon(PDERuntimePluginImages.DESC_REQ_PLUGIN_OBJ,
                new ImageDescriptor[][] { { PDERuntimePluginImages.DESC_EXPORT_CO } });
        fExpReqPluginImage = exportedRequiresDesc.createImage();

        ImageDescriptor servicePropertyDesc = new OverlayIcon(PDERuntimePluginImages.DESC_PROPERTY_OBJ,
                new ImageDescriptor[][] { { PDERuntimePluginImages.DESC_DEFAULT_CO } });
        fServicePropertyImage = servicePropertyDesc.createImage();

    }

    public void dispose() {
        fPluginImage.dispose();
        fActivePluginImage.dispose();
        fUnresolvedPluginImage.dispose();
        fReqPluginImage.dispose();
        fExtensionPointImage.dispose();
        fExtensionPointsImage.dispose();
        fExtensionImage.dispose();
        fExtensionsImage.dispose();
        fRequiresImage.dispose();
        fExpReqPluginImage.dispose();
        fLibraryImage.dispose();
        fGenericTagImage.dispose();
        fGenericAttrImage.dispose();
        fRuntimeImage.dispose();
        fLocationImage.dispose();
        fDisabledImage.dispose();
        fImporterImage.dispose();
        fExporterImage.dispose();
        fServiceImage.dispose();
        fPropertyImage.dispose();
        fServicePropertyImage.dispose();
        fPluginsImage.dispose();
        fFragmentImage.dispose();
        fPackageImage.dispose();
    }

    public Image getImage(Object element) {
        if (element instanceof Bundle) {
            Bundle bundle = (Bundle) element;

            if (bundle.getFragmentHost() != null)
                return fFragmentImage;

            if (!bundle.isEnabled())
                return fDisabledImage;

            switch (bundle.getState()) {
            case Bundle.ACTIVE:
                return fActivePluginImage;
            case Bundle.UNINSTALLED:
                return fUnresolvedPluginImage;
            case Bundle.INSTALLED:
                if (!bundle.isEnabled())
                    return fUnresolvedPluginImage;
            default:
                return fPluginImage;
            }
        }

        if (element instanceof ServiceName) {
            return fServiceImage;
        }

        if (element instanceof ServiceRegistration) {
            return fPluginImage;
        }

        if (element instanceof Property) {
            Property property = (Property) element;
            // special handling for property objectClass
            if (property.getName().equals(Constants.OBJECTCLASS)) {
                return PDERuntimePluginImages.get(PDERuntimePluginImages.IMG_CLASS_OBJ);
            }
            // special handling for builtin service properties
            if (property.getName().startsWith("service.") || property.getName().startsWith("component.")) { //$NON-NLS-1$ //$NON-NLS-2$
                return fServicePropertyImage;
            }
            return fPropertyImage;
        }

        if (element instanceof Folder) {
            int id = ((Folder) element).getId();
            switch (id) {
            case Folder.F_EXTENSIONS:
                return fExtensionsImage;
            case Folder.F_EXTENSION_POINTS:
                return fExtensionPointsImage;
            case Folder.F_IMPORTS:
                return fRequiresImage;
            case Folder.F_LIBRARIES:
                return fRuntimeImage;
            case Folder.F_REGISTERED_SERVICES:
                return fExporterImage;
            case Folder.F_SERVICES_IN_USE:
                return fImporterImage;
            case Folder.F_PROPERTIES:
                return fPropertyImage;
            case Folder.F_USING_BUNDLES:
                return fPluginsImage;
            case Folder.F_FRAGMENTS:
                return fPluginsImage;
            case Folder.F_EXPORTED_PACKAGES:
            case Folder.F_IMPORTED_PACKAGES:
                return fPackageImage;
            }
            return null;
        }

        if (element instanceof Extension)
            return fExtensionImage;

        if (element instanceof ExtensionPoint)
            return fExtensionPointImage;

        if (element instanceof BundlePrerequisite) {
            BundlePrerequisite prereq = (BundlePrerequisite) element;

            if (prereq.isPackage())
                return fPackageImage;

            return prereq.isExported() ? fExpReqPluginImage : fReqPluginImage;
        }

        if (element instanceof BundleLibrary)
            return fLibraryImage;

        if (element instanceof ConfigurationElement)
            return fGenericTagImage;

        if (element instanceof Attribute) {
            Attribute attr = (Attribute) element;
            if (Attribute.F_LOCATION.equals(attr.getName())) {
                return fLocationImage;
            }
            if (Attribute.F_BUNDLE.equals(attr.getName())) {
                return fPluginImage;
            }
            return fGenericAttrImage;
        }

        return null;
    }

    protected StyledString getStyledText(Object element) {

        if (element instanceof Bundle) {
            Bundle bundle = ((Bundle) element);

            StyledString sb = new StyledString(bundle.getSymbolicName());
            String version = bundle.getVersion();
            if (version != null) {
                sb.append(" (", StyledString.DECORATIONS_STYLER); //$NON-NLS-1$ 
                sb.append(version, StyledString.DECORATIONS_STYLER);
                sb.append(")", StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }
            String host = bundle.getFragmentHost();
            if (host != null) {
                sb.append(" [", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
                sb.append(host, StyledString.QUALIFIER_STYLER);
                sb.append("]", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
            }
            return sb;
        }

        if (element instanceof ServiceRegistration) {
            ServiceRegistration ref = (ServiceRegistration) element;
            String identifier = " (id=" + ref.getId() + ")"; //$NON-NLS-1$ //$NON-NLS-2$

            StyledString ss = new StyledString();
            if (fRegistryBrowser.getGroupBy() == RegistryBrowser.BUNDLES) {
                String[] classes = ref.getName().getClasses();
                ss.append(Arrays.asList(classes).toString());

            } else {
                ss.append(MDERuntimeMessages.RegistryBrowserLabelProvider_RegisteredBy);
                ss.append(ref.getBundle());
            }

            ss.append(identifier, StyledString.DECORATIONS_STYLER);

            return ss;
        }

        if (element instanceof ServiceName) {
            return new StyledString(Arrays.asList(((ServiceName) element).getClasses()).toString());
        }

        if (element instanceof Folder) {
            String text = null;
            switch (((Folder) element).getId()) {
            case Folder.F_IMPORTS:
                text = MDERuntimeMessages.RegistryView_folders_imports;
                break;
            case Folder.F_IMPORTED_PACKAGES:
                text = MDERuntimeMessages.RegistryBrowserLabelProvider_ImportedPackages;
                break;
            case Folder.F_EXPORTED_PACKAGES:
                text = MDERuntimeMessages.RegistryBrowserLabelProvider_ExportedPackages;
                break;
            case Folder.F_LIBRARIES:
                text = MDERuntimeMessages.RegistryView_folders_libraries;
                break;
            case Folder.F_EXTENSION_POINTS:
                text = MDERuntimeMessages.RegistryView_folders_extensionPoints;
                break;
            case Folder.F_EXTENSIONS:
                text = MDERuntimeMessages.RegistryView_folders_extensions;
                break;
            case Folder.F_REGISTERED_SERVICES:
                text = MDERuntimeMessages.RegistryBrowserLabelProvider_registeredServices;
                break;
            case Folder.F_SERVICES_IN_USE:
                text = MDERuntimeMessages.RegistryBrowserLabelProvider_usedServices;
                break;
            case Folder.F_PROPERTIES:
                text = MDERuntimeMessages.RegistryBrowserLabelProvider_Properties;
                break;
            case Folder.F_USING_BUNDLES:
                text = MDERuntimeMessages.RegistryBrowserLabelProvider_UsingBundles;
                break;
            case Folder.F_FRAGMENTS:
                text = MDERuntimeMessages.RegistryBrowserLabelProvider_Fragments;
                break;
            }

            if (text != null) {
                return new StyledString(text);
            }
        }
        if (element instanceof Extension) {
            if (((RegistryBrowserContentProvider) fRegistryBrowser
                    .getAdapter(IContentProvider.class)).isInExtensionSet) {
                Extension extension = ((Extension) element);

                StyledString ss = new StyledString(extension.getExtensionPointUniqueIdentifier());
                String name = extension.getLabel();
                if (name != null && name.length() > 0) {
                    ss.append("[ ", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
                    ss.append(name, StyledString.QUALIFIER_STYLER);
                    ss.append(']', StyledString.QUALIFIER_STYLER);
                }

                return ss;
            }

            String contributor = ((Extension) element).getNamespaceIdentifier();
            return new StyledString(
                    NLS.bind(MDERuntimeMessages.RegistryBrowserLabelProvider_contributedBy, contributor));

        }
        if (element instanceof ExtensionPoint) {
            ExtensionPoint extPoint = (ExtensionPoint) element;

            StyledString ss = new StyledString(extPoint.getUniqueIdentifier());
            String name = extPoint.getLabel();
            if (name != null && name.length() > 0) {
                ss.append(" [", StyledString.QUALIFIER_STYLER); //$NON-NLS-1$
                ss.append(name, StyledString.QUALIFIER_STYLER);
                ss.append(']', StyledString.QUALIFIER_STYLER);
            }

            return ss;
        }
        if (element instanceof BundlePrerequisite) {
            BundlePrerequisite prereq = (BundlePrerequisite) element;

            StyledString ss = new StyledString(prereq.getName());

            String version = prereq.getVersion();
            if (version != null) {
                if (Character.isDigit(version.charAt(0)))
                    version = '(' + version + ')';
                ss.append(' ').append(version, StyledString.DECORATIONS_STYLER);
            }

            return ss;
        }

        if (element instanceof BundleLibrary) {
            return new StyledString(((BundleLibrary) element).getLibrary());
        }

        if (element instanceof ConfigurationElement) {
            return new StyledString(((ConfigurationElement) element).getName());
        }
        if (element instanceof Attribute) {
            Attribute attribute = (Attribute) element;
            if (Attribute.F_BUNDLE.equals(attribute.getName())) {
                return new StyledString(attribute.getValue());
            }

            return new StyledString(attribute.getName() + " = " + attribute.getValue()); //$NON-NLS-1$
        }
        if (element instanceof Property) {
            Property property = (Property) element;
            return new StyledString(property.getName() + " = " + property.getValue()); //$NON-NLS-1$
        }

        return new StyledString(element == null ? "" : element.toString()); //$NON-NLS-1$
    }

    public void update(ViewerCell cell) {
        StyledString string = getStyledText(cell.getElement());
        cell.setText(string.getString());
        cell.setStyleRanges(string.getStyleRanges());
        cell.setImage(getImage(cell.getElement()));
        super.update(cell);
    }

    public String getText(Object element) {
        return getStyledText(element).getString();
    }
}