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.
<menuBarItem name="flm1" image="" label="First Level Menu Item 1"> <accordionPaneItem name="slm1" label="Second Level Menu Item 1" image="" type="leafItemContainer"> ... </accordionPaneItem> </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; }