août 07 2009

[Pentaho BI Server] Personnaliser le menu

Catégorie(s): Développement,JavaSébastien @ 21:37

En visitant les stats du blog sur Google Analytics, j’ai remarqué qu’une recherche m’amenait pas mal de visiteurs : « pentaho bi server personnaliser menu ». Le soucis c’est que je n’ai rien écrit sur le sujet et ces visiteurs devaient rentrer bredouille. Je vais essayer de corriger ça et de vous apporter un début de réponse en modifiant une partie de celui-ci. Vous allez voir, c’est très simple en fait une fois qu’on le sait.

La seule partie du menu que j’ai réussi à modifier pour l’instant est celle avec les grosses icônes en dessous du menu « Fichier ». Pour cela c’est facile, il n’y a qu’un seul fichier à modifier : BI_SERVER_HOME/tomcat/webapps/pentaho/mantle/xul/main_toolbar.xul (pensez à faire une sauvegarde de ce fichier avant on sait jamais). Normalement il ressemble à ça :

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window width="400" height="275" title="Placeholder"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"  xmlns:pen="http://www.pentaho.org/2008/xul" onload="mainToolbarHandler.init()">
  <toolbar id="mainToolbar">
    <toolbarspacer width="10"/>
    <toolbarbutton id="openButton" image="mantle/images/open_32.png" onclick="mainToolbarHandler.openClicked()" tooltiptext="${openEllipsis}"/>
    <toolbarspacer width="20"/>
    <toolbarbutton id="newAdhocButton" image="mantle/images/new_report_32.png" onclick="mainToolbarHandler.newAdhocClicked()" tooltiptext="${newAdhocReportEllipsis}"/>
    <toolbarbutton id="newAnalysisButton" image="mantle/images/new_analysis_32.png" disabledimage="mantle/images/new_analysis_32_disabled.png" onclick="mainToolbarHandler.newAnalysisClicked()" tooltiptext="${newAnalysisViewEllipsis}"/>
    <toolbarspacer width="20"/>
    <toolbarbutton id="editContentButton" image="mantle/images/editContent_32.png" disabledimage="mantle/images/editContent_32_disabled.png"  onclick="mainToolbarHandler.editContentClicked()" tooltiptext="${editContent}" disabled="true" type="toggle" pen:visible="false"/>
    <toolbarspacer id="editButtonSpacer" width="20" pen:visible="false"/>
    <toolbarbutton id="saveButton" image="mantle/images/save_32.png" disabledimage="mantle/images/save_32_disabled.png" onclick="mainToolbarHandler.saveClicked()" tooltiptext="${save}" disabled="true"/>
    <toolbarbutton id="saveAsButton" image="mantle/images/saveAs_32.png" disabledimage="mantle/images/saveAs_32_disabled.png"  onclick="mainToolbarHandler.saveAsClicked()" tooltiptext="${saveAs}" disabled="true"/>
    <toolbarspacer width="20"/>
    <toolbarbutton id="printButton" image="mantle/images/print_32.png" disabledimage="mantle/images/print_32_disabled.png" onclick="mainToolbarHandler.printClicked()" tooltiptext="${print}" disabled="true"/>
    <toolbarspacer width="20"/>
    <toolbarbutton id="workspaceButton" image="mantle/images/workspace_32.png" type="toggle" onclick="mainToolbarHandler.workspaceClicked()" tooltiptext="${workspace}"/>
    <toolbarbutton id="showBrowserButton" image="mantle/images/browser_show_32.png" downimage="mantle/images/browser_hide_32.png" type="toggle" onclick="mainToolbarHandler.showBrowserClicked()" tooltiptext="${toggleSolutionBrowser}"/>
  </toolbar>
</window>

Il y a deux choses à modifier, la première étant de modifier la toolbar en elle-même et de supprimer/ajouter/déplacer les éléments que vous souhaitez. La seconde chose à modifier, ou plutôt virer, est l’attribut onload de la balise window.

Si on prend le menu que j’utilise dans ma solution, je n’avais besoin que du bouton Ouvrir et Afficher l’explorateur de solution, ce qui me donne pour le fichier main_toolbar.xul :

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window width="400" height="275" title="Placeholder"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"  xmlns:pen="http://www.pentaho.org/2008/xul">
  <toolbar id="mainToolbar">
    <toolbarspacer width="10"/>
    <toolbarbutton id="openButton" image="mantle/images/open_32.png" onclick="mainToolbarHandler.openClicked()" tooltiptext="${openEllipsis}"/>
    <toolbarspacer width="20"/>
    <toolbarbutton id="showBrowserButton" image="mantle/images/browser_show_32.png" downimage="mantle/images/browser_hide_32.png" type="toggle" onclick="mainToolbarHandler.showBrowserClicked()" tooltiptext="${toggleSolutionBrowser}"/>
  </toolbar>
</window>

Pour le menu « Fichier », je ne sais pas comment faire pour la simple raison que je n’ai pas (encore ?) eu besoin de le modifier donc pas de problème, pas de recherche et donc pas de solution. En revanche si certains savent comment faire et de préférence sans avoir à recomplier Mantle, je veux bien l’astuce à des fins de connaissance personnelle. :)