Java 类javafx.scene.control.TreeItem.TreeModificationEvent 实例源码

项目:org.csstudio.display.builder    文件:TreeHelper.java   
/** 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()));
}
项目:drive-uploader    文件:DriveDirectoryChooserViewController.java   
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 ;
}