问题基本上如上所述。在此处的示例中:
http://www.primefaces.org/showcase-labs/ui/mindmap.jsf
如果您单击 NS(s),您可以单击您选择的子节点之一,例如 ns7.google.com,然后返回 NS(s),因为连接它们的行仍然存在。
我有 6 个条目,比如 1、2、3、4、5、6。它们都以各种方式链接,在思维导图中以颜色显示。说“1”是根节点。然后 2,3,4,5,6 出现。假设我单击 6 - 重新绘制思维导图以显示 6 的链接,在角落处向上显示 1 以显示它是根。但是,如果我从那里单击除 1 以外的任何节点,链接线都会消失,大多数节点也是如此(我不知道为什么有时它是其中的一些,有时是不同的,有时是一个,有时是全部!)我再也不能倒退了。下面是思维导图 bean 和 html 的代码:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jsf;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import jpa.entities.Enginetable;
import jpa.session.EnginetableFacade;
import org.primefaces.event.SelectEvent;
import org.primefaces.model.mindmap.DefaultMindmapNode;
import org.primefaces.model.mindmap.MindmapNode;
/**
*
* @author AOL
*/
@Named(value = "mmBean")
@RequestScoped
public class mmBean implements Serializable{
@EJB
private jpa.session.EnginetableFacade ejbFacade;
private MindmapNode root;
private MindmapNode selectedNode;
private List<Enginetable> elements;
private List<Enginetable> filteredElements;
private List<Enginetable> userlist;
private Enginetable selectedElement;
private Enginetable[] selectedElements;
private List<Enginetable> elementlist = new ArrayList<Enginetable>();
private Enginetable nodeentity = new Enginetable();
private Enginetable rootentity = new Enginetable();
private Enginetable user = new Enginetable();
private static final String[] username;
static{
username = new String[10];
username[0] = "Mercedes";
username[1] = "BMW";
username[2] = "Volvo";
username[3] = "Audi";
username[4] = "Renault";
username[5] = "Opel";
username[6] = "Volkswagen";
username[7] = "Chrysler";
username[8] = "Ferrari";
username[9] = "Ford";
}
/**
* Creates a new instance of MmBean
*/
public mmBean() {
}
@PostConstruct
public void init() {
///if(elements==null){
elements = new ArrayList<Enginetable>();
this.userlist = this.getFullList();
Enginetable entity;
//}
//remoteuser=null;
// this.populateRandomElements(elements, 10);
this.populateRandomElements(elements,6);
// filteredElements = new ArrayList<Graphelement>();
this.user = this.userlist.get(0);
this.rootentity = this.user;
root = new DefaultMindmapNode(user.getStartnode(), "Google", "006666", false);
/*MindmapNode bmw = new DefaultMindmapNode("BMW", "IP Nos", "6e9ebf", true);
MindmapNode volvo = new DefaultMindmapNode("Volvo", "Names", "6e9ebf", true);
MindmapNode audi = new DefaultMindmapNode("Audi", "Malicious ", "6e9ebf", true);
MindmapNode renault = new DefaultMindmapNode("Renault", "IP Nos", "6e9ebf", true);
MindmapNode opel = new DefaultMindmapNode("Opel", "Names", "6e9ebf", true);
MindmapNode volkwagen = new DefaultMindmapNode("Volkswagen", "Malicious ", "6e9ebf", true);
MindmapNode chrysler = new DefaultMindmapNode("Chrysler", "IP Nos", "6e9ebf", true);
MindmapNode ferrari = new DefaultMindmapNode("Ferrari", "Names", "6e9ebf", true);
MindmapNode ford = new DefaultMindmapNode("Ford", "Malicious ", "6e9ebf", true);*/
Object label = root.getLabel();
for( int i = 0 ; i < this.userlist.size() ; i++){
entity = this.userlist.get(i);
if ( !label.equals(entity.getStartnode() ) && this.user.getEndnode().equals(entity.getStartnode() ) ) { ////this.rootentity.getEndnode().equals(entity.getStartnode())
root.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "33FF00", true));
}
else if ( !label.equals(entity.getStartnode() ) && this.user.getEndnode() != entity.getStartnode() ){
root.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "CC0000", true));
}
}
}
public void setElements(List<Enginetable> elements) {
this.elements = elements;
}
public List<Enginetable> getElements() {
return elements;
}
public void setFilteredElements(List<Enginetable> filteredElements) {
//this.filteredElements = filteredElements;
this.elements=filteredElements;
}
public List<Enginetable> getFilteredElements() {
return filteredElements;
}
public void setSelectedElements(Enginetable[] selectedElements) {
this.selectedElements = selectedElements;
}
public Enginetable[] getSelectedElements() {
return selectedElements;
}
public void setSelectedElement(Enginetable selectedElement) {
this.selectedElement = selectedElement;
}
public Enginetable getSelectedElement() {
return selectedElement;
}
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();
for( int i = 0 ; i < this.elements.size() ; i++){
Enginetable entity;
Object label = node.getLabel();
Object rootlabel = this.root.getLabel();
entity = userlist.get(i);
if ( entity.getStartnode() == rootlabel ){
this.rootentity = entity;
}
if ( entity.getStartnode() == label ){
this.nodeentity = entity;
}
}
//load children of select node and add via node.addNode(childNode);
//populate if not already loaded
if(node.getChildren().isEmpty()) {
this.setChildNodes( node );
}
}
public void onNodeDblselect(SelectEvent event) {
this.selectedNode = (MindmapNode) event.getObject();
}
private EnginetableFacade getFacade() {
return ejbFacade;
}
private void populateRandomElements(List<Enginetable> list, int size) {
userlist = this.getFullList();
for(int i = 0 ; i < size ; i++) {
Enginetable gel = new Enginetable();
gel.setMoveid(i);
gel.setUserid(i);
gel.setStartnode(username[i]);
gel.setEndnode(username[9-i]);
gel.setConnections(username[9-i]);
// gel.setPurpose("dubious");
// gel.setRelationship("naughty");
// gel.setExperimentid(1);
gel.setNewinfovalue(1);
gel.setNewconnectioncost(1);
list.add(gel);
}
}
//
public Integer getMoveId(Enginetable ent) {
return ent.getMoveid();
}
public void setMoveId(Enginetable ent, Integer id) {
ent.setMoveid(id);
}
public Integer getUserId(Enginetable ent) {
return ent.getMoveid();
}
public void setUserId(Enginetable ent, Integer id) {
ent.setMoveid(id);
}
public String getStartNode(Enginetable ent) {
return ent.getStartnode();
}
public void setStartNode(Enginetable ent, String startnode) {
ent.setStartnode(startnode);
}
public String getEndNode(Enginetable ent) {
return ent.getEndnode();
}
public void setEndNode(Enginetable ent, String endnode) {
ent.setEndnode(endnode);
}
/* public int getExperimentid(Enginetable ent) {
return ent.getExperimentid();
}
public void setExperimentid(Enginetable ent, int experimentid) {
ent.setExperimentid(experimentid);
}*/
public int getNewInfoValue(Enginetable ent) {
return ent.getNewinfovalue();
}
public void setNewInfoValue(Enginetable ent, int totalinfovalue) {
ent.setNewinfovalue(totalinfovalue);
}
public String getConnections(Enginetable ent) {
return ent.getConnections();
}
public void setConnections(Enginetable ent, String connections) {
ent.setConnections(connections);
}
public String getNewConnections(Enginetable ent) {
return ent.getConnections();
}
public void setNewConnections(Enginetable ent, String newconnections) {
ent.setConnections( newconnections );
}
/* public String getUserName(Enginetable ent) {
return ent.getUsername();
}
public void setUsername(Enginetable ent, String name) {
ent.setUsername(name);
}
*/
// ADDED BY AODHÁN
public List<Enginetable> getListByUsername(String user){
return this.ejbFacade.getEnginetableByUsername(user);
}
public List<Enginetable> getListByUserID( int id ){
return this.ejbFacade.getEnginetableByUserid(id);
}
public List<Enginetable> getFullList(){
return this.ejbFacade.getFullEnginetable();
}
public void setChildNodes( MindmapNode node ){
for( int i = 0 ; i < this.userlist.size() ; i++){
Enginetable entity;
entity = this.userlist.get(i);
if ( (this.nodeentity.getStartnode() == null ? entity.getStartnode() != null : !this.nodeentity.getStartnode().equals(entity.getStartnode())) && (this.nodeentity.getEndnode() == null ? entity.getStartnode() != null : !this.nodeentity.getEndnode().equals(entity.getStartnode())) && (this.rootentity.getEndnode() == null ? entity.getStartnode() == null : this.rootentity.getEndnode().equals(entity.getStartnode())) ) {
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "33FF00"));
}
else if ( (this.nodeentity.getStartnode() == null ? entity.getStartnode() != null : !this.nodeentity.getStartnode().equals(entity.getStartnode())) && (this.nodeentity.getEndnode() == null ? entity.getStartnode() == null : this.nodeentity.getEndnode().equals(entity.getStartnode())) && (this.rootentity.getEndnode() == null ? entity.getStartnode() == null : this.rootentity.getEndnode().equals(entity.getStartnode())) ) {
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "0066FF"));
}
else if ( (this.nodeentity.getStartnode() == null ? entity.getStartnode() != null : !this.nodeentity.getStartnode().equals(entity.getStartnode())) && (this.nodeentity.getEndnode() == null ? entity.getStartnode() == null : this.nodeentity.getEndnode().equals(entity.getStartnode())) && (this.rootentity.getEndnode() == null ? entity.getStartnode() != null : !this.rootentity.getEndnode().equals(entity.getStartnode())) ) {
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "FFCC00"));
}
else if ( (this.nodeentity.getStartnode() == null ? entity.getStartnode() != null : !this.nodeentity.getStartnode().equals(entity.getStartnode())) && (this.nodeentity.getEndnode() == null ? entity.getStartnode() != null : !this.nodeentity.getEndnode().equals(entity.getStartnode())) && (this.rootentity.getEndnode() == null ? entity.getStartnode() != null : !this.rootentity.getEndnode().equals(entity.getStartnode())) ) {
node.addNode(new DefaultMindmapNode(entity.getStartnode() , "Malicious Software: ", "CC0000"));
}
}
}
}
HTML:
<h:form>
<p:mindmap value="#{mmBean.root}" style="width:100%;height:600px">
<p:ajax event="select" listener="#{mmBean.onNodeSelect}" />
<p:ajax event="dblselect" listener="#{mmBean.onNodeDblselect}" update="output" oncomplete="details.show()"/>
</p:mindmap>
<p:dialog widgetVar="details" header="Node Details" resizable="false" modal="true" showEffect="fade" hideEffect="fade">
<h:outputText id="output" value="#{mmBean.selectedNode.data}" />
</p:dialog>
</h:form>
任何帮助是极大的赞赏。