Как активировать обработчик Eclipse UI с несколькими условиями - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь активировать команду копирования с помощью «обработчика» в точке расширения для нескольких условий.Если я добавлю условие для работы с одним представлением, оно будет работать правильно.

 <extension
         point="org.eclipse.ui.handlers">
      <handler class="example.xyz.CopyHandler"
            commandId="org.eclipse.ui.edit.copy">
         <activeWhen
           <with
               variable="activePartId">
        </with>
           <equals
          value="example.xyz.view1">
           </equals>
        </with> 
     </activeWhen>
  </handler>
   </extension>

Но когда я использую несколько условий, таких как ..
Условия:

  • Должен открываться, когда активны «view1» или «view2».
  • , а продолжение выделения должно быть ровно 1, а экземпляр выделения должен быть example.xyz.ICharacteristicValue.

Я пробовал с этим фрагментом, он не работает.что не так в этом коде?

 <extension
             point="org.eclipse.ui.handlers">
    <handler
            class="example.xyz.CopyHandler"
            commandId="org.eclipse.ui.edit.copy">
         <activeWhen>
                 <with
                     variable="activePartId">
                 <iterate
                       operator="or">
                    <equals
                 value="example.xyz.view1">
                    </equals>
                    <equals
                          value="example.xyz.view2">
                    </equals>
                 </iterate>
               </with>
               <with
                     variable="selection">
                  <count
                        value="1">
                  </count>
                  <iterate>
                     <instanceof
                           value="example.xyz.ICharacteristicValue">
                     </instanceof></iterate>
               </with> 
       </activeWhen>
</handler>
 </extension>

1 Ответ

1 голос
/ 14 июня 2019

<activeWhen принимает только один дочерний элемент - у вас есть два.Вам нужно объединить их с <and>:

<activeWhen>
   <and>
      <with
         variable="activePartId">
       .....
      </with>
      <with
         variable="selection">
       .....
      </with>
  </and>
</activeWhen>
...