modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
| 213 ++++++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
| 240 +++++++---
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
| 1
3 files changed, 342 insertions(+), 112 deletions(-)
New commits:
commit cf96f1f4792a405f99a51f40adf4025794db4dd5
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu May 5 15:02:02 2011 -0400
BZ: 698100: ability to add graphable elements to monitor/graphs tab.
-additionally pruned out traits from being listed for measurement additions to
default dash and to graphs views.
-added sorting to Resource/Group menu item lists for Operations,Measurements and
Imports.
-removed autogroup specific url bits as all are persisted groups now.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
index bc2da4f..525f92c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupContextMenu.java
@@ -23,7 +23,17 @@
package org.rhq.enterprise.gui.coregui.client.inventory.groups.detail;
import java.util.EnumSet;
-
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeSet;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
+import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.menu.Menu;
import com.smartgwt.client.widgets.menu.MenuItem;
@@ -36,6 +46,7 @@ import org.rhq.core.domain.criteria.DashboardCriteria;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.dashboard.Dashboard;
import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.ResourceType;
@@ -143,10 +154,11 @@ public class ResourceGroupContextMenu extends LocatableMenu {
pluginConfiguration.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
if (isAutoGroup) {
- CoreGUI.goToView(LinkManager.getAutoGroupTabLink(group.getId(),
"Inventory", "ConnectionSettings"));
+ CoreGUI.goToView(LinkManager.getAutoGroupTabLink(group.getId(),
"Inventory",
+ "ConnectionSettings"));
} else if (isAutoCluster) {
- CoreGUI.goToView(LinkManager
- .getAutoClusterTabLink(group.getId(), "Inventory",
"ConnectionSettings"));
+ CoreGUI.goToView(LinkManager.getAutoClusterTabLink(group.getId(),
"Inventory",
+ "ConnectionSettings"));
} else {
CoreGUI.goToView(LinkManager.getResourceGroupTabLink(group.getId(),
"Inventory",
"ConnectionSettings"));
@@ -182,18 +194,28 @@ public class ResourceGroupContextMenu extends LocatableMenu {
// Operations Menu
MenuItem operations = new
MenuItem(MSG.view_tree_common_contextMenu_operations());
- boolean operationsEnabled = (groupComposite.getResourcePermission().isControl()
&& null != resourceType.getOperationDefinitions() && !resourceType
- .getOperationDefinitions().isEmpty());
+ boolean operationsEnabled = (groupComposite.getResourcePermission().isControl()
+ && null != resourceType.getOperationDefinitions() &&
!resourceType.getOperationDefinitions().isEmpty());
operations.setEnabled(operationsEnabled);
if (operationsEnabled) {
Menu opSubMenu = new Menu();
- for (final OperationDefinition operationDefinition :
resourceType.getOperationDefinitions()) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, OperationDefinition> definitionMap = new HashMap<String,
OperationDefinition>();
+ for (OperationDefinition o : resourceType.getOperationDefinitions()) {
+ ordered.add(o.getDisplayName());
+ definitionMap.put(o.getDisplayName(), o);
+ }
+
+ for (String displayName : ordered) {
+ final OperationDefinition operationDefinition =
definitionMap.get(displayName);
+
MenuItem operationItem = new
MenuItem(operationDefinition.getDisplayName());
operationItem.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
- String viewPath = LinkManager.getResourceGroupTabLink(group,
- ResourceDetailView.Tab.OPERATIONS,
ResourceDetailView.OperationsSubTab.SCHEDULES)
- + "/0/" + operationDefinition.getId();
+ String viewPath = LinkManager.getResourceGroupTabLink(group,
ResourceDetailView.Tab.OPERATIONS,
+ ResourceDetailView.OperationsSubTab.SCHEDULES)
+ + "/0/" + operationDefinition.getId();
CoreGUI.goToView(viewPath);
}
});
@@ -284,57 +306,135 @@ public class ResourceGroupContextMenu extends LocatableMenu {
public void onSuccess(PageList<Dashboard> result) {
if (type.getMetricDefinitions() != null) {
- for (final MeasurementDefinition def :
type.getMetricDefinitions()) {
-
- MenuItem defItem = new MenuItem(def.getDisplayName());
- measurementsSubMenu.addItem(defItem);
- Menu defSubItem = new Menu();
- defItem.setSubmenu(defSubItem);
-
- for (final Dashboard d : result) {
- MenuItem addToDBItem = new MenuItem(MSG
-
.view_tree_common_contextMenu_addChartToDashboard(d.getName()));
- defSubItem.addItem(addToDBItem);
-
- addToDBItem.addClickHandler(new ClickHandler() {
- public void onClick(MenuItemClickEvent
menuItemClickEvent) {
-
- DashboardPortlet p = new DashboardPortlet(MSG
- .view_tree_common_contextMenu_groupGraph(),
ResourceGroupGraphPortlet.KEY,
- 250);
- p.getConfiguration().put(
- new
PropertySimple(ResourceGroupGraphPortlet.CFG_RESOURCE_GROUP_ID, group
- .getId()));
- p.getConfiguration()
- .put(
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, MeasurementDefinition> definitionMap = new
HashMap<String, MeasurementDefinition>();
+ for (MeasurementDefinition m : type.getMetricDefinitions()) {
+ ordered.add(m.getDisplayName());
+ definitionMap.put(m.getDisplayName(), m);
+ }
+
+ for (String displayName : ordered) {
+ final MeasurementDefinition def =
definitionMap.get(displayName);
+ //only add menu items for Measurement
+ if (def.getDataType().equals(DataType.MEASUREMENT)) {
+ MenuItem defItem = new MenuItem(def.getDisplayName());
+ measurementsSubMenu.addItem(defItem);
+ Menu defSubItem = new Menu();
+ defItem.setSubmenu(defSubItem);
+
+ for (final Dashboard d : result) {
+ MenuItem addToDBItem = new MenuItem(MSG
+
.view_tree_common_contextMenu_addChartToDashboard(d.getName()));
+ defSubItem.addItem(addToDBItem);
+
+ addToDBItem.addClickHandler(new ClickHandler() {
+ public void onClick(MenuItemClickEvent
menuItemClickEvent) {
+
+ DashboardPortlet p = new
DashboardPortlet(MSG
+
.view_tree_common_contextMenu_groupGraph(),
+ ResourceGroupGraphPortlet.KEY, 250);
+ p.getConfiguration().put(
+ new
PropertySimple(ResourceGroupGraphPortlet.CFG_RESOURCE_GROUP_ID,
+ group.getId()));
+ p.getConfiguration().put(
new
PropertySimple(ResourceGroupGraphPortlet.CFG_DEFINITION_ID, def
.getId()));
- d.addPortlet(p);
-
-
GWTServiceLookup.getDashboardService().storeDashboard(d,
- new AsyncCallback<Dashboard>() {
- public void onFailure(Throwable caught)
{
-
CoreGUI.getErrorHandler().handleError(
-
MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(),
- caught);
+ d.addPortlet(p);
+
+
GWTServiceLookup.getDashboardService().storeDashboard(d,
+ new AsyncCallback<Dashboard>() {
+ public void onFailure(Throwable
caught) {
+ CoreGUI
+ .getErrorHandler()
+ .handleError(
+ MSG
+
.view_tree_common_contextMenu_saveChartToDashboardFailure(),
+ caught);
+ }
+
+ public void onSuccess(Dashboard
result) {
+ String msg = MSG
+
.view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
+ .getName());
+
CoreGUI.getMessageCenter().notify(
+ new Message(msg,
Message.Severity.Info));
+ }
+ });
+
+ }
+ });
+
+ //add new menu item for adding current graphable
element to view if on Monitor/Graphs tab
+ String currentViewPath = History.getToken();
+ if
(currentViewPath.indexOf("Monitoring/Graphs") > -1) {
+ MenuItem addGraphItem = new
MenuItem(MSG.common_title_add_graph_to_view());
+ defSubItem.addItem(addGraphItem);
+
+ addGraphItem.addClickHandler(new ClickHandler()
{
+ public void onClick(MenuItemClickEvent
menuItemClickEvent) {
+ //generate javascript to call out to.
+ //Ex.
menuLayers.hide();addMetric('${metric.resourceId},${metric.scheduleId}')
+ String grpGraphElements = "";
+ if (isAutoGroup) {
+ grpGraphElements += "ag,";
+ } else {
+ grpGraphElements += "cg,";
}
-
- public void onSuccess(Dashboard result)
{
- String msg = MSG
-
.view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
- .getName());
- CoreGUI.getMessageCenter().notify(
- new Message(msg,
Message.Severity.Info));
+ grpGraphElements += group.getId() +
"," + def.getId();
+ if (isAutoGroup) {//need to postpend the
resource type as third element
+ grpGraphElements += "," +
group.getResourceType().getId();
}
- });
-
- }
- });
-
- }
-
- }
+ //construct portal.war url to access
+ String baseUrl =
"/resource/common/monitor/visibility/IndicatorCharts.do";
+ //No need to rebuild the autogroup url as
everything handled as a compatible group now
+ //
if (isAutoGroup) {
+ //
//Ex. ?parent=10001&ctype=1013&view=Default
+ //
baseUrl += "?parent=" + group.getAutoGroupParentResource().getId()
+ //
+ "&ctype="
+ //
+ group.getResourceType().getId();
+ //
jsCode = "ag," + group.getAutoGroupParentResource().getId() +
","
+ //
+ def.getId() + ","
+ //
+ group.getResourceType().getId();
+ //
} else {
+ //Ex. ?groupId=10001&view=Default
+ baseUrl += "?groupId=" +
group.getId();
+ baseUrl +=
"&view=Default";
+ baseUrl +=
"&action=addChart&metric=" + grpGraphElements;
+ baseUrl +=
"&view=Default";
+ final String url = baseUrl;
+ //initiate HTTP request
+ final RequestBuilder b = new
RequestBuilder(RequestBuilder.GET, baseUrl);
+
+ try {
+ b.setCallback(new RequestCallback()
{
+ public void
onResponseReceived(final Request request,
+ final Response response) {
+ Log
+ .trace("Successfully
submitted request to add graph to view:"
+ + url);
+
+ //kick off a page reload.
+ String currentViewPath =
History.getToken();
+
CoreGUI.goToView(currentViewPath, true);
+ }
+
+ @Override
+ public void onError(Request
request, Throwable t) {
+ Log.trace("Error adding
Metric:" + url, t);
+ }
+ });
+ b.send();
+ } catch (RequestException e) {
+ Log.trace("Error adding
Metric:" + url, e);
+ }
+ }//end of onClick definition
+ });//end of onClick Handler definition
+ }//end of Monitoring/Graphs view check
+ }//end of dashabord iteration
+ }//end of check for Measurement
+ }//end of metric definition iteration
}
}
@@ -342,4 +442,5 @@ public class ResourceGroupContextMenu extends LocatableMenu {
measurements.setSubmenu(measurementsSubMenu);
return measurements;
}
+
}
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 ceb74c1..7149726 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
@@ -27,8 +27,14 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.TreeSet;
import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.RequestBuilder;
+import com.google.gwt.http.client.RequestCallback;
+import com.google.gwt.http.client.RequestException;
+import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSCallback;
@@ -57,7 +63,9 @@ import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.criteria.ResourceTypeCriteria;
import org.rhq.core.domain.dashboard.Dashboard;
import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceCategory;
@@ -344,6 +352,7 @@ public class ResourceTreeView extends LocatableVLayout {
// fetch the resource composite, we need resource permission info for enablement
decisions
ResourceCriteria criteria = new ResourceCriteria();
criteria.addFilterId(resourceId);
+ criteria.fetchSchedules(true);
GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria,
new AsyncCallback<PageList<ResourceComposite>>() {
@@ -405,7 +414,8 @@ public class ResourceTreeView extends LocatableVLayout {
pluginConfiguration.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
- CoreGUI.goToView(LinkManager.getResourceTabLink(resource.getId(),
"Inventory", "ConnectionSettings"));
+ CoreGUI.goToView(LinkManager
+ .getResourceTabLink(resource.getId(), "Inventory",
"ConnectionSettings"));
}
});
}
@@ -436,14 +446,24 @@ public class ResourceTreeView extends LocatableVLayout {
operations.setEnabled(operationsEnabled);
if (operationsEnabled) {
Menu opSubMenu = new Menu();
- for (final OperationDefinition operationDefinition :
resourceType.getOperationDefinitions()) {
+
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, OperationDefinition> definitionMap = new HashMap<String,
OperationDefinition>();
+ for (OperationDefinition o : resourceType.getOperationDefinitions()) {
+ ordered.add(o.getDisplayName());
+ definitionMap.put(o.getDisplayName(), o);
+ }
+ for (String displayName : ordered) {
+ final OperationDefinition operationDefinition =
definitionMap.get(displayName);
+
MenuItem operationItem = new
MenuItem(operationDefinition.getDisplayName());
operationItem.addClickHandler(new ClickHandler() {
public void onClick(MenuItemClickEvent event) {
String viewPath =
LinkManager.getResourceTabLink(resource.getId(),
- ResourceDetailView.Tab.OPERATIONS,
ResourceDetailView.OperationsSubTab.SCHEDULES)
- + "/0/" + operationDefinition.getId();
+ ResourceDetailView.Tab.OPERATIONS,
ResourceDetailView.OperationsSubTab.SCHEDULES)
+ + "/0/" + operationDefinition.getId();
CoreGUI.goToView(viewPath);
}
});
@@ -461,7 +481,16 @@ public class ResourceTreeView extends LocatableVLayout {
boolean createChildResourcesEnabled =
resourcePermission.isCreateChildResources();
if (createChildResourcesEnabled) {
Menu createChildSubMenu = new Menu();
- for (final ResourceType childType : resourceType.getChildResourceTypes()) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, ResourceType> typeMap = new HashMap<String,
ResourceType>();
+ for (ResourceType o : resourceType.getChildResourceTypes()) {
+ ordered.add(o.getName());
+ typeMap.put(o.getName(), o);
+ }
+
+ for (String type : ordered) {
+ final ResourceType childType = typeMap.get(type);
if (childType.isCreatable()) {
MenuItem createItem = new MenuItem(childType.getName());
@@ -487,7 +516,16 @@ public class ResourceTreeView extends LocatableVLayout {
boolean manualImportEnabled = resourcePermission.isCreateChildResources();
if (manualImportEnabled) {
Menu importChildSubMenu = new Menu();
- for (final ResourceType childType : resourceType.getChildResourceTypes()) {
+
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, ResourceType> typeMap = new HashMap<String,
ResourceType>();
+ for (ResourceType o : resourceType.getChildResourceTypes()) {
+ ordered.add(o.getName());
+ typeMap.put(o.getName(), o);
+ }
+ for (String name : ordered) {
+ final ResourceType childType = typeMap.get(name);
if (childType.isSupportsManualAdd()) {
MenuItem importItem = new MenuItem(childType.getName());
@@ -501,7 +539,6 @@ public class ResourceTreeView extends LocatableVLayout {
importChildSubMenu.addItem(importItem);
}
}
-
if (resourceType.getCategory() == ResourceCategory.PLATFORM) {
loadManuallyAddServersToPlatforms(importChildSubMenu, resource);
}
@@ -527,7 +564,17 @@ public class ResourceTreeView extends LocatableVLayout {
}
public void onSuccess(PageList<ResourceType> result) {
- for (final ResourceType type : result) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, ResourceType> displayTypes = new HashMap<String,
ResourceType>();
+ for (ResourceType type : result) {
+ displayTypes.put(type.getName(), type);
+ ordered.add(type.getName());
+ }
+
+ int idx = 0;
+ for (String displayType : ordered) {
+ final ResourceType type = displayTypes.get(displayType);
if (type.getParentResourceTypes() == null ||
type.getParentResourceTypes().isEmpty()) {
MenuItem item = new MenuItem(type.getName());
@@ -538,7 +585,7 @@ public class ResourceTreeView extends LocatableVLayout {
}
});
- manuallyAddMenu.addItem(item);
+ manuallyAddMenu.addItem(item, idx++);
}
}
}
@@ -559,57 +606,118 @@ public class ResourceTreeView extends LocatableVLayout {
}
public void onSuccess(PageList<Dashboard> result) {
+ //sort the display items alphabetically
+ TreeSet<String> ordered = new TreeSet<String>();
+ Map<String, MeasurementDefinition> definitionMap = new
HashMap<String, MeasurementDefinition>();
+ for (MeasurementDefinition m : type.getMetricDefinitions()) {
+ ordered.add(m.getDisplayName());
+ definitionMap.put(m.getDisplayName(), m);
+ }
- for (final MeasurementDefinition def : type.getMetricDefinitions())
{
-
- MenuItem defItem = new MenuItem(def.getDisplayName());
- measurementsSubMenu.addItem(defItem);
- Menu defSubItem = new Menu();
- defItem.setSubmenu(defSubItem);
-
- for (final Dashboard d : result) {
- MenuItem addToDBItem = new
MenuItem(MSG.view_tree_common_contextMenu_addChartToDashboard(d
- .getName()));
- 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);
- p.getConfiguration().put(
- new
PropertySimple(ResourceGraphPortlet.CFG_RESOURCE_ID, resource.getId()));
- p.getConfiguration().put(
- new
PropertySimple(ResourceGraphPortlet.CFG_DEFINITION_ID, def.getId()));
-
- d.addPortlet(p);
-
-
GWTServiceLookup.getDashboardService().storeDashboard(d,
- new AsyncCallback<Dashboard>() {
-
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(
-
MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(),
- caught);
- }
+ for (String displayName : ordered) {
+ final MeasurementDefinition def =
definitionMap.get(displayName);
+ //only add menu items for Measurement
+ if (def.getDataType().equals(DataType.MEASUREMENT)) {
+ MenuItem defItem = new MenuItem(def.getDisplayName());
+ measurementsSubMenu.addItem(defItem);
+ Menu defSubItem = new Menu();
+ defItem.setSubmenu(defSubItem);
+
+ for (final Dashboard d : result) {
+ MenuItem addToDBItem = new MenuItem(MSG
+
.view_tree_common_contextMenu_addChartToDashboard(d.getName()));
+ 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);
+ p.getConfiguration().put(
+ new
PropertySimple(ResourceGraphPortlet.CFG_RESOURCE_ID, resource.getId()));
+ p.getConfiguration().put(
+ new
PropertySimple(ResourceGraphPortlet.CFG_DEFINITION_ID, def.getId()));
+
+ d.addPortlet(p);
+
+
GWTServiceLookup.getDashboardService().storeDashboard(d,
+ new AsyncCallback<Dashboard>() {
+
+ public void onFailure(Throwable caught)
{
+
CoreGUI.getErrorHandler().handleError(
+
MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(),
+ caught);
+ }
+
+ public void onSuccess(Dashboard result)
{
+ CoreGUI
+ .getMessageCenter()
+ .notify(
+ new Message(
+ MSG
+
.view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
+ .getName()),
Message.Severity.Info));
+ }
+ });
- public void onSuccess(Dashboard result) {
- CoreGUI
- .getMessageCenter()
- .notify(
- new Message(
- MSG
-
.view_tree_common_contextMenu_saveChartToDashboardSuccessful(result
- .getName()),
Message.Severity.Info));
+ }
+ });
+
+ //add new menu item for adding current graphable element
to view if on Monitor/Graphs tab
+ String currentViewPath = History.getToken();
+ if
(currentViewPath.indexOf("Monitoring/Graphs") > -1) {
+ MenuItem addGraphItem = new
MenuItem(MSG.common_title_add_graph_to_view());
+ defSubItem.addItem(addGraphItem);
+
+ addGraphItem.addClickHandler(new ClickHandler() {
+ public void onClick(MenuItemClickEvent
menuItemClickEvent) {
+ //generate javascript to call out to.
+ //Ex.
menuLayers.hide();addMetric('${metric.resourceId},${metric.scheduleId}')
+ if (getScheduleDefinitionId(resource,
def.getName()) > -1) {
+ String resourceGraphElements =
resource.getId() + ","
+ + getScheduleDefinitionId(resource,
def.getName());
+
+ //construct portal.war url to access
+ String baseUrl =
"/resource/common/monitor/visibility/IndicatorCharts.do";
+ baseUrl += "?id=" +
resource.getId();
+ baseUrl +=
"&view=Default";
+ baseUrl +=
"&action=addChart&metric=" + resourceGraphElements;
+ baseUrl +=
"&view=Default";
+ final String url = baseUrl;
+ //initiate HTTP request
+ final RequestBuilder b = new
RequestBuilder(RequestBuilder.GET, baseUrl);
+
+ try {
+ b.setCallback(new RequestCallback()
{
+ public void
onResponseReceived(final Request request,
+ final Response response) {
+ Log
+ .trace("Successfully
submitted request to add graph to view:"
+ + url);
+
+ //kick off a page reload.
+ String currentViewPath =
History.getToken();
+
CoreGUI.goToView(currentViewPath, true);
+ }
+
+ @Override
+ public void onError(Request
request, Throwable t) {
+ Log.trace("Error adding
Metric:" + url, t);
+ }
+ });
+ b.send();
+ } catch (RequestException e) {
+ Log.trace("Error adding
Metric:" + url, e);
+ }
}
- });
-
+ }
+ });
}
- });
-
- }
-
- }
+ // }//end trait check
+ }//end dashboard iteration
+ }//end trait exclusion
+ }//end measurement def iteration
}
});
@@ -617,6 +725,26 @@ public class ResourceTreeView extends LocatableVLayout {
return measurements;
}
+ /** Locate the specific schedule definition using the definition identifier.
+ */
+ private int getScheduleDefinitionId(Resource resource, String definitionName) {
+ int id = -1;
+ if (resource.getSchedules() != null) {
+ boolean located = false;
+ MeasurementSchedule[] schedules = new
MeasurementSchedule[resource.getSchedules().size()];
+ resource.getSchedules().toArray(schedules);
+ for (int i = 0; (!located && i < resource.getSchedules().size());
i++) {
+ MeasurementSchedule schedule = schedules[i];
+ MeasurementDefinition definition = schedule.getDefinition();
+ if ((definition != null) &&
definition.getName().equals(definitionName)) {
+ located = true;
+ id = schedule.getId();
+ }
+ }
+ }
+ return id;
+ }
+
private void setRootResource(Resource rootResource) {
this.rootResource = rootResource;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
index 0f75682..d387c9e 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties
@@ -94,6 +94,7 @@ common_severity_fatal = Fatal
#--------------
common_title_address = Address
common_title_add_column = Add Column
+common_title_add_graph_to_view = Add Graph to Monitor View
common_title_add_portlet = Add Portlet
common_title_alert_range = Alert Range
common_title_ancestry = Ancestry