пятница, 25 февраля 2011 г.

Eclipse RCP: Фильтрация UI элементов.

Недавно столкнулась с задачей по отфильтровыванию из моего плагинчика элементов графического интерфейса чужих плагинов.
Суть в том, что вместе со всеми чудесами и приятностями uDig'овского интерфейса, мой плагин наследует от него пару не нужных
мне совершенно кнопок и views, вот и пришлось их выкарчевывать. Ниже описывается стандартный для Eclipse подход.

1. Добавляем экстенш пойнт org.eclipse.ui.activities (примочка появилась с версии 3.0). В целом экстенш используется для управления элементами
пользовательского интерфейса и дает возможность временно или перманентно отфильтровывать эти элементы.

2. Создаем свою activity, задаем ей name и id. По умолчаию activity задизаблена. Тем не менее любители андерстабельных
xml'ей могут прописать явно:
<enabledWhen>
    <with variable="true">
      <equals value="false"/>
    </with>
</enabledWhen>

3. Биндим activity:
<extension point="org.eclipse.ui.activities">
    <activity name="Disablement" id="disablement">
        <enabledWhen>
          <with variable="true">
            <equals value="false"/>
          </with>
        </enabledWhen>
    </activity>
    <activityPatternBinding activityId="disablement"      
 pattern="net.refractions.udig.tool.info/net.refractions.udig.tool.info.infoView"/>
</extension>

4. Радуемся что view исчезла :)