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