Search in sources :

Example 1 with TreeNode

use of com.google.gwt.user.cellview.client.TreeNode in project rstudio by rstudio.

the class TableBrowser method update.

public void update(Connection connection, String hint) {
    // capture scroll position
    final int scrollPosition = scrollPanel_.getVerticalScrollPosition();
    // capture expanded nodes
    final Set<String> expandedNodes = new HashSet<String>();
    TreeNode rootNode = tables_.getRootTreeNode();
    for (int i = 0; i < rootNode.getChildCount(); i++) {
        if (rootNode.isChildOpen(i)) {
            String node = (String) rootNode.getChildValue(i);
            expandedNodes.add(node);
        }
    }
    // update the table then restore expanded nodes
    tablesModel_.update(// connection 
    connection, // track nodes to expand
    expandedNodes, new // table update completed, expand nodes
    Command() {

        @Override
        public void execute() {
            TreeNode rootNode = tables_.getRootTreeNode();
            for (int i = 0; i < rootNode.getChildCount(); i++) {
                final String nodeName = (String) (rootNode.getChildValue(i));
                if (expandedNodes.contains(nodeName))
                    rootNode.setChildOpen(i, true, false);
            }
        }
    }, new // node expansion completed, restore scroll position
    Command() {

        @Override
        public void execute() {
            // delay 100ms to allow expand animation to complete
            new Timer() {

                @Override
                public void run() {
                    scrollPanel_.setVerticalScrollPosition(scrollPosition);
                }
            }.schedule(100);
        }
    });
}
Also used : Timer(com.google.gwt.user.client.Timer) TreeNode(com.google.gwt.user.cellview.client.TreeNode) HashSet(java.util.HashSet)

Example 2 with TreeNode

use of com.google.gwt.user.cellview.client.TreeNode in project openremote by openremote.

the class FormTree method refresh.

public void refresh(TreeNode treeNode, Map<String, Boolean> openMap) {
    if (treeNode == null) {
        return;
    }
    for (int i = 0, n = treeNode.getChildCount(); i < n; ++i) {
        if (null == treeNode.getChildValue(i) || treeNode.isChildLeaf(i)) {
            continue;
        }
        treeNode.setChildOpen(i, false);
        Boolean open = openMap.get(getTreeNodeId(treeNode.getChildValue(i)));
        if (open != null && open) {
            TreeNode childNode = treeNode.setChildOpen(i, true);
            refresh(childNode, openMap);
        }
    }
}
Also used : TreeNode(com.google.gwt.user.cellview.client.TreeNode)

Example 3 with TreeNode

use of com.google.gwt.user.cellview.client.TreeNode in project openremote by openremote.

the class FormTree method getNodeOpenMap.

public void getNodeOpenMap(TreeNode treeNode, Map<String, Boolean> openMap) {
    if (treeNode == null) {
        return;
    }
    for (int i = 0, n = treeNode.getChildCount(); i < n; ++i) {
        if (null == treeNode.getChildValue(i) || treeNode.isChildLeaf(i)) {
            continue;
        }
        openMap.put(getTreeNodeId(treeNode.getChildValue(i)), treeNode.isChildOpen(i));
        // This gets the child node, but doesn't change the open status (there's no other way to get the child)
        TreeNode childNode = treeNode.setChildOpen(i, treeNode.isChildOpen(i));
        getNodeOpenMap(childNode, openMap);
    }
}
Also used : TreeNode(com.google.gwt.user.cellview.client.TreeNode)

Example 4 with TreeNode

use of com.google.gwt.user.cellview.client.TreeNode in project openremote by openremote.

the class FormTree method refresh.

public void refresh(String forceOpenNodeId) {
    Map<String, Boolean> openMap = new HashMap<>();
    TreeNode root = getRootTreeNode();
    getNodeOpenMap(root, openMap);
    openMap.put(getTreeNodeId(root), true);
    if (forceOpenNodeId != null)
        openMap.put(forceOpenNodeId, true);
    refresh(root, openMap);
}
Also used : HashMap(java.util.HashMap) TreeNode(com.google.gwt.user.cellview.client.TreeNode)

Aggregations

TreeNode (com.google.gwt.user.cellview.client.TreeNode)4 Timer (com.google.gwt.user.client.Timer)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1