======Creazione Nuovo Menu Secondo Livello (accordionPaneItem)====== **In Generale** In Geoweb, un menu di secondo livello, è una particolare tipologia di menu. Più menu di secondo livello (da ora in poi SLM, //Second Level Menu//) sono collegati gerarchicamente ad un unico menu di primo livello (da ora in poi FLM, //First Level Menu//). Precisamente, nella webapp client, avviene che al click su una voce FLM vengono visualizzate tutte le voci SLM collegate. **/ /TODO ADD IMAGE** Ogni SLM è rappresentato come uno //snippet//. Più SLM sono organizzati come un insieme di snippet messi in una sorta di //pila//, dei quali può essere aperto solo uno alla volta. Al click su un SLM chiuso, esso si aprirà, e quello precedentemente aperto si chiuderà collassando su se stesso. Questo comportamento è materialmente implementato tramite il componente Dojo (//dijit/layout/AccordionContainer//). Per visualizzare un SLM nel layout di Progetto, bisogna aggiungere un tag //accordionPaneItem//, di uno specifico //type//, dentro un tag //menuBarItem//. ... Attualmente in Geoweb sono definite le seguenti tipologie di SLM: * **leafItemContainer**, è la tipologia base, contiene oggetti di tipo //**leafItem**//, che rappresentano i Menu di Terzo Livello (TLM) * **integrationMenu**, è un albero che contiene tutte le anagrafiche delle classi appartenenti ad un progetto, raggruppate per tema. * **layoutSwitchMenu**, è un albero che permette di aprire planimetrie/scenari **Nuovo accordionPaneItem** Per definire una nuova tipologia di SLM semplicemente popolare l'attributo //type// del tag //accordionPaneItem// con un valore univoco. Di fronte ad un ipotetico SLM con **type="mySLM"**, Geoweb farà in automatico una chiamata GET a questo URL: **projectNavigationMenu/accordionPaneItem/mySLM.html** passando in automatico come parametri nell'URL (//queryParameter//): * **accordionPaneMenuIndex** * **accordionPaneItemIndex** * **accordionPaneItemType** * **projectName** Sarà quindi cura dello sviluppatore dichiarare, dentro una classe controller, un metodo appropriatamente mappato (con RequestMapping), in modo tale da intercettare la chiamata e restituire il .jsp desiderato. Anche il jsp deve essere messo a disposizione dallo sviluppatore. @RequestMapping("projectNavigationMenu/accordionPaneItem/mySLM") ModelAndView mySLM( @RequestParam String projectName, @RequestParam Integer accordionPaneMenuIndex, @RequestParam Integer accordionPaneItemIndex, @RequestParam String accordionPaneItemType, Locale locale ){ ModelAndView modelAndView = new ModelAndView("commons/accordionPaneBar/accordionPane/mySLM"); Object myInfoObject = null; ... modelAndView.addObject("myInfoObject", myInfoObject ); return modelAndView; }