private void hideOfflineUsers() { int i = 0; if (OfflineUsers.isSelected()) { final ContactList contactList = SparkManager.getWorkspace().getContactList(); i = 0; for (CheckNode node : nodes) { if (contactList.getContactItemByDisplayName(node.toString()).getPresence().getType() == Presence.Type.unavailable) { if (node.getParent() != null) { TreeNode parent = node.getParent(); TreeNode[] path = ((DefaultTreeModel) checkTree.getTree().getModel()).getPathToRoot(parent); ((DefaultTreeModel) checkTree.getTree().getModel()).removeNodeFromParent(node); checkTree.getTree().setSelectionPath(new TreePath(path)); NodesGroups.add(new ArrayList<Object>()); NodesGroups.get(i).add(parent); NodesGroups.get(i).add(node); i++; } } } for (int x = 0; x < groupNodes.size(); x++) { if (groupNodes.get(x).toString().equals(Res.getString("group.offline"))) { OfflineGroup = x; TreeNode parent = groupNodes.get(x).getParent(); TreeNode[] path = ((DefaultTreeModel) checkTree.getTree().getModel()).getPathToRoot(parent); ((DefaultTreeModel) checkTree.getTree().getModel()) .removeNodeFromParent(groupNodes.get(x)); checkTree.getTree().setSelectionPath(new TreePath(path)); } } } else { i = 0; DefaultMutableTreeNode child = groupNodes.get(OfflineGroup); ((DefaultTreeModel) checkTree.getTree().getModel()) .insertNodeInto(child, rosterNode, rosterNode.getChildCount()); TreeNode[] path = ((DefaultTreeModel) checkTree.getTree().getModel()).getPathToRoot(rosterNode); checkTree.getTree().expandPath(new TreePath(path)); checkTree.expandTree(); for (CheckNode node : nodes) { if (node.getParent() == null) { child = (CheckNode) NodesGroups.get(i).get(1); ((DefaultTreeModel) checkTree.getTree().getModel()) .insertNodeInto( child, ((CheckNode) NodesGroups.get(i).get(0)), ((CheckNode) NodesGroups.get(i).get(0)).getChildCount()); path = ((DefaultTreeModel) checkTree.getTree().getModel()).getPathToRoot(node); checkTree.getTree().expandPath(new TreePath(path)); checkTree.expandTree(); i++; } } } }