среда, 2 марта 2011 г.

uDig: Как убрать Tool с CoolBar'a:

Описанный в предыдущем посте подход тем не менее не сработал для элементов uDig coolbar'a. Поэтому пришлось сочинять, кое что дополнительное. Надо сказать, что uDig производил и производит на меня угнетающее впечатление отсутствием документации, тем не менее зацепка нашлась:

http://www.mail-archive.com/udig-devel@lists.refractions.net/msg05384.html

однако в новых версиях совсем по жесткому хардкорить уже не надо. В целом получилось вполне симпотично:
1. Добавляем extension point:
<extension
      point="net.refractions.udig.project.ui.toolManagers">
      <toolManager
            class="com.neopux.udigproject.plugin.CustomUDIGToolManager"
            id="com.neopux.udigproject.customUDIGToolManager">
      </toolManager>
 </extension>
И класс CustomUDIGToolManager, который наследуем от ToolManager.

2. Этот extension point лишь регистрирует "кандидатов" в ToolManager'ы. Но тот, который будет рулить в вашем плагине задается в Preferences с ключом IToolManager.P_TOOL_MANAGER. Мы можем задать это значение явно прописав в файле plugin_customization.ini:

net.refractions.udig.project.ui/toolManager = com.neopux.udigproject.customUDIGToolManager

3. Tеперь у нас есть кастомный ToolManager и можно бесчинствовать сколько влезет. К тому же специально для преследуемой нами цели авторы Udig оставили костыль. Перееопределяем метод filterTool в котором отфильтровываем все тулы, которые не нужны:
@Override
protected boolean filterTool(String categoryId, ToolProxy proxy,
            Class categoryType)
{
     String filter = "net.refractions.udig.tool.info.infoMode";
     return filter.equals(proxy.getId());
}

4. Запускаем и радуемся, что исчезла вторая часть не нужных элементов :)

Комментариев нет:

Отправить комментарий