Hallo
ich beschäftige mich gerade mit dem eine GUI-APP und habe ich ein Problem :
Also wenn ich eine neue Cateogry einfüge zu einem anderen Cateogry bzw. zum Root und sieht die Hierarchie Struktur wie im Bild (1).
das Problem liegt darin , wenn ich jetzt eine Filter mache dann wird die Hierarchie Struktur weg und werden alle Cateogryen zum Root gehören wie im Bild (2) und wenn ich den Filter lösche dann erscheint keine Elende mehr wie im Bild (3).
ich weiße nicht wo genau das Problem ist .
LG

ich beschäftige mich gerade mit dem eine GUI-APP und habe ich ein Problem :
Also wenn ich eine neue Cateogry einfüge zu einem anderen Cateogry bzw. zum Root und sieht die Hierarchie Struktur wie im Bild (1).
das Problem liegt darin , wenn ich jetzt eine Filter mache dann wird die Hierarchie Struktur weg und werden alle Cateogryen zum Root gehören wie im Bild (2) und wenn ich den Filter lösche dann erscheint keine Elende mehr wie im Bild (3).
ich weiße nicht wo genau das Problem ist .
LG


Java:
public void addItem() {
getModel().setAddingNode(true);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
WalletItem item = (WalletItem) node.getUserObject();
WalletItem parentItem;
if (item.getType() == ItemType.category) {
parentItem = item;
} else {
//this item is node leaf
parentItem = item.getParent();
}
WalletItem newItem;
if (getModel().isRoot(item)) {
//add another category to the root
newItem = new WalletItem(ItemType.category, "New Category - Untitled");
} else
newItem = new WalletItem(ItemType.item, "New Item- Untitled");
DefaultMutableTreeNode newChildNode = addItemAndNode(parentItem, newItem);
//Make sure the user can see the lovely new node.
tree.scrollPathToVisible(new TreePath(newChildNode.getPath()));
form.displayWalletItemDetails(getModel().getCurrentItem(), DisplayMode.add);
//now set selection to this new node
//this will fire the changeNode event.
tree.getSelectionModel().setSelectionPath(new TreePath(newChildNode.getPath()));
// if (SystemSettings.debug) {
// System.out.println(getModel().dumpFlatList());
// }
getModel().setAddingNode(false);
}
public void addCat() {
getModel().setAddingNode(true);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
WalletItem item = (WalletItem) node.getUserObject();
WalletItem parentItem = getModel().getCurrentItem();;
WalletItem newItem = getModel().getCurrentItem();
List<WalletItem> rootCats = new ArrayList<>();
WalletItem rootItem = (WalletItem) rootNode.getUserObject();
if (getModel().isRoot(item))
{
newItem = new WalletItem(ItemType.category, "New Category - Untitled");
}
else if(!getModel().isRoot(item))
if(item.getType() == ItemType.category)
//add another category to the another category
{
newItem = new WalletItem(ItemType.category, "New Category - Untitled");
}
//rebuildTree(node , rootCats );
DefaultMutableTreeNode newChildNode = addItemAndNode(parentItem, newItem);
//Make sure the user can see the lovely new node.
tree.scrollPathToVisible(new TreePath(newChildNode.getPath()));
form.displayWalletItemDetails(getModel().getCurrentItem(), DisplayMode.add);
//now set selection to this new node
//this will fire the changeNode event.
tree.getSelectionModel().setSelectionPath(new TreePath(newChildNode.getPath()));
getModel().setAddingNode(false);
}
*******************
public void filterItems(String filter){
if(rootNode == null) return;
WalletItem rootItem = (WalletItem) rootNode.getUserObject();
rootNode.removeAllChildren();
if(rootItem.hasChildren()){
List<WalletItem> rootChildren = rootItem.getChildren();
for(int i = 0; i < rootChildren.size(); i++){
WalletItem category = rootChildren.get(i);
if(category.isMatch(filter)){
//System.out.println("cat match: " +category);
DefaultMutableTreeNode catNode = new DefaultMutableTreeNode(category);
catNode.children();
rootNode.add(catNode);
List<WalletItem> catChildren = category.getChildren();
if(catChildren != null){
for(int a = 0; a < catChildren.size(); a++){
WalletItem catChild = catChildren.get(a);
if(catChild.isMatch(filter)){
catNode.add(new DefaultMutableTreeNode(catChild));
}
}
}
} else {
DefaultMutableTreeNode catNode = new DefaultMutableTreeNode(category);
List<WalletItem> catChildren = category.getChildren();
if(catChildren != null){
for(int a = 0; a < catChildren.size(); a++){
if(catChildren.get(a).isMatch(filter)){
catNode.add(new DefaultMutableTreeNode(catChildren.get(a)));
}
}
if(catNode.getChildCount() > 0) rootNode.add(catNode);
}
}
}
treeModel.reload();
expandTree();
}
}
******************
public void doFilter() {
if (fldFilter.getText() != null && fldFilter.getText().trim().length() > 0) {
switchMode(TreePanelMode.filter);
//listExploreView.filterItems(fldFilter.getText());
treeExploreView.filterItems(fldFilter.getText());
}
}
**************
public void buildTreeFromFlatList() {
if (itemsFlatList.size() == 0)
return;
WalletItem rootNode = itemsFlatList.get(0);
//reset first
for (int i = 0; i < itemsFlatList.size(); i++) {
WalletItem item = itemsFlatList.get(i);
item.setChildren(null);
item.setParent(null);
}
WalletItem lastParent = rootNode;
List<WalletItem> rootCats = new ArrayList<>();
List<WalletItem> tempChildList = new ArrayList<>();
for (int i = 1; i < itemsFlatList.size(); i++) {
WalletItem item = itemsFlatList.get(i);
if (ItemType.category == item.getType()) {
//rootNode.addChild(item);
rootCats.add(item);
if (lastParent != item) {
//parent changed.
Collections.sort(tempChildList);
for (WalletItem c : tempChildList) {
lastParent.addChild(c);
}
tempChildList.clear();
lastParent = item;
}
} else {
tempChildList.add(item);
//lastParent.addChild(item);
}
}
Collections.sort(rootCats);
for (WalletItem c : rootCats) {
rootNode.addChild(c);
}
Collections.sort(tempChildList);
for (WalletItem c : tempChildList) {
lastParent.addChild(c);
}
}
***********