<a:form> <a:mindmap value="#{mindmapView.root}" style="width: 100%;height: 600px;border: 1px solid black;"> <a:ajax event="select" listener="#{mindmapView.onNodeSelect}" /> <a:ajax event="dblselect" listener="#{mindmapView.onNodeDblselect}" update="output" oncomplete="PF('details').show();" /> </a:mindmap> <a:dialog widgetVar="details" header="Node Details" resizable="false" modal="true" showEffect="fade" hideEffect="fade"> <h:outputText id="output" value="#{minmapView.selectedNode.data}" /> </a:dialog> </a:form>
package com.jarch.showcase.view.data; import java.io.Serializable; import java.util.UUID; import javax.faces.bean.ManagedBean; import org.primefaces.event.SelectEvent; import org.primefaces.model.mindmap.DefaultMindmapNode; import org.primefaces.model.mindmap.MindmapNode; @ManagedBean public class MindmapView implements Serializable { private MindmapNode root; private MindmapNode selectedNode; public MindmapView() { root = new DefaultMindmapNode("google.com", "Google WebSite", "FFCC00", false); MindmapNode ips = new DefaultMindmapNode("IPs", "IP Numbers", "6e9ebf", true); MindmapNode ns = new DefaultMindmapNode("NS(s)", "Namespaces", "6e9ebf", true); MindmapNode malware = new DefaultMindmapNode("Malware", "Malicious Software", "6e9ebf", true); root.addNode(ips); root.addNode(ns); root.addNode(malware); } public MindmapNode getRoot() { return root; } public MindmapNode getSelectedNode() { return selectedNode; } public void setSelectedNode(MindmapNode selectedNode) { this.selectedNode = selectedNode; } public void onNodeSelect(SelectEvent event) { MindmapNode node = (MindmapNode) event.getObject(); //populate if not already loaded if(node.getChildren().isEmpty()) { Object label = node.getLabel(); if(label.equals("NS(s)")) { for(int i = 0; i < 25; i++) { node.addNode(new DefaultMindmapNode("ns" + i + ".google.com", "Namespace " + i + " of Google", "82c542", false)); } } else if(label.equals("IPs")) { for(int i = 0; i < 18; i++) { node.addNode(new DefaultMindmapNode("1.1.1." + i, "IP Number: 1.1.1." + i, "fce24f", false)); } } else if(label.equals("Malware")) { for(int i = 0; i < 18; i++) { String random = UUID.randomUUID().toString(); node.addNode(new DefaultMindmapNode("Malware-" + random, "Malicious Software: " + random, "3399ff", false)); } } } } public void onNodeDblselect(SelectEvent event) { this.selectedNode = (MindmapNode) event.getObject(); } }