Package org.bndtools.core.ui.resource

Source Code of org.bndtools.core.ui.resource.RequirementWithResourceLabelProvider

package org.bndtools.core.ui.resource;

import org.bndtools.utils.resources.ResourceUtils;
import org.eclipse.jface.viewers.StyledString;
import org.osgi.framework.Version;
import org.osgi.resource.Capability;
import org.osgi.resource.Namespace;
import org.osgi.resource.Requirement;
import org.osgi.resource.Resource;

public class RequirementWithResourceLabelProvider extends RequirementLabelProvider {

    @Override
    public StyledString getLabel(Requirement requirement) {

        StyledString label = new StyledString();

        Resource resource = requirement.getResource();
        if (!(resource == null || resource.getCapabilities("osgi.content").isEmpty()))
            appendResourceLabel(label, resource);

        if (Namespace.RESOLUTION_OPTIONAL.equals(requirement.getDirectives().get(Namespace.REQUIREMENT_RESOLUTION_DIRECTIVE)))
            label.append(" optionally", StyledString.QUALIFIER_STYLER);
        label.append(" requires ", StyledString.QUALIFIER_STYLER);

        super.getLabel(label, requirement);

        return label;
    }

    protected void appendResourceLabel(StyledString label, Resource resource) {
        Capability identity = ResourceUtils.getIdentityCapability(resource);
        String name = ResourceUtils.getIdentity(identity);
        if (name == null) {
            if (resource != null) {
                name = resource.toString();
            } else {
                name = "<unknown>";
            }
        }
        label.append(name);

        Version version = ResourceUtils.getVersion(identity);
        if (version != null)
            label.append(" " + version, StyledString.COUNTER_STYLER);
    }

}
TOP

Related Classes of org.bndtools.core.ui.resource.RequirementWithResourceLabelProvider

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.