Thursday, March 10, 2011

Make Tree with Checkbox Using YUI2 API AND Dynamic Loading Data from Db using the JSON for JAVA Developer

YUI TreeView js files:


<style>

.ygtvcheck0 { background: url(http://developer.yahoo.com/yui/examples/treeview/assets/img/check/check0.gif) 0 0 no-repeat; width:16px; cursor:pointer }
.ygtvcheck1 { background: url(http://developer.yahoo.com/yui/examples/treeview/assets/img/check/check1.gif) 0 0 no-repeat; width:16px; cursor:pointer }
.ygtvcheck2 { background: url(http://developer.yahoo.com/yui/examples/treeview/assets/img/check/check2.gif) 0 0 no-repeat; width:16px; cursor:pointer }
</style>

<script type="text/javascript" src="http://yui.yahooapis.com/combo?2.8.2r1/build/yahoo-dom-event/yahoo-dom-event.js&2.8.2r1/build/treeview/treeview-min.js"></script>
        <script src="http://yui.yahooapis.com/2.8.2r1/build/json/json-min.js"></script>

 

JSON DATA WHICH IS RETURN FROM SERVLET:

for ex:

temp = {"myNodeId":1,"label":"India"},{"myNodeId":15712,"label":"Pakistan"}

 

// yahoo example
var leftTree;
var   rightTree;
function treeInit(treedata) {
    //  maketree(treedata);
    var prod = YAHOO.lang.JSON.parse(treedata);
    leftTree = new YAHOO.widget.TreeView("treeDiv1",prod);
    leftTree.subscribe("labelClick", function(noder) {
        var tpid = noder.data.myNodeId ;

        TerritoryGroupDWR.getChildLeftTree(tpid,function (data){
            var _prod = YAHOO.lang.JSON.parse(data);

            for(var i=0;i<_prod.length;i++){
                 var tmpNode = new YAHOO.widget.TextNode(_prod[i],noder,true);
            }
            noder.refresh();
            noder.expand();
        });
       
    });

    leftTree.subscribe("clickEvent",leftTree.onEventToggleHighlight);
    leftTree.setNodesProperty("propagateHighlightUp",true);
    leftTree.setNodesProperty("propagateHighlightDown",true);

    leftTree.render();
}

function AssignTerritory()
{
    var IDS = [];
    var hiLit = leftTree.getNodesByProperty('highlightState',1);
    if (YAHOO.lang.isNull(hiLit)) {
        YAHOO.log("None selected");
    } else {
        var labels = [];
        for (var i = 0; i < hiLit.length; i++) {
            labels.push(hiLit[i].label);
            IDS.push(hiLit[i].data.myNodeId);
        }
    }
    getRightTree(IDS)
}

function removeSelectedNodesFromRightTree()
{
    var IDS = [];
    var hiLit = rightTree.getNodesByProperty('highlightState',1);
    if (YAHOO.lang.isNull(hiLit)) {
        YAHOO.log("None selected");
    } else {
        var labels = [];

        for (var i = 0; i < hiLit.length; i++) {
            //alert(hiLit[i].data.myNodeId)
            labels.push(hiLit[i].label);
            IDS.push(hiLit[i].data.myNodeId);
        }
    // alert("Highlighted nodes:\n" + IDS.join("\n"), "info", "example");
    }
    removeSelectedNodes(IDS)
}

function removeSelectedNodes(IDS)
{
    TerritoryGroupDWR.removeSelectedNodes(IDS,function (data){
        removeSelectedNodesFromRightTreeAndRefresh(data)
    });
}



function removeSelectedNodesFromRightTreeAndRefresh(IDS)
{

//    rightTree = new YAHOO.widget.TreeView("treeDiv2");
//
//    var tmpNode = new YAHOO.widget.TextNode({
//        label: "",
//        expanded: false
//    }, rightTree.getRoot());

    var treedata = '{"myNodeId":0,"label":"Root"}';
    var prod = YAHOO.lang.JSON.parse(treedata);


    rightTree = new YAHOO.widget.TreeView("treeDiv2",prod);

    var root = rightTree.getRoot();

    // var node=rightTree.getNodeByIndex(1);
    if(IDS!=null && IDS.length>0){
    for(var i =0;i<IDS.length;i++){
        TerritoryGroupDWR.removeSelectedNodesFromRightTreeAndRefresh(IDS[i],function (data){
            var prod = YAHOO.lang.JSON.parse(data);
            for(var i=0;i<prod.length;i++){
                //var tmpNode = new YAHOO.widget.TaskNode(prod1[i], noder, false);
                var tmpNode1 = new YAHOO.widget.TextNode(prod[i],root,true);

                rightTree.subscribe("labelClick", function(noder) {
                    var tpid = noder.data.myNodeId ;
                    TerritoryGroupDWR.getChildRightTree(tpid,function (data){
                        var _prod = YAHOO.lang.JSON.parse(data);

                        for(var i=0;i<_prod.length;i++){
                            //var tmpNode = new YAHOO.widget.TaskNode(prod1[i], noder, false);
                            var tmpNode3 = new YAHOO.widget.TextNode(_prod[i],noder,true);
                        }
                        noder.refresh();
                        noder.expand();
                    });
                });
            }
            root.refresh();
            root.expand();

        });
    }
}
    rightTree.subscribe("clickEvent",rightTree.onEventToggleHighlight);
    rightTree.setNodesProperty("propagateHighlightUp",true);
    rightTree.setNodesProperty("propagateHighlightDown",true);
    rightTree.render();
}



function getRightTree(IDS)
{
    var root = rightTree.getRoot();

    for(var i =0;i<IDS.length;i++){
        TerritoryGroupDWR.getSelectedNode(IDS[i],function (data){
            var prod = YAHOO.lang.JSON.parse(data);

            for(var i=0;i<prod.length;i++){
                var tmpNode = new YAHOO.widget.TextNode(prod[i],root,true);

                rightTree.subscribe("labelClick", function(noder) {
                    var tpid = noder.data.myNodeId ;
                    TerritoryGroupDWR.getChildRightTree(tpid,function (data){
                        var _prod = YAHOO.lang.JSON.parse(data);

                        for(var i=0;i<_prod.length;i++){
                            var tmpNode3 = new YAHOO.widget.TextNode(_prod[i],noder,true);
                        }
                        noder.refresh();
                        noder.expand();
                    });
                });
            }
            root.refresh();
            root.expand();

        });
    }

}
function treeInitRight(treedata) {
    //  maketree(treedata);
   
    if(treedata=='[]') treedata = '{"myNodeId":0,"label":"Root"}';
    var prod = YAHOO.lang.JSON.parse(treedata);


    rightTree = new YAHOO.widget.TreeView("treeDiv2",prod);
//else{
//
//    rightTree = new YAHOO.widget.TreeView("treeDiv2");
//
//        var tmpNode = new YAHOO.widget.TextNode({
//        label: "",
//        expanded: false
//    }, rightTree.getRoot());
//}


    rightTree.subscribe("labelClick", function(noder) {
        var tpid = noder.data.myNodeId ;

        TerritoryGroupDWR.getChildLeftTree(tpid,function (data){
            var _prod = YAHOO.lang.JSON.parse(data);

            for(var i=0;i<_prod.length;i++){

                var tmpNode = new YAHOO.widget.TextNode(_prod[i],noder,true);
            }
            noder.refresh();
            noder.expand();
        });
    });

    rightTree.subscribe("clickEvent",rightTree.onEventToggleHighlight);
    rightTree.setNodesProperty("propagateHighlightUp",true);
    rightTree.setNodesProperty("propagateHighlightDown",true);

    rightTree.render();
}

JSP FILE:




<div align="left" class="break2"></div>
<div align="left" class="break2"></div>
<div align="left" class="break2"></div>
<div align="left" class="break2"></div>

<div align="left" style="margin-left:0.5%;">
    <div align="center" >Territory Group Involvement</div>
    <div id="headercontainer33" style="border: #000000 solid 1px;" >
        <div id="treeDiv1" class="ygtv-checkbox" style="height:450px;overflow:auto;" ></div>
    </div>
    <div id="headercontainer33" align="center" style="border: #000000 solid 1px; margin-top: 225px;" >
        <div  id="tablerow10" align="right"> <input type ="button"  onclick="javascript:AssignTerritory();" value="Assign Territory" class="buttons"></div>
        <div id="tablerow10" style="margin-left:10px;"> <input type ="button" onclick="javascript:removeSelectedNodesFromRightTree();" value="Un-Assign Territory" class="buttons" > </div>
    </div>
    <div id="headercontainer33" style="border: #000000 solid 1px;">
        <div id="treeDiv2" class="ygtv-checkbox" style="height:450px;overflow:auto;" ></div>
    </div>
    <div align="left" class="break3"></div>
    <div id="tablerow" align="right"> <input type="button" value="Save"  class="buttons"/>
        <input type="button" value="Cancel" onclick="javascript:loadinnerTerritoryGroupJSP();" class="buttons"/>
    </div>

</div>






DWR CODE:


/* Territory Group involment (Tree) work starts now
     *
     *
     */
    List<Integer> selectedNodeList = new ArrayList<Integer>();
    String previd = "";
    String _previd = "";

    public String[] getLeftTerritoryTree(String territoryGroupId) {
        String forwardJSP[] = new String[2];


        String json = "{}";
        Long teritorryPId = 0L;
        try {
            selectedNodeList = new ArrayList<Integer>();
            WebContext wctx = WebContextFactory.get();
            HttpSession session = wctx.getSession();
            Properties properties = new Properties();
            InitialContext ic = new InitialContext(properties);
            ITeritorryBIRemote teritorryBIRemote = (ITeritorryBIRemote) ic.lookup(ITeritorryBIRemote.class.getName());

            TerritoryGroupSessionBeanRemote territoryGroupSessionBeanRemote = (TerritoryGroupSessionBeanRemote) ic.lookup(TerritoryGroupSessionBeanRemote.class.getName());

            List<YahooTerritoryForm> list = teritorryBIRemote.findRootTerritory(teritorryPId);
            JSONSerializer serializer = new JSONSerializer();
            serializer.registerDefaultSerializers();
            serializer.setMarshallClassHints(false);
            serializer.setDebug(true);
            serializer.setMarshallNullAttributes(false);
            String temp = serializer.toJSON(list);
            temp = temp.replace("{\"list\":[", "");
            temp = temp.substring(0, temp.length() - 2);

            System.out.println("getLeftTerritoryTree() temp = " + temp);

            forwardJSP[1] = "[" + temp + "]";

            forwardJSP[0] = wctx.forwardToString("/jsp/TerritoryGroup/TerritoryGrpInvl.jsp");


            previd = "";
            _previd = "";
        } catch (Exception e) {
            e.printStackTrace();
            Logger.printError("ERROR", "TerritoryGroupDWR.getLeftTerritoryTree() ", e);
        }
        return forwardJSP;
    }

    public String[] getRightTerritoryTree(Long territoryGroupId) {
        String forwardJSP[] = new String[2];
        String json = "{}";

        try {
            selectedNodeList = new ArrayList<Integer>();
            WebContext wctx = WebContextFactory.get();
            HttpSession session = wctx.getSession();
            Long UserAccountID = (Long) session.getAttribute("UserAccountID");
            Properties properties = new Properties();
            InitialContext ic = new InitialContext(properties);
            TerritoryGroupSessionBeanRemote territoryGroupSessionBeanRemote = (TerritoryGroupSessionBeanRemote) ic.lookup(TerritoryGroupSessionBeanRemote.class.getName());

            List<YahooTerritoryForm> list = new ArrayList<YahooTerritoryForm>();
            list = territoryGroupSessionBeanRemote.getRightTerritoryTree(UserAccountID, territoryGroupId);
            JSONSerializer serializer = new JSONSerializer();
            serializer.registerDefaultSerializers();
            serializer.setMarshallClassHints(false);
            serializer.setDebug(true);
            serializer.setMarshallNullAttributes(false);
            String temp = serializer.toJSON(list);
            temp = temp.replace("{\"list\":[", "");
            temp = temp.substring(0, temp.length() - 2);

            System.out.println("getRightTerritoryTree() temp = " + temp);

            forwardJSP[1] = "[" + temp + "]";
            forwardJSP[0] = wctx.forwardToString("/jsp/TerritoryGroup/TerritoryGrpInvl.jsp");
            previd = "";
            _previd = "";

//Add inrolled territories in global list if found
            if (list.size() > 0) {

                Iterator<com.synapse.common.forms.YahooTerritoryForm> iterator = list.iterator();
                while (iterator.hasNext()) {

                    com.synapse.common.forms.YahooTerritoryForm yahooTerritoryForm = iterator.next();
                    selectedNodeList.add(yahooTerritoryForm.getMyNodeId().intValue());
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
            Logger.printError("ERROR", "TerritoryGroupDWR.getRightTerritoryTree() ", e);
        }
        return forwardJSP;
    }

    public String getChildLeftTree(String tpid) {

        String forwardJSP = "";
        String json = "{}";

        Long teritorryPId = 0L;
        try {
            if (tpid != null && !tpid.equals("")) {
                teritorryPId = Long.parseLong(tpid);
                WebContext wctx = WebContextFactory.get();
                HttpSession session = wctx.getSession();
                Properties properties = new Properties();
                InitialContext ic = new InitialContext(properties);
                ITeritorryBIRemote teritorryBIRemote = (ITeritorryBIRemote) ic.lookup(ITeritorryBIRemote.class.getName());

                List<YahooTerritoryForm> list = teritorryBIRemote.findRootTerritory(teritorryPId);
                JSONSerializer serializer = new JSONSerializer();
                serializer.registerDefaultSerializers();
                serializer.setMarshallClassHints(false);
                serializer.setDebug(true);
                serializer.setMarshallNullAttributes(false);
                String temp = serializer.toJSON(list);
                temp = temp.replace("{\"list\":[", "");
                temp = temp.substring(0, temp.length() - 2);
                //  json = "{" + temp + "}";
                System.out.println("getChildLeftTree() temp = " + temp);
                //String x="{myNodeId:1,label:\"India\",expanded:false},{myNodeId:15712,label:\"Pakistan\",expanded:false}";
                if (!previd.equals(tpid)) {
                    forwardJSP = "[" + temp + "]";
                } else {
                    forwardJSP = "[]";
                }
                previd = tpid;

            }

        } catch (Exception e) {
            e.printStackTrace();
            Logger.printError("ERROR", "TerritoryGroupDWR.getchild() ", e);
        }
        return forwardJSP;



    }

    public String getChildRightTree(String tpid) {
        //String x="{\"myNodeId\":110,\"label\":\"India1\",\"expanded\":\"true\"},{\"myNodeId\":15713,\"label\":\"Pakistan1\",\"expanded\":\"true\"}";
        //return "["+x+"]";

        String forwardJSP = "";
        String json = "{}";

        Long teritorryPId = 0L;
        try {
            if (tpid != null && !tpid.equals("")) {
                teritorryPId = Long.parseLong(tpid);
                WebContext wctx = WebContextFactory.get();
                HttpSession session = wctx.getSession();
                Properties properties = new Properties();
                InitialContext ic = new InitialContext(properties);
                ITeritorryBIRemote teritorryBIRemote = (ITeritorryBIRemote) ic.lookup(ITeritorryBIRemote.class.getName());

                List<YahooTerritoryForm> list = teritorryBIRemote.findRootTerritory(teritorryPId);
                JSONSerializer serializer = new JSONSerializer();
                serializer.registerDefaultSerializers();
                serializer.setMarshallClassHints(false);
                serializer.setDebug(true);
                serializer.setMarshallNullAttributes(false);
                String temp = serializer.toJSON(list);
                temp = temp.replace("{\"list\":[", "");
                temp = temp.substring(0, temp.length() - 2);
                //  json = "{" + temp + "}";
                System.out.println("json temp = " + temp);
                //String x="{myNodeId:1,label:\"India\",expanded:false},{myNodeId:15712,label:\"Pakistan\",expanded:false}";

                if (!_previd.equals(tpid)) {
                    forwardJSP = "[" + temp + "]";
                } else {
                    forwardJSP = "[]";
                }
                _previd = tpid;


            }

        } catch (Exception e) {
            e.printStackTrace();
            Logger.printError("ERROR", "TerritoryGroupDWR.getchild() ", e);
        }
        return forwardJSP;



    }

    public String[] removeSelectedNodes(String nodes[]) {
        String returnNodes[] = null;

        try {

            for (int i = 0; i < nodes.length; i++) {
                String tmp = nodes[i];

                if (selectedNodeList.contains(Integer.parseInt(tmp))) {
                    for (int j = 0; j < selectedNodeList.size(); j++) {

                        if (tmp.equals(selectedNodeList.get(j).toString())) {

                            selectedNodeList.remove(j);

                        }
                    }
                }
            }


            returnNodes = new String[selectedNodeList.size()];

            Iterator<Integer> selectedNodeListIterator = selectedNodeList.iterator();
            int j = 0;
            while (selectedNodeListIterator.hasNext()) {
                Integer node = selectedNodeListIterator.next();
                returnNodes[j] = String.valueOf(node);

                j++;
            }
        } catch (Exception e) {
            e.printStackTrace();
            Logger.printError("ERROR", "TerritoryGroupDWR.removeSelectedNodes() ", e);
        }
        return returnNodes;
    }

    public String getSelectedNode(String tpid) {

        String forwardJSP = "";
        String json = "{}";

        Long teritorryId = 0L;
        try {
            String temp = "";
            if (tpid != null && !tpid.equals("")) {
                if (!selectedNodeList.contains(Integer.parseInt(tpid))) {
                    selectedNodeList.add(Integer.parseInt(tpid));

                    teritorryId = Long.parseLong(tpid);
                    WebContext wctx = WebContextFactory.get();
                    HttpSession session = wctx.getSession();
                    Properties properties = new Properties();
                    InitialContext ic = new InitialContext(properties);
                    ITeritorryBIRemote teritorryBIRemote = (ITeritorryBIRemote) ic.lookup(ITeritorryBIRemote.class.getName());

                    List<YahooTerritoryForm> list = teritorryBIRemote.getSelectedNode(teritorryId);
                    JSONSerializer serializer = new JSONSerializer();
                    serializer.registerDefaultSerializers();
                    serializer.setMarshallClassHints(false);
                    serializer.setDebug(true);
                    serializer.setMarshallNullAttributes(false);
                    temp = serializer.toJSON(list);
                    temp = temp.replace("{\"list\":[", "");
                    temp = temp.substring(0, temp.length() - 2);

                    System.out.println("json temp = " + temp);

                    forwardJSP = "[" + temp + "]";


                } else {
                    forwardJSP = "[" + temp + "]";
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            Logger.printError("ERROR", "TerritoryGroupDWR.getchild() ", e);
        }
        return forwardJSP;



    }

    public String removeSelectedNodesFromRightTreeAndRefresh(String tpid) {

        String forwardJSP = "";
        String json = "{}";

        Long teritorryId = 0L;
        try {
            String temp = "";
            if (tpid != null && !tpid.equals("")) {

                teritorryId = Long.parseLong(tpid);
                WebContext wctx = WebContextFactory.get();
                HttpSession session = wctx.getSession();
                Properties properties = new Properties();
                InitialContext ic = new InitialContext(properties);
                ITeritorryBIRemote teritorryBIRemote = (ITeritorryBIRemote) ic.lookup(ITeritorryBIRemote.class.getName());

                List<YahooTerritoryForm> list = teritorryBIRemote.getSelectedNode(teritorryId);
                JSONSerializer serializer = new JSONSerializer();
                serializer.registerDefaultSerializers();
                serializer.setMarshallClassHints(false);
                serializer.setDebug(true);
                serializer.setMarshallNullAttributes(false);
                temp = serializer.toJSON(list);
                temp = temp.replace("{\"list\":[", "");
                temp = temp.substring(0, temp.length() - 2);
                //  json = "{" + temp + "}";
                System.out.println("json temp = " + temp);
                forwardJSP = "[" + temp + "]";

            } else {
                forwardJSP = "[" + temp + "]";
            }
        } catch (Exception e) {
            e.printStackTrace();
            Logger.printError("ERROR", "TerritoryGroupDWR.getchild() ", e);
        }
        return forwardJSP;



    }
}





Sunday, February 27, 2011