/** Trigger a redraw of a tree item * * <p>Call when the model item's representation changed, * so tree item with existing value object needs to be * redrawn. * * @param item {@link TreeItem} */ public static <TV> void triggerTreeItemRefresh(final TreeItem<TV> item) { // TreeView or TreeItem has no 'refresh()', update or redraw method. // 'setValue' only triggers a refresh of the item if value is different // // final TV value = item.getValue(); // item.setValue(null); // item.setValue(value); // The API does expose the valueChangedEvent(), so send that Event.fireEvent(item, new TreeModificationEvent<TV>(TreeItem.<TV>valueChangedEvent(), item, item.getValue())); }
private TreeItem<File> createNode (File dir) { TreeItem<File> treeItem = null ; if (dir == null) { treeItem = new TreeItem<File>(); treeItem.setExpanded(true); } else { treeItem = new TreeItem<File>(dir) { private Boolean isLeaf = null ; @Override public boolean isLeaf() { if (isLeaf != null) { return isLeaf.booleanValue() ; } try { FileList children = DriveUtils.findDirectories (drive, DriveUtils.newId(dir.getId()), Integer.valueOf(1)) ; isLeaf = Boolean.valueOf(children.getItems() == null || children.getItems().isEmpty()) ; return isLeaf.booleanValue() ; } catch (IOException e) { logger.error("Error occurred while getting children list", e); } return true; }} ; treeItem.setExpanded(false); } treeItem.addEventHandler(TreeItem.branchExpandedEvent (), new EventHandler<TreeModificationEvent<File>>() { @Override public void handle(TreeModificationEvent<File> arg0) { if (TreeItem.branchExpandedEvent ().equals(arg0.getEventType())) { logger.info("Branch expanded"); TreeItem<File> node = arg0.getTreeItem() ; File nodeFile = node.getValue() ; if (node.getChildren().isEmpty()) { try { FileList children = DriveUtils.findDirectories (drive, DriveUtils.newId(nodeFile.getId()), null) ; if (children != null && children.getItems() != null) { for (File child : children.getItems()) { node.getChildren().add(createNode(child)); } } } catch (IOException e) { logger.error("Error occurred while expanding the tree", e); } } } } }); return treeItem ; }