代码之家  ›  专栏  ›  技术社区  ›  Wearybands

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

  •  1
  • Wearybands  · 技术社区  · 10 年前

    我在已经存在的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在这个插件下,我有一个图标文件夹,所有的图像都在其中。在扩展下的清单文件中,我添加了

     org.eclipse.ui.views 
    

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

    有人知道我出口产品时为什么会丢失图像吗?

    谢谢

    1 回复  |  直到 10 年前
        1
  •  3
  •   greg-449    10 年前

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

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