Как получить больше IExtensions от org.eclipse.ui.ide.projectNatureImages? - PullRequest
0 голосов
/ 18 декабря 2018

я получаю природу java, используя это:

IExtensionPoint ex= Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.core.resources.natures");

и получаю изображения природы, используя это:

 IExtensionPoint ex2= Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.ui.ide.projectNatureImages");

поэтому у меня есть объект, который содержит элемент IExtension и элемент Image:

public class NatureInformationWrapper {

    private IExtension extension;
    private Image image;

    public IExtension getExtension() {
        return extension;
    }
    public void setExtension(IExtension extension) {
        this.extension = extension;
    }

    public Image getImage() {
        return image;
    }
    public void setImage(Image image) {
        this.image = image;
    }
}

Я устанавливаю IExtensions, делая это:

ArrayList<String> identifiers=new ArrayList<String>();
ArrayList<NatureInformationWrapper> extensionsList= new 
ArrayList<NatureInformationWrapper>();

for(int index=0; index< extensions.length; index++) {
    extensionsList.add(niw);
}

, и я устанавливаю изображение следующим образом:

    for(int index2=0; index2<imageExtensionsList.size(); index2++) {
            IConfigurationElement[] configurationElements=imageExtensionsList.get(index2).getConfigurationElements();
            for(int index3=0; index3<configurationElements.length; index3++) {              
                String natureId=imageExtensionsList.get(index2).getConfigurationElements()[index3].getAttribute("natureId");
                for(int listInputIndex=0; listInputIndex<extensionsList.size(); listInputIndex++) {
                    String currentNatureId=extensionsList.get(listInputIndex).getExtension().getUniqueIdentifier();
                    if(natureId.equals(currentNatureId)) {
                        Image img=null;

                        String icon = configurationElements[index3].getAttribute("icon");
                        icon = icon.replace("$nl$", "");
                        if (icon !=null) {
                            final String   cont  = configurationElements[index3].getContributor().getName();
                            final Bundle   bundle= Platform.getBundle(cont);
                            final URL      entry = bundle.getEntry(icon);
                            final ImageDescriptor des = ImageDescriptor.createFromURL(entry);
                            img= des.createImage();
                        }
                     extensionsList.get(listInputIndex).setImage(img);
                    }
                }

            }


    }

Но ex2.getExtensions(); всегда возвращаетсяодин элемент, и это IExtension для org.eclipse.jdt.core.javanature.

Мой вопрос: как я могу получить больше IExtensions от ex2.getExtensions();?

мне нужно что-то установить?

...