2012-07-12 15 views
6

Tôi đã tạo một menu bật lên với một mục menu, tôi chỉ muốn bật nó khi tôi nhấp chuột phải vào một mục cây của một loại lớp nhất định nếu không thì hãy vô hiệu hóa nó.Bật/tắt mục trình đơn trong plugin Eclipse

Tôi làm cách nào để đạt được điều này?

Trả lời

6

Bạn có thể thêm trình xử lý sử dụng activeWhen và liên kết nó với id lệnh của trình đơn đó.

Dưới đây là một handler mà làm cho một lệnh hoạt động chỉ khi lựa chọn hiện tại không có sản phẩm nào, và sự lựa chọn là một mục mà có thể được thích nghi với một đối tượng kiểu Widget:

<extension point="org.eclipse.ui.handlers"> 
    <handler class="com.myproject.handlers.ExportWidgetHandler" 
      commandId="com.myproject.commands.exportWidget"> 
    <activeWhen> 
     <with variable="selection"> 
      <iterate ifEmpty="false" operator="and"> 
       <adapt type="com.myproject.objects.Widget"/> 
      </iterate> 
     </with> 
    </activeWhen> 
    </handler> 
</extension> 
+0

những gì hiện phụ tùng có nghĩa là ở đây? có phải lớp tôi muốn kích hoạt menu khi chọn đối tượng của nó không? – becks

+1

Đúng vậy. Bạn có thể có ** TableViewer ** đầy đủ ** Widget **; khi một trong số đó được chọn, menu của bạn sẽ hoạt động. Bạn cũng có thể có một ** TableViewer ** đầy đủ các đối tượng ** WidgetAndDongle ** và một lớp ** WidgetAndDongleToWidgetAdapter ** đã đăng ký cho plugin của bạn, điều chỉnh các đối tượng ** WidgetAndDongle ** bằng cách kéo và trả về chỉ ** Widget ** * phần. Trong trường hợp đó, menu cũng sẽ hoạt động, vì mục đã chọn (** WidgetAndDongle **) có thể được điều chỉnh theo ** Widget **. – stracka