2011-01-21 16 views
5

Ben kullanıcının erişebileceği görünümleri denetlemek için özel bir perspektif değiştirici ihtiyacı benim minik RCP app, üzerinde çalışıyordu. Yani burada, perspektifleri değiştirmek için birkaç düğme ile bir araç çubuğu eklemeye çalışıyorum. Konumlandırma Araç çubukları/RCP

Ben şeyler üzerinde bir miktar kontrol benim sana eylemleri çağırır hangi ApplicationActionBarAdvisor ikinci araç çubuğu eklemek olacaktır sahip en iyi yolunun/perspektifler geçmek için emreder.

Yani ben şu şekilde görünecektir hangi fillCoolBar yönteminde ikinci ToolBarContributionItem oluşturmak varsayalım:

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);   
} 

bu pencerenin sağ tarafında olurdu yüzden Araç hizaya nasıl herhangi bir fikir? Bu pozisyonun kodlanmış olmasını isterim.

Selamlar, Michael

cevap

4

Ben benzer bir sorun vardı: Ben sol tarafta standart bir araç çubuğu ve solda bir arama metin ve düğme olmasını istedik. Gerçekten bir çözüm bulamadım. Ben ne yaptım CoolBarManager düzeni değiştiğinde böylece ToolBarContributionItem içinde dolgu-yöntemini geçersiz olmasıdır. Bu (bu durumda yeterli oldu) Windows üzerinde çalışır, ancak DEĞİL Linux üzerinde, iyi bir çözüm değil, ama belki yardımcı olur:

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

bunu Linux üzerinde çalışmıyor neden lütfen açıklayabilir kullanılabilir? Platform bağımlı sihir göremiyorum. (Ben sadece merak ediyorum, linux kullanmayın. :)) –

4

Neden siz bunun için kod istiyorsun? MenuContributions uzantı noktasını trim çubuklarının konum bilgisiyle kullanabilirsiniz. locationURIs MenuUtil sınıfının

+0

Haklısınız. Ancak, menü katkısının locationURI kullanılarak doğru hizalandığını tanımlamak mümkün değil mi? – Michael