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);
}
});
}
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);
}
}
}
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);
}
}
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);
}