2011-01-21 19 views
5

Stavo lavorando sulla mia piccola app RCP, che ha bisogno di un commutatore di prospettiva personalizzato per controllare quali viste l'utente può accedere. Quindi eccomi qui, cercando di aggiungere una barra degli strumenti con un paio di pulsanti per cambiare prospettiva.Posizionamento delle barre degli strumenti in Eclipse/RCP

Ho immaginato che il modo migliore per avere un certo controllo sulla roba sarebbe quello di aggiungere una seconda barra degli strumenti in ApplicationActionBarAdvisor che chiamerebbe le mie azioni/comandi per cambiare prospettiva.

Quindi diciamo che creo un secondo ToolBarContributionItem nel metodo fillCoolBar, che sarebbe simile a questa:

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

Tutte le idee come posso allineare la barra degli strumenti in modo che sarebbe sul lato destro della finestra? Mi piacerebbe avere questa posizione hardcoded.

saluti, Michael

risposta

4

ho avuto un problema simile: volevo avere una barra degli strumenti standard sul lato sinistro e un testo di ricerca e pulsante a sinistra. Non ho trovato davvero una soluzione. Quello che ho fatto è che sovrascrivo il metodo di riempimento in ToolBarContributionItem in modo che il layout di CoolBarManager sia cambiato. Questa non è una buona soluzione, funziona su Windows (che era abbastanza in questo caso), ma NON su Linux, ma forse aiuta:

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

Puoi spiegare perché non funziona su Linux? Qui non vedo nessuna magia dipendente dalla piattaforma. (Io non uso Linux, sono solo curioso :)) –

4

Perché voi ragazzi vogliono codice per questo? È possibile utilizzare il punto di estensione menuContributions con il percorsoURI delle barre di ritaglio. I locationURI sono disponibili nella classe MenuUtil

+0

Hai ragione. Ma non c'è alcuna possibilità di definire che il contributo del menu sia allineato correttamente usando il locationURI, giusto? – Michael

Problemi correlati