2011-01-21 50 views
5

Tôi đang làm việc trên ứng dụng RCP nhỏ bé của mình, cần có trình chuyển đổi quan điểm tùy chỉnh để kiểm soát chế độ xem mà người dùng có thể truy cập. Vì vậy, ở đây tôi đang cố gắng thêm một thanh công cụ với một vài nút để chuyển đổi các phối cảnh.Thanh công cụ định vị trong Eclipse/RCP

Tôi figured cách tốt nhất để có một số kiểm soát trên các công cụ sẽ được thêm một thanh công cụ thứ hai trong ApplicationActionBarAdvisor mà sẽ gọi hành động/lệnh của tôi để chuyển đổi quan điểm.

Vì vậy, chúng ta hãy nói rằng tôi tạo ra một ToolBarContributionItem thứ hai trong phương pháp fillCoolBar, mà sẽ trông như thế này:

protected void fillCoolBar(ICoolBarManager coolBar) { 
    IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); 
    ToolBarContributionItem mainBar = new ToolBarContributionItem(toolbar, "main"); 
    coolBar.add(mainBar); 

    toolbar.add(openViewAction); 
    toolbar.add(newConnectionAction); 

    //Custom perspective switcher bar 
    IToolBarManager perspectives = new ToolBarManager(SWT.FLAT | SWT.RIGHT); 
    ToolBarContributionItem perspectiveBar = new ToolBarContributionItem(perspectives, "perspectives"); 
    coolBar.add(perspectiveBar);   
} 

Bất kỳ ý tưởng làm thế nào tôi có thể sắp xếp các thanh công cụ vì vậy nó sẽ được ở bên phải của cửa sổ? Tôi rất muốn có vị trí này được mã hóa.

Kính trọng, Michael

Trả lời

4

Tôi đã có một vấn đề tương tự: Tôi muốn có một thanh công cụ chuẩn ở phía bên trái và một văn bản tìm kiếm và nút bên trái. Tôi thấy không thực sự là một giải pháp. Những gì tôi đã làm là tôi ghi đè lên phương thức điền vào trong ToolBarContributionItem để bố trí của CoolBarManager được thay đổi. Đây không phải là một giải pháp tốt, nó hoạt động trên Windows (mà là đủ trong trường hợp này), nhưng KHÔNG trên Linux, nhưng nó có thể giúp:

protected void fillCoolBar(ICoolBarManager coolBar) { 
    coolBar.setLockLayout(true); 

    IToolBarManager mainToolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); 
    coolBar.add(new ToolBarContributionItem(mainToolBar, "main"));  
    fillMainToolBar(mainToolBar); 

    IToolBarManager searchToolBar = new ToolBarManager(SWT.FLAT | SWT.RIGHT); 
    ToolBarContributionItem searchBarItem = new ToolBarContributionItem(
      searchToolBar, "search") { 
     @Override 
     public void fill(CoolBar coolBar, int index) { 
      super.fill(coolBar, index); 
      // change the layout of the cool-bar to have the search 
      // controls on the right side 
      GridLayout coolBarLayout = new GridLayout(2, false); 
      coolBarLayout.marginHeight = 0; 
      coolBarLayout.marginWidth = 0; 
      coolBarLayout.horizontalSpacing = 20; 
      coolBarLayout.verticalSpacing = 0; 
      coolBarLayout.marginLeft = 10; 
      coolBar.setLayout(coolBarLayout); 
      GridData mainGridData = new GridData(SWT.LEFT, SWT.CENTER, true, 
        false); 
      GridData searchGridData = new GridData(SWT.RIGHT, SWT.CENTER, 
        false, false); 
      coolBar.getItem(0).getControl().setLayoutData(mainGridData); 
      coolBar.getItem(1).getControl().setLayoutData(searchGridData); 
     } 
    }; 
    coolBar.add(searchBarItem); 
    searchToolBar.add(new SearchTextControl()); 
    searchToolBar.add(searchAction); 
} 
+0

Bạn có thể giải thích tại sao nó không hoạt động trên Linux? Tôi không thấy ma thuật phụ thuộc nền tảng nào ở đây. (Tôi không sử dụng Linux, tôi chỉ tò mò. :)) –

4

Tại sao các bạn muốn mã cho điều này? Bạn có thể sử dụng điểm mở rộng menuContributions với locationURI của các thanh cắt. Các locationURI có sẵn trong lớp MenuUtil

+0

Bạn nói đúng. Nhưng không có khả năng để xác định rằng sự đóng góp trình đơn là đúng liên kết bằng cách sử dụng locationURI, phải không? – Michael

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