public void showContextMenu(final Tree tree, final ResourceGroupEnhancedTreeNode node) { if (node.isAutoClusterNode()) { final ClusterKey clusterKey = (ClusterKey) node.getAttributeAsObject("key"); GWTServiceLookup.getClusterService() .createAutoClusterBackingGroup( clusterKey, true, new AsyncCallback<ResourceGroup>() { @Override public void onFailure(Throwable caught) { CoreGUI.getErrorHandler() .handleError( MSG.view_tree_group_error_updateAutoCluster(clusterKey.getKey()), caught); } @Override public void onSuccess(ResourceGroup result) { showContextMenu(tree, node, result); } }); } else if (node.isCompatibleGroupTopNode()) { ResourceGroupCriteria criteria = new ResourceGroupCriteria(); criteria.addFilterId(Integer.parseInt(node.getAttribute("id"))); GWTServiceLookup.getResourceGroupService() .findResourceGroupsByCriteria( criteria, new AsyncCallback<PageList<ResourceGroup>>() { @Override public void onFailure(Throwable caught) { CoreGUI.getErrorHandler() .handleError(MSG.view_tree_common_contextMenu_loadFail_group(), caught); } @Override public void onSuccess(PageList<ResourceGroup> result) { showContextMenu(tree, node, result.get(0)); } }); } }