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