透视图和视图的图像未在RCP产品中加载

时间:2015-02-18 16:53:56

标签: java eclipse-plugin eclipse-rcp rcp

我在已有的RCP产品中创建了一个新视角,该视角包含两个视图。我对透视图和视图有不同的图像。当我在eclipse中运行产品时,它会获取透视图和所有视图的图像,但是当我将其作为产品导出时,透视图和视图的图像将丢失。每个视图还包含树视图,节点上的可扩展图标也缺失。我不知道造成这个问题的原因是什么。因为它在eclipse中工作,但在导出的产品中不起作用。在导出的产品中,所有功能也都有效。

树的我的标签提供者类是

 private static class ComponentsTreeLabelProvider extends LabelProvider implements IColorProvider{

    private static ImageRegistry imageRegistry = new ImageRegistry();


    @Override
    public Image getImage(Object element) {
        SoftwareArchitectureModel softModel = activeArchitectureModelReader.getArchitectureModel();
        ImageDescriptor imageDescriptor = null;

        if(element instanceof Component){
            if(softModel.isEnabled(element))
                imageDescriptor = Activator.getDefault().getImageRegistry().getDescriptor(Activator.COMPONENT_ID);
            else
                imageDescriptor = Activator.getDefault().getImageRegistry().getDescriptor(Activator.COMPONENT_DISABLED_ID);
        }

        if (imageDescriptor == null)
            return null;

        Image image = imageRegistry.get(imageDescriptor.toString());
        if (image == null) {
            image = imageDescriptor.createImage();
            imageRegistry.put(imageDescriptor.toString(), image);
        }           
        return image;
    }

    @Override
    public String getText(Object element) {

        if(element instanceof Component)
            return ((Component) element).getName();

        return null;
    }

    @Override
    public Color getForeground(Object element) {
        SoftwareArchitectureModel softModel = activeArchitectureModelReader.getArchitectureModel();
        if(element instanceof Component){
            if(softModel.isEnabled(element))
                return Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
            else
                return Display.getCurrent().getSystemColor(SWT.COLOR_RED);
        }
        return null;
    }

    @Override
    public Color getBackground(Object element) {
        return null;
    }
}

插件名称是:myproject.memorymodeling.ui在此插件下我有一个图标文件夹,其中所有图像都可用。在清单文件Under Extensions中,我添加了

 org.eclipse.ui.views 

包含视图和图标字段下我提供的icons / imagename.png

当我导出产品时,任何人都知道为什么我的图像丢失了?

由于

1 个答案:

答案 0 :(得分:3)

您希望包含在插件中的所有内容都必须列在“build.properties”文件中(单独或整个文件夹)。

当您通过运行Eclipse中的代码进行测试时,不会使用build.properties,因此很容易错过包含的内容。