sorry, just realized it's dev group ;)

----- Original Message ----- From: "Sean Schofield" <[EMAIL PROTECTED]>
To: "MyFaces Development" <[email protected]>
Sent: Wednesday, February 08, 2006 3:00 PM
Subject: Re: Tree2 client side toggle - update after deletion


Please post to the user list.

FYI I hope to turn my attention to many of the outstanding tree2
issues shortly.  Stay tuned on the user list.

Sean

On 2/8/06, Michal Glowacki <[EMAIL PROTECTED]> wrote:
Hello all,

    I've got question to Sean (well, maybe someone else could help me as
well).

I'm developing an admin console for my company. All employers are using
browser with java script enabled so I decided to use tree2 with
clientSideToggle set to "true". What my problem is, when I delete LAST
subcategory in EXPANDED category node, I've ServletException about expanded leaf - well, it's logical, I deleted last subnode, so parent has become leaf
and cannot be expanded. I using the following code (in my backing bean -
actually it's PageBean 'cause I'm using Creator 2) to collapse path to
deleted node and expand new path without deleted node. It doesn't work - I
event tried to use toggleExpand() on this node - no results. Still error
"Encountered node [0:0:0:2:3] + in illogical state ...". Could anyone give
me a hint how to fix it? I believe the problem is that the old tree is
somewhere cached and my methods called in backing bean doesn't update it.
That's my code:


public String removeButton_action() {
        categoryTree.setNodeId(selectedNodeId);
        if(!categoryTree.getNode().isLeaf()) {
            messageStaticText.setText("Selected category is not empty.
Delete all subcategories first."
                    );return null;
        }
        else if(selectedCategoryId == 0) {
            messageStaticText.setText("Category not selected or not
exists.");
            return null;
        }

        javax.swing.JOptionPane confirmDialog = new
javax.swing.JOptionPane();
        confirmDialog.grabFocus();
        int i = confirmDialog.showConfirmDialog(new javax.swing.JFrame(),
"Are you sure you want to delete this category?", "Confirm",
                javax.swing.JOptionPane.YES_NO_OPTION);
        if(i ==
                javax.swing.JOptionPane.YES_OPTION) {
            String[] selectionPath =
                    categoryTree.getPathInformation(selectedNodeId);
            for(int k=0;k<=selectionPath.length-1;k++) {
                System.out.println("selectionPath["+k+"]: " +
selectionPath[k]);
            }


            categoryTree.collapsePath(selectionPath);


            // skiping last node as it has been deleted
String[] newSelectionPath = new String[selectionPath.length-1];
            for(int j = 0; j <= selectionPath.length - 2; j++) {
                newSelectionPath[j] = selectionPath[j];
            }

            for(int k=0;k<=newSelectionPath.length-1;k++) {
                System.out.println("newSelectionPath["+k+"]: " +
newSelectionPath[k]);
            }


            categoryTree.expandPath(newSelectionPath);

categoryTree.setNodeId(newSelectionPath[newSelectionPath.length-1]);
            categoryTree.toggleExpanded();

            selectedCategoryStaticText.setText(
                    (String)createSelectionPath(
                    newSelectionPath[newSelectionPath.length-1]));


categoryTree.setNodeId(newSelectionPath[newSelectionPath.length-1]);

            categoryTree.getDataModel();

            CategoryData.removeCategory(
                new Integer(selectedCategoryId));
            clearEditRemoveTabFields();

            selectedCategoryId = 0;

            return "delete";
                }
        else
            return null;
    }


Michael




Reply via email to