2012-11-12 3 views
0

문제는 위에서 언급 한 것과 같습니다. 여기 예에서 동안 : 당신은 NS (들)을 클릭하면자식 노드의 자식을 클릭하면 줄이 사라집니다. - Primefaces 3.4 mindmap

http://www.primefaces.org/showcase-labs/ui/mindmap.jsf

은 당신이 당신의 선택의 childNodes에 중 하나를 클릭 수, 말, ns7.google.com, 다음 (NS로 돌아가 s)를 남기는 선이 남아 있습니다.

6 개의 항목이 있습니다 (예 : 1,2,3,4,5,6). 그것들은 모두 다양한 방법으로 연결되어 있으며, 이들은 마인드 맵에서 색상으로 표시됩니다. "1"이 루트 노드라고 가정 해보십시오. 그러면 2,3,4,5,6이 나타납니다. 내가 6을 클릭한다고 가정 해 봅시다 - 마인드 맵이 6의 링크를 보여주기 위해 다시 그려집니다. 그러나 거기에서 1이 아닌 다른 노드를 클릭하면 연결 선이 모두 사라집니다. 대부분의 노드 에서처럼 (때로는 일부 노드와 때로는 다른 노드, 때로는 노드 중 하나 일 때도 있습니다.) 나는 더 이상 거꾸로 갈 수 없다.

/* 
* 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> 

아래 마인드 맵 빈과 HTML에 대한 코드입니다.

답변

1

저는 대신에 @SessionScoped을 단순히 추가하여 동일한 문제에 봉착했습니다.

이제 PF의 예와 같이 선택하고 두 배로 선택할 수 있습니다.

관련 문제