2009-08-27 28 views
12

Trong phát triển plugin eclipse, tôi muốn thêm một mục (ví dụ: Mystyle) vào menu bật lên.Cách thêm các mục trong menu bật lên?

Ví dụ một,

Project Explorer -> Right Click -> New -> MyStyle

Làm thế nào tôi có thể đạt được điều này trong Eclipse Plugin phát triển?

Trân Mathan

Trả lời

23

Something như thế này nên làm điều đó (sau this thread):

<extension 
     point="org.eclipse.ui.menus"> 
     <menuContribution 
     locationURI= 
     "popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions"> 
     <command 
       commandId="myplugin.command.mycommand" 
       icon="icons/etool16/mycommand.png" 
       label="Run mycommand" 
       mnemonic="M1+P" 
       tooltip="Do something with this project"> 
     </command> 
     </menuContribution> 
    </extension> 

Xem Menucontribution

Định nghĩa một tập có thứ tự của bổ sung vào cơ cấu chỉ huy UI. Các phần tử được xác định sẽ được thêm vào cấu trúc giao diện người dùng lệnh tại vị trí được chỉ định bởi phần tử locationURI.

Đây phải là điểm bắt đầu cho tất cả các đóng góp vào menu, thanh công cụ hoặc trang trí, bất cứ nơi nào chúng xuất hiện trong giao diện người dùng.

  • locationURI - Một đặc điểm kỹ thuật URI xác định điểm chèn tại đó bổ sung chứa sẽ được thêm vào.
    Định dạng cho URI bao gồm ba phần cơ bản:
    • Đề án:. Một trong những "menu", "cửa sổ bật lên" hoặc" thanh công cụ
      Cho biết loại của người quản lý sử dụng để xử lý sự đóng góp
    • Id: Đây là id của trình đơn hiện tại, id chế độ xem hoặc id của trình chỉnh sửa 'loại'
    • Truy vấn: Định dạng truy vấn là <placement>=<id> trong đó: <placement> là "trước" hoặc "sau" và <id> là id của một mục menu hiện có

Show Readme Action

Xem thêm org.eclipse.ui.popupMenus, org.eclipse.ui.menus -extension điểm với một menuContributionlocationURI trỏ -attribute của nó để popup:org.eclipse.ui.popup.any?after=additions.
Cảnh báo, như Prashant Bhate đề cập trong nhận xét, gói đó org.eclipse.ui.popupMenus không còn được dùng nữa.
Xem câu hỏi Missing link between objectContribution and command để biết thêm.

+1

Tôi nghĩ rằng org.eclipse.ui.popupMenus bị xóa bây giờ, hãy xem http://stackoverflow.com/questions/5915550/missing-link-between-objectcontribution-and-command –

+1

@Prashant: điểm rất tốt. Tôi đã chỉnh sửa câu trả lời của tôi để phản ánh nhận xét của bạn. – VonC

+0

@VonC Các liên kết eclipse.org trong câu trả lời của bạn hiện đã bị hỏng. – reprogrammer

8

tôi mất một lúc để giải quyết vấn đề chính xác này ngay bây giờ, vì vậy tôi sẽ trả lời câu hỏi của OP (thêm vào File-> New menu).

Nơi đóng góp (common.new.menu)

nhờ bài đăng này, tôi phát hiện ra rằng bạn muốn đóng góp vào cửa sổ bật lên: common.new.menu? after = new. lý do tại sao bạn hỏi? nếu tôi biết; nhưng nó đã có tác dụng.

quả

(Khi C/C++ là quan điểm tích cực)

enter image description here

(W hen 'không' C/C++ như quan điểm tích cực)

enter image description here

Dưới đây là ví dụ của tôi plugin:

<?xml version="1.0" encoding="UTF-8"?> 
<?eclipse version="3.4"?> 
<plugin> 
    <extension 
     point="org.eclipse.ui.commands"> 
     <command 
      defaultHandler="com.justin.debug.SampleHandler" 
      id="com.justin.debug.commands.sampleCommand" 
      name="Sample Command"> 
     </command> 
    </extension> 
    <extension 
     point="org.eclipse.ui.menus"> 
     <menuContribution 
      locationURI="popup:common.new.menu?after=new"> 
     <command 
       commandId="com.justin.debug.commands.sampleCommand" 
       icon="icons/sample.gif" 
       label="New Root Command From Justin" 
       style="push"> 
      <visibleWhen 
        checkEnabled="false"> 
       <with 
        variable="activeWorkbenchWindow.activePerspective"> 
        <equals 
         value="org.eclipse.cdt.ui.CPerspective"> 
        </equals> 
       </with> 
      </visibleWhen> 
     </command> 
     </menuContribution> 
     <menuContribution 
      locationURI="popup:common.new.menu?after=new"> 
     <menu 
       id="org.ecilpse.ui.navigator.ProjectExplorer.helloJustin" 
       label="Hello Justin"> 
      <command 
        commandId="com.justin.debug.commands.sampleCommand" 
        icon="icons/sample.gif" 
        label="New Submenu Command From Justin" 
        style="push"> 
      </command> 
     </menu> 
     </menuContribution> 
    </extension> 
</plugin> 

tôi đã thêm một bộ phận quan trọng ở đây, 'visibleWhen' tham số. Điều này chỉ hiển thị Lệnh gốc mới từ Justin khi ở trong phối cảnh C/C++. Hóa ra là khó khăn để tìm ra điều đó, do đó tôi đưa vào ví dụ. Dưới đây là tài nguyên hữu ích tôi đào lên trong khi nghiên cứu rằng:

tôi đào lên tên của C Perspective org.eclipse.cdt.ui.CPerspective bởi đau đớn đào qua plugin.xml của plugin org.eclipse.cdt.ui.

ngay bây giờ nếu có ai có thể cho tôi biết cách dễ dàng tìm kiếm các tài nguyên/uri/tài sản này trong tương lai ... omg.

Các vấn đề liên quan