modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java | 10 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/CustomResourceGroupTreeGrid.java | 23 - modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeContextMenu.java | 7 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java | 182 ++++++---- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java | 42 +- 5 files changed, 165 insertions(+), 99 deletions(-)
New commits: commit cc672ab2ab3839dde8ce9672b8703cb54ea0ed1e Author: Jay Shaughnessy jshaughn@redhat.com Date: Fri Mar 25 11:24:07 2011 -0400
ResourceGroupTree navigation work - fix various issues with tree select and context menu nav - some refactoring for clarity
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/CustomResourceGroupTreeGrid.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/CustomResourceGroupTreeGrid.java index 5e4ff6f..349c5e7 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/CustomResourceGroupTreeGrid.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/CustomResourceGroupTreeGrid.java @@ -22,7 +22,6 @@ import com.smartgwt.client.data.Record; import com.smartgwt.client.widgets.tree.TreeNode;
import org.rhq.core.domain.resource.ResourceType; -import org.rhq.core.domain.resource.group.ClusterKey; import org.rhq.enterprise.gui.coregui.client.ImageManager; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTreeGrid;
@@ -48,19 +47,15 @@ public class CustomResourceGroupTreeGrid extends LocatableTreeGrid { return node.getIcon(); }
- // if this node is associated with a resource type AND a cluster key, it is a cluster node - // if this node is associated only with a resource type, it is a auto type group node. - // if this node is not associated with either a resource type or cluster key, it is a subcategory node (which uses the default icon) - ResourceType resourceType = node.getResourceType(); - if (resourceType != null) { - ClusterKey clusterKey = node.getClusterKey(); - if (clusterKey != null) { - String icon = ImageManager.getClusteredResourceIcon(resourceType.getCategory()); - return icon; - } else { - boolean open = getTree().isOpen((TreeNode) record); - return "resources/folder_group_" + (open ? "opened" : "closed") + ".png"; - } + if (node.isAutoClusterNode()) { + ResourceType resourceType = node.getResourceType(); + String icon = ImageManager.getClusteredResourceIcon(resourceType.getCategory()); + return icon; + + } else if (node.isCompatibleGroupTopNode() || node.isAutoGroupNode()) { + boolean open = getTree().isOpen((TreeNode) record); + return "resources/folder_group_" + (open ? "opened" : "closed") + ".png"; + }
// use the default image - which is typically for subcategory nodes diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeContextMenu.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeContextMenu.java index 27cf7d6..7ad3a74 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeContextMenu.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeContextMenu.java @@ -43,8 +43,8 @@ public class ResourceGroupTreeContextMenu extends ResourceGroupContextMenu {
public void showContextMenu(ResourceGroupEnhancedTreeNode node) {
- final ClusterKey clusterKey = (ClusterKey) node.getAttributeAsObject("key"); - if (clusterKey != null) { + if (node.isAutoClusterNode()) { + final ClusterKey clusterKey = (ClusterKey) node.getAttributeAsObject("key"); GWTServiceLookup.getClusterService().createAutoClusterBackingGroup(clusterKey, true, new AsyncCallback<ResourceGroup>() { @Override @@ -58,7 +58,8 @@ public class ResourceGroupTreeContextMenu extends ResourceGroupContextMenu { showContextMenu(result); } }); - } else { + + } else if (node.isCompatibleGroupTopNode()) { ResourceGroupCriteria criteria = new ResourceGroupCriteria(); criteria.addFilterId(Integer.parseInt(node.getAttribute("id"))); GWTServiceLookup.getResourceGroupService().findResourceGroupsByCriteria(criteria, diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java index d3f4fbd..04fbfbd 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeView.java @@ -93,17 +93,21 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka private static final String FAKE_ROOT_ID = "__fakeRoot__"; // id of the parent node of our real root node
private TreeGrid treeGrid; - private ViewId currentViewId; - private int rootGroupId; - private int selectedGroupId; - private String selectedNodeId; - + private Map<Integer, ResourceType> typeMap; private ResourceGroupTreeContextMenu contextMenu;
+ // the root (top of tree) compat or mixed group private ResourceGroup rootResourceGroup; - private Map<Integer, ResourceType> typeMap; - private ResourceGroup selectedGroup; + + // the root (top of tree) compat or mixed group id (may bet set prior to rootResourceGroup fetch) + private int rootGroupId; + + // the currently selected tree node + private String currentNodeId; + + // the currently selected group backing the tree node + private ResourceGroup currentGroup;
private Comparator<ResourceGroupEnhancedTreeNode> treeNodeComparator = new Comparator<ResourceGroupEnhancedTreeNode>() { @Override @@ -164,76 +168,93 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka } });
- addMember(this.treeGrid); - contextMenu = new ResourceGroupTreeContextMenu(extendLocatorId("contextMenu")); treeGrid.setContextMenu(contextMenu);
+ treeGrid.addNodeContextClickHandler(new NodeContextClickHandler() { + public void onNodeContextClick(final NodeContextClickEvent event) { + // stop the browser right-click menu + event.cancel(); + + // don't select the node on a right click, since we're not navigating to it, and + // re-select the current node if necessary + ResourceGroupEnhancedTreeNode contextNode = (ResourceGroupEnhancedTreeNode) event.getNode(); + + if (null != currentNodeId) { + TreeNode currentNode = treeGrid.getTree().findById(currentNodeId); + if (!contextNode.equals(currentNode)) { + treeGrid.deselectRecord(contextNode); + treeGrid.selectRecord(currentNode); + } + } + + // only show the context menu for cluster nodes and our top root node + if (contextNode.isCompatibleGroupTopNode() || contextNode.isAutoClusterNode()) { + contextMenu.showContextMenu(contextNode); + } + } + }); + treeGrid.addSelectionChangedHandler(new SelectionChangedHandler() { - @Override + public void onSelectionChanged(SelectionEvent selectionEvent) { if (!selectionEvent.isRightButtonDown() && selectionEvent.getState()) { - selectedNodeId = null; // if user selected a valid node, we'll set this later - ResourceGroupEnhancedTreeNode selectedNode = (ResourceGroupEnhancedTreeNode) selectionEvent - .getRecord(); - com.allen_sauer.gwt.log.client.Log.info("Node selected in tree: " + selectedNode); - - ResourceType type = selectedNode.getResourceType(); - ClusterKey key = selectedNode.getClusterKey(); - if (type != null) { - if (key != null) { - // the user selected a cluster node - let's switch to that cluster group view - com.allen_sauer.gwt.log.client.Log.debug("Selecting cluster group [" + key + "]..."); - selectedNodeId = selectedNode.getID(); - selectClusterGroup(key); + + ResourceGroupEnhancedTreeNode newNode = (ResourceGroupEnhancedTreeNode) selectionEvent.getRecord(); + TreeNode currentNode = (null != currentNodeId) ? treeGrid.getTree().findById(currentNodeId) : null; + + // if re-selecting the current node just return, otherwise deselect the currently selected node + if (null != currentNode) { + if (newNode.equals(currentNode)) { + return; } else { - if (selectedNode.getParentID().equals(FAKE_ROOT_ID)) { - // the user selected the top group node - selectedNodeId = selectedNode.getID(); - String groupId = selectedNodeId; - com.allen_sauer.gwt.log.client.Log.debug("Selecting group [" + groupId + "]..."); - String viewPath = LinkManager.getResourceGroupLink(Integer.parseInt(groupId)); - CoreGUI.goToView(viewPath, true); - } else { - // the user selected a auto type group node; we have got nothing to show, so cancel the selection of this node - treeGrid.deselectRecord(selectedNode); - } + treeGrid.deselectRecord(currentNode); } - } else { - // the user selected a subcategory; we have got nothing to show, so cancel the selection of this node - treeGrid.deselectRecord(selectedNode); } - } - return; - } - });
- treeGrid.addNodeContextClickHandler(new NodeContextClickHandler() { - public void onNodeContextClick(final NodeContextClickEvent event) { - // stop the browser right-click menu - event.cancel(); + com.allen_sauer.gwt.log.client.Log.debug("Node selected in tree: " + newNode);
- // don't select the node on a right click, since we're not navigating to it - ResourceGroupEnhancedTreeNode node = (ResourceGroupEnhancedTreeNode) event.getNode(); - treeGrid.deselectRecord(node); - if (null != selectedNodeId) { - treeGrid.selectRecord(treeGrid.getTree().findById(selectedNodeId)); - } + if (newNode.isCompatibleGroupTopNode()) { + currentNodeId = newNode.getID(); + com.allen_sauer.gwt.log.client.Log.debug("Selecting compatible group [" + currentNodeId + + "]..."); + String viewPath = LinkManager.getResourceGroupLink(Integer.parseInt(currentNodeId)); + String currentViewPath = History.getToken(); + if (!currentViewPath.startsWith(viewPath.substring(1))) { + CoreGUI.goToView(viewPath, true); + } else { + // this should not be necessary but for otherwise the top node does not always show selected + treeGrid.markForRedraw(); + }
- // only show the context menu for cluster nodes and our top root node - ResourceType type = node.getResourceType(); - ClusterKey key = node.getClusterKey(); - if (type != null && (key != null || node.getParentID().equals(FAKE_ROOT_ID))) { - contextMenu.showContextMenu(node); + } else if (newNode.isAutoClusterNode()) { + ClusterKey key = newNode.getClusterKey(); + com.allen_sauer.gwt.log.client.Log.debug("Selecting autocluster group [" + key + "]..."); + currentNodeId = newNode.getID(); + // the user selected a cluster node - let's switch to that cluster group view + selectClusterGroup(key); + + } else if (newNode.isMixedGroupTopNode()) { + currentNodeId = newNode.getID(); + com.allen_sauer.gwt.log.client.Log.debug("Selecting mixed group [" + currentNodeId + "]..."); + + } else { + // a subcategory node, deselect and reselect the current node + treeGrid.deselectRecord(newNode); + if (null != currentNode) { + treeGrid.selectRecord(currentNode); + } + } } + + return; } });
+ addMember(this.treeGrid); }
public void setSelectedGroup(final int groupId, boolean isAutoCluster) { - this.selectedGroupId = groupId; - ResourceGroupCriteria criteria = new ResourceGroupCriteria(); criteria.addFilterId(groupId); criteria.addFilterVisible(Boolean.valueOf(!isAutoCluster)); @@ -241,16 +262,15 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka
GWTServiceLookup.getResourceGroupService().findResourceGroupsByCriteria(criteria, new AsyncCallback<PageList<ResourceGroup>>() { - @Override + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError( MSG.view_tree_common_loadFailed_group(String.valueOf(groupId)), caught); }
- @Override public void onSuccess(PageList<ResourceGroup> result) { ResourceGroup group = result.get(0); - ResourceGroupTreeView.this.selectedGroup = group; + ResourceGroupTreeView.this.currentGroup = group;
GroupCategory groupCategory = group.getGroupCategory(); switch (groupCategory) { @@ -271,8 +291,9 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka Tree tree = new Tree(); tree.setRoot(fakeRoot); treeGrid.setData(tree); - treeGrid.markForRedraw(); + treeGrid.selectRecord(rootNode); break; + case COMPATIBLE: if (group.getClusterResourceGroup() == null) { // This is a straight up compatible group. @@ -293,14 +314,14 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka // Still looking at the same compat-recursive tree
ResourceGroupEnhancedTreeNode selectedNode; - if (this.selectedGroup.getClusterKey() != null) { + if (this.currentGroup.getClusterKey() != null) { // a child cluster node leaf was selected selectedNode = (ResourceGroupEnhancedTreeNode) treeGrid.getTree().find( - ResourceGroupEnhancedTreeNode.CLUSTER_KEY, this.selectedGroup.getClusterKey()); + ResourceGroupEnhancedTreeNode.CLUSTER_KEY, this.currentGroup.getClusterKey()); } else { // the top root node, representing the group itself, was selected selectedNode = (ResourceGroupEnhancedTreeNode) treeGrid.getTree().findById( - String.valueOf(this.selectedGroup.getId())); + String.valueOf(this.currentGroup.getId())); }
if (selectedNode != null) { @@ -331,7 +352,7 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka ResourceTypeRepository.Cache.getInstance().getResourceTypes(typeIds.toArray(new Integer[typeIds.size()]), EnumSet.of(ResourceTypeRepository.MetadataType.subCategory), new ResourceTypeRepository.TypesLoadedCallback() { - @Override + public void onTypesLoaded(Map<Integer, ResourceType> types) { ResourceGroupTreeView.this.typeMap = types; loadTree(root); @@ -342,12 +363,11 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka private void selectClusterGroup(ClusterKey key) { GWTServiceLookup.getClusterService().createAutoClusterBackingGroup(key, true, new AsyncCallback<ResourceGroup>() { - @Override + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_createFailed_autoCluster(), caught); }
- @Override public void onSuccess(ResourceGroup result) { renderAutoCluster(result); } @@ -387,7 +407,7 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka
treeGrid.setData(tree); treeGrid.getTree().openFolder(rootNode); - treeGrid.markForRedraw(); + treeGrid.selectRecord(rootNode); }
public void loadTree(ResourceGroupEnhancedTreeNode parentNode, ClusterFlyweight parentClusterGroup, @@ -636,5 +656,29 @@ public class ResourceGroupTreeView extends LocatableVLayout implements Bookmarka setAttribute(RESOURCE_TYPE, rt); }
+ public boolean isTopNode() { + return getParentID().equals(FAKE_ROOT_ID); + } + + public boolean isMixedGroupTopNode() { + return isTopNode() && (null == getResourceType()); + } + + public boolean isCompatibleGroupTopNode() { + return isTopNode() && (null != getResourceType()) && (null == getClusterKey()); + } + + public boolean isAutoGroupNode() { + return !isTopNode() && (null != getResourceType()) && (null == getClusterKey()); + } + + public boolean isAutoClusterNode() { + return (null != getResourceType()) && (null != getClusterKey()) && !isTopNode(); + } + + public boolean isSubCategoryNode() { + return (null == getResourceType()) && !isMixedGroupTopNode(); + } + } } diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java index 9870a42..455f414 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java @@ -115,6 +115,7 @@ public class ResourceTreeView extends LocatableVLayout { setShowResizeBar(true); }
+ @Override public void onInit() { // TODO (ips): Are we intentionally avoiding calling super.onInit() here? If so, why? } @@ -141,6 +142,7 @@ public class ResourceTreeView extends LocatableVLayout { autoGroupContextMenu = new ResourceGroupContextMenu(extendLocatorId("autoGroupContextMenu"));
treeGrid.addSelectionChangedHandler(new SelectionChangedHandler() { + public void onSelectionChanged(SelectionEvent selectionEvent) { if (!selectionEvent.isRightButtonDown() && selectionEvent.getState()) { ListGridRecord selectedRecord = treeGrid.getSelectedRecord(); @@ -168,6 +170,7 @@ public class ResourceTreeView extends LocatableVLayout { AutoGroupTreeNode agNode = (AutoGroupTreeNode) selectedRecord; selectedNodeId = agNode.getID(); getAutoGroupBackingGroup(agNode, new AsyncCallback<ResourceGroup>() { + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_selection(), caught); @@ -192,27 +195,35 @@ public class ResourceTreeView extends LocatableVLayout { // setContextMenu(resourceContextMenu);
treeGrid.addNodeContextClickHandler(new NodeContextClickHandler() { + public void onNodeContextClick(final NodeContextClickEvent event) { // stop the browser right-click menu event.cancel();
// don't select the node on a right click, since we're not navigating to it treeGrid.deselectRecord(event.getNode()); + TreeNode eventNode = event.getNode(); + + // re-select the current node if necessary if (null != selectedNodeId) { - treeGrid.selectRecord(treeGrid.getTree().findById(selectedNodeId)); + TreeNode selectedNode = treeGrid.getTree().findById(selectedNodeId); + if (!eventNode.equals(selectedNode)) { + treeGrid.selectRecord(selectedNode); + } }
- if (event.getNode() instanceof AutoGroupTreeNode) { - showContextMenu((AutoGroupTreeNode) event.getNode()); - } else if (event.getNode() instanceof ResourceTreeNode) { - if (!((ResourceTreeNode) event.getNode()).isLocked()) { - showContextMenu((ResourceTreeNode) event.getNode()); + if (eventNode instanceof AutoGroupTreeNode) { + showContextMenu((AutoGroupTreeNode) eventNode); + } else if (eventNode instanceof ResourceTreeNode) { + if (!((ResourceTreeNode) eventNode).isLocked()) { + showContextMenu((ResourceTreeNode) eventNode); } } } });
treeGrid.addDataArrivedHandler(new DataArrivedHandler() { + public void onDataArrived(DataArrivedEvent dataArrivedEvent) { updateSelection(); } @@ -236,6 +247,7 @@ public class ResourceTreeView extends LocatableVLayout { criteria.addFilterAutoGroupParentResourceId(agNode.getParentResource().getId()); criteria.addFilterVisible(false); resourceGroupService.findResourceGroupsByCriteria(criteria, new AsyncCallback<PageList<ResourceGroup>>() { + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_node(), caught); } @@ -315,6 +327,7 @@ public class ResourceTreeView extends LocatableVLayout {
private void showContextMenu(AutoGroupTreeNode agNode) { getAutoGroupBackingGroup(agNode, new AsyncCallback<ResourceGroup>() { + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_selection(), caught); } @@ -334,6 +347,7 @@ public class ResourceTreeView extends LocatableVLayout { criteria.addFilterId(resourceId); GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria, new AsyncCallback<PageList<ResourceComposite>>() { + public void onFailure(Throwable caught) { CoreGUI.getMessageCenter().notify( new Message(MSG.view_inventory_resource_loadFailed(String.valueOf(resourceId)), @@ -359,6 +373,7 @@ public class ResourceTreeView extends LocatableVLayout { ResourceTypeRepository.MetadataType.resourceConfigurationDefinition, ResourceTypeRepository.MetadataType.measurements), new ResourceTypeRepository.TypeLoadedCallback() { + public void onTypesLoaded(ResourceType type) { buildResourceContextMenu(resourceComposite, type); resourceContextMenu.showContextMenu(); @@ -386,6 +401,7 @@ public class ResourceTreeView extends LocatableVLayout { // plugin config MenuItem pluginConfiguration = new MenuItem(MSG.view_tabs_common_connectionSettings()); pluginConfiguration.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent event) { CoreGUI.goToView(LinkManager.getResourceTabLink(resource.getId(), "Inventory", "ConnectionSettings")); } @@ -400,6 +416,7 @@ public class ResourceTreeView extends LocatableVLayout { resourceConfiguration.setEnabled(enabled); if (enabled) { resourceConfiguration.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent event) { CoreGUI.goToView(LinkManager.getResourceTabLink(resource.getId(), "Configuration", "Current")); } @@ -420,6 +437,7 @@ public class ResourceTreeView extends LocatableVLayout { for (final OperationDefinition operationDefinition : resourceType.getOperationDefinitions()) { MenuItem operationItem = new MenuItem(operationDefinition.getDisplayName()); operationItem.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent event) { CoreGUI.goToView(LinkManager.getResourceTabLink(resource.getId(), ResourceDetailView.Tab.OPERATIONS, ResourceDetailView.OperationsSubTab.SCHEDULES) @@ -445,6 +463,7 @@ public class ResourceTreeView extends LocatableVLayout { MenuItem createItem = new MenuItem(childType.getName());
createItem.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent event) { ResourceFactoryCreateWizard.showCreateWizard(resource, childType); } @@ -470,6 +489,7 @@ public class ResourceTreeView extends LocatableVLayout { MenuItem importItem = new MenuItem(childType.getName());
importItem.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent event) { ResourceFactoryImportWizard.showImportWizard(resource, childType); } @@ -497,6 +517,7 @@ public class ResourceTreeView extends LocatableVLayout { criteria.addFilterSupportsManualAdd(true); criteria.fetchParentResourceTypes(true); rts.findResourceTypesByCriteria(criteria, new AsyncCallback<PageList<ResourceType>>() { + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_contextMenu_loadFailed_manualAddChildren(), caught); @@ -508,6 +529,7 @@ public class ResourceTreeView extends LocatableVLayout { MenuItem item = new MenuItem(type.getName());
item.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent event) { ResourceFactoryImportWizard.showImportWizard(resource, type); } @@ -527,6 +549,7 @@ public class ResourceTreeView extends LocatableVLayout { DashboardCriteria criteria = new DashboardCriteria(); GWTServiceLookup.getDashboardService().findDashboardsByCriteria(criteria, new AsyncCallback<PageList<Dashboard>>() { + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_contextMenu_loadFailed_dashboard(), caught); @@ -547,6 +570,7 @@ public class ResourceTreeView extends LocatableVLayout { defSubItem.addItem(addToDBItem);
addToDBItem.addClickHandler(new ClickHandler() { + public void onClick(MenuItemClickEvent menuItemClickEvent) { DashboardPortlet p = new DashboardPortlet(MSG .view_tree_common_contextMenu_resourceGraph(), ResourceGraphPortlet.KEY, 250); @@ -559,6 +583,7 @@ public class ResourceTreeView extends LocatableVLayout {
GWTServiceLookup.getDashboardService().storeDashboard(d, new AsyncCallback<Dashboard>() { + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError( MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(), @@ -651,6 +676,7 @@ public class ResourceTreeView extends LocatableVLayout { addMember(treeGrid);
treeGrid.fetchData(treeGrid.getCriteria(), new DSCallback() { + public void execute(DSResponse response, Object rawData, DSRequest request) { Log.info("Done fetching data for tree."); updateSelection(); @@ -670,6 +696,7 @@ public class ResourceTreeView extends LocatableVLayout { ResourceTypeRepository.MetadataType.children, ResourceTypeRepository.MetadataType.subCategory), new ResourceTypeRepository.ResourceTypeLoadedCallback() { + public void onResourceTypeLoaded(List<Resource> result) { treeGrid.getTree() .linkNodes(ResourceTreeDatasource.buildNodes(lineage, lockedData)); @@ -710,6 +737,7 @@ public class ResourceTreeView extends LocatableVLayout { criteria.addFilterVisible(false); criteria.fetchResourceType(true); resourceGroupService.findResourceGroupsByCriteria(criteria, new AsyncCallback<PageList<ResourceGroup>>() { + public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_node(), caught); } @@ -719,12 +747,10 @@ public class ResourceTreeView extends LocatableVLayout { // load the tree up to the autogroup's parent resource loadTree(backingGroup.getAutoGroupParentResource().getId(), new AsyncCallback<Void>() {
- @Override public void onFailure(Throwable caught) { CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_loadFailed_children(), caught); }
- @Override public void onSuccess(Void arg) { // get the node ID and use it to add a map entry, then call this again to finish up... selectedNodeId = AutoGroupTreeNode.idOf(backingGroup.getAutoGroupParentResource(),
commit 22f96df0829e252b3c3de748bbddc7a5d7710704 Author: Jay Shaughnessy jshaughn@redhat.com Date: Fri Mar 25 11:13:55 2011 -0400
Selenium - Make the Login and Registration dialogs locatable.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java index 3a5fa85..865793a 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LoginView.java @@ -39,7 +39,6 @@ import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Img; import com.smartgwt.client.widgets.Label; -import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.DynamicForm; @@ -69,6 +68,7 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableCanvas; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIButton; import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout; +import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
/** * @author Greg Hinkle @@ -78,8 +78,8 @@ public class LoginView extends LocatableCanvas {
private static boolean loginShowing = false;
- private Window window; - private DynamicForm form; + private LocatableWindow window; + private LocatableDynamicForm form; private LocatableDynamicForm inputForm;
private SubmitItem loginButton; @@ -157,7 +157,7 @@ public class LoginView extends LocatableCanvas {
form.setFields(logo, header, new RowSpacerItem(), user, password, loginButton);
- window = new Window(); + window = new LocatableWindow(extendLocatorId("LoginWindow")); window.setWidth(400); window.setHeight(275); window.setTitle(MSG.common_title_welcome()); @@ -367,7 +367,7 @@ public class LoginView extends LocatableCanvas { row.addMember(logoutLabel); column.addMember(row);
- window = new Window(); + window = new LocatableWindow(extendLocatorId("RegistrationWindow")); window.setWidth(670); window.setHeight(330); window.setTitle(MSG.view_login_registerUser());