2015-03-11 3 views
0

Я корректирую свой текущий плагин eclipse для некоторых трюков и сделал свой собственный декоратор для файлов и папок. текущий декоратор файл выглядит следующим образом:вопросов с декодером плагина eclipse

<decorator 
    lightweight="true" 
    id="com.tdm.eclipse.plugin.decorators.readonly" 
    label="readOnly file decorator" 
    icon="icons/readonly.ico" 
    state="true" 
    location="TOP_LEFT" 
    adaptable="true"> 
    <description> 
    readOnly file decorator 
    </description> 
    <enablement> 
    <and> 
    <objectClass name="org.eclipse.core.resources.IFile"/> 
    <objectState name ="readOnly" value="true"/> 
    </and> 
    </enablement> 
</decorator> 

текущие вопросы:

I.), если разрешение файла меняется на Writeable файл декоратор не изменится, если вы не загрузите проект снова (файл из иногда ошибка синхронизации).

II.) Я хочу использовать декоратор только для определенных файлов (в настоящее время все файлы только для чтения оформляются). попытался использовать nameFilter, но он не разрешен внутри декоратора или objectState/objectName.

Любые подсказки, как исправить мои проблемы? спасибо

ответ

0

Вам нужно будет написать класс декоратора (укажите атрибут class) вместо использования атрибута icon.

Метод ILightweightLabelDecorator

public void decorate(Object element, IDecoration decoration) 

будет принят IFile как элемент, так что вы можете сделать вашу фильтрацию по этому вопросу.

Чтобы иметь дело с изменениями атрибутов только для чтения файла, вам необходимо использовать IResourceChangeListener для прослушивания изменений ресурсов.

При обнаружении изменения атрибута вы можете сказать менеджеру декоратора обновить:

IDecoratorManager decoratorMgr = PlatformUI.getWorkbench().getDecoratorManager(); 

decoratorMgr.update("your decorator id"); 

Вы можете использовать

<objectState name ="extension" value="file extension"/> 

для фильтрации по расширению файла в точке расширения.

+0

спасибо за быстрый ответ. уже подделал классы декораторов, но думал, что делать это внутри plugin.xml было бы намного короче. является ли значок для определенных файлов хотя бы выполнимым только с xml? – 12dollar

+0

уже слишком поздно для редактирования, поэтому мне придется публиковать сообщения еще раз: другая потенциальная проблема может заключаться в том, что изменение разрешения файла не выполняется в eclipse, а из внешнего скрипта. может ли IResourceChangeListener заметить это? – 12dollar

+0

Eclipse вообще не видит внешних изменений до тех пор, пока не будет обновлено рабочее пространство или вы не укажете предпочтение «Обновить с использованием собственных перехватчиков или опросов». –

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