2016-08-30 2 views
0

Я создал пользовательский плагин Eclipse, который использует и отображает несколько диалогов, и я хочу знать, могу ли я установить верхнее левое изображение значка с тем, которое я использую в папке icons плагина. Я хочу получить этот значок и установить его вместо стандартного, который использует Eclipse. Я переопределяю метод configureShell(), чтобы изменить заголовок диалога, а также хочу изменить значок.Eclipse Plugin Set Значок изображения для настраиваемого диалогового окна

@Override 
protected void configureShell(Shell parent){ 
    super.configureShell(parent); 
    parent.setText("Choose variant..."); 
    Image icon = new Image(parent.getDisplay(), "icons/best.gif"); - this method does not work as it cannot find the file 
    parent.setImage(icon); 
} 

Я также попытался с помощью getClass().getResource("best.gif") и имеющий изображение в том же пакете, до сих пор не может найти место, я даю (FileNotFoundException), а также, то Image конструктор не принимает объекты URL.

@Override 
protected void configureShell(Shell parent){ 
    super.configureShell(parent); 
    parent.setText("Choose variant..."); 
    Image icon = new Image(parent.getDisplay(), getClass().getResource("icons/best.gif")); 
    parent.setImage(icon); 
} 

Есть ли способ использовать значок, который у меня уже есть в моем плагине eclipse? Основная проблема заключается в получении значка из папки icons плагина и создании объекта Image.
Спасибо.

ответ

1

Вы можете зарегистрировать значок в ваших плагинов activator class как это:

@Override 
protected void initializeImageRegistry(final ImageRegistry reg) { 
    reg.put(IMAGE_PATH, imageDescriptorFromPlugin(PLUGIN_ID, IMAGE_PATH)); 
} 

Путь изображения по сравнению с плагином, например, icons/icon.png.

Вы можете получить доступ к этим изображения с помощью activator class, а также:

final Image image = MyActivatorClass.getDefault().getImageRegistry().get(IMAGE_PATH); 
myShell.setImage(image); 

(Обратите внимание, что я использовал путь изображения в качестве ключа в реестре Image, вы не должны делать это так, но он делает все, немного менее сложным, просто используя тот же статический String.)

+0

Да, это сработало, спасибо. Я могу зарегистрировать несколько изображений? – Justplayit94

+1

Да, вы можете. Также посмотрите на ответ gregs, ваш класс активатора должен расширить 'AbstractUIPlugin', я пропустил этот шаг. – moe

1

Для плагина Eclipse вы используете класс FileLocator, чтобы найти ресурсы в своем плагине.

Для использования изображения что-то вроде:

String path = "icons/best.gif"; 

URL url = FileLocator.find(bundle, new Path(path), null); 

ImageDescriptor desc = ImageDescriptor.createFromURL(url); 

Image image = desc.createImage(); 

Примечание: Вы должны организовать изображение, чтобы быть утилизированы, когда они больше не нужны.

Если вы активируете активатор AbstractUIPlugin, вы также можете использовать ImageRegistry. Реестр будет заниматься утилизацией.

Убедитесь, что каталог icons указан в файле build.properties. Отсутствие этого приведет к проблемам при экспорте вашего плагина.

+0

Он работал с 'Image Registry'' Activator'. Спасибо за совет. – Justplayit94

Смежные вопросы