[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java | 21 +++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
New commits:
commit f211290ee9675586b2d608f697cb670eaefaf7e3
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Feb 18 16:39:54 2011 -0500
BZ 535806 validate the number fields so they accept only decimals
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
index 3f4a4bd..df8d130 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
@@ -39,6 +39,7 @@ import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
+import com.smartgwt.client.widgets.form.validator.IsFloatValidator;
import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertConditionCategory;
@@ -390,7 +391,9 @@ public class NewConditionEditor extends LocatableDynamicForm {
absoluteValue.setWrapTitle(false);
absoluteValue.setRequired(true);
absoluteValue.setTooltip(MSG.view_alert_definition_condition_editor_metric_threshold_value_tooltip());
-
+ absoluteValue.setHoverWidth(200);
+ absoluteValue.setValidateOnChange(true);
+ absoluteValue.setValidators(new IsFloatValidator());
absoluteValue.setShowIfCondition(ifFunc);
formItems.add(absoluteValue);
@@ -415,7 +418,10 @@ public class NewConditionEditor extends LocatableDynamicForm {
baselinePercentage.setWrapTitle(false);
baselinePercentage.setRequired(true);
baselinePercentage.setTooltip(MSG.view_alert_definition_condition_editor_metric_baseline_percentage_tooltip());
+ baselinePercentage.setHoverWidth(200);
baselinePercentage.setShowIfCondition(ifFunc);
+ baselinePercentage.setValidateOnChange(true);
+ baselinePercentage.setValidators(new IsFloatValidator());
formItems.add(baselinePercentage);
SelectItem baselineSelection = new SelectItem(BASELINE_SELECTION_ITEMNAME, MSG
@@ -468,6 +474,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
limits.put("MAX", MSG.view_alert_definition_condition_editor_common_max());
minMaxAvgSelection
.setTooltip(MSG.view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip());
+ minMaxAvgSelection.setHoverWidth(200);
minMaxAvgSelection.setValueMap(limits);
minMaxAvgSelection.setDefaultValue("AVG");
minMaxAvgSelection.setWrapTitle(false);
@@ -482,13 +489,17 @@ public class NewConditionEditor extends LocatableDynamicForm {
absoluteValue.setWrapTitle(false);
absoluteValue.setRequired(true);
absoluteValue.setTooltip(MSG.view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip());
+ absoluteValue.setHoverWidth(200);
absoluteValue.setShowIfCondition(ifFunc);
+ absoluteValue.setValidateOnChange(true);
+ absoluteValue.setValidators(new IsFloatValidator());
formItems.add(absoluteValue);
TextItem regex = new TextItem(CALLTIME_THRESHOLD_REGEX_ITEMNAME, MSG
.view_alert_definition_condition_editor_metric_calltime_common_regex());
regex.setRequired(false);
regex.setTooltip(MSG.view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip());
+ regex.setHoverWidth(200);
regex.setWrapTitle(false);
regex.setShowIfCondition(ifFunc);
formItems.add(regex);
@@ -515,6 +526,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
limits.put("MAX", MSG.view_alert_definition_condition_editor_common_max());
minMaxAvgSelection
.setTooltip(MSG.view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip());
+ minMaxAvgSelection.setHoverWidth(200);
minMaxAvgSelection.setValueMap(limits);
minMaxAvgSelection.setDefaultValue("AVG");
minMaxAvgSelection.setWrapTitle(false);
@@ -530,13 +542,17 @@ public class NewConditionEditor extends LocatableDynamicForm {
percentage.setWrapTitle(false);
percentage.setRequired(true);
percentage.setTooltip(MSG.view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip());
+ percentage.setHoverWidth(200);
percentage.setShowIfCondition(ifFunc);
+ percentage.setValidateOnChange(true);
+ percentage.setValidators(new IsFloatValidator());
formItems.add(percentage);
TextItem regex = new TextItem(CALLTIME_CHANGE_REGEX_ITEMNAME, MSG
.view_alert_definition_condition_editor_metric_calltime_common_regex());
regex.setRequired(false);
regex.setTooltip(MSG.view_alert_definition_condition_editor_metric_calltime_common_regex_tooltip());
+ regex.setHoverWidth(200);
regex.setWrapTitle(false);
regex.setShowIfCondition(ifFunc);
formItems.add(regex);
@@ -664,6 +680,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
.view_alert_definition_condition_editor_event_regex());
eventRegex.setRequired(false);
eventRegex.setTooltip(MSG.view_alert_definition_condition_editor_event_regex_tooltip());
+ eventRegex.setHoverWidth(200);
eventRegex.setWrapTitle(false);
eventRegex.setShowIfCondition(ifFunc);
formItems.add(eventRegex);
@@ -739,6 +756,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
comparatorSelection.setDefaultValue("<");
comparatorSelection
.setTooltip(MSG.view_alert_definition_condition_editor_metric_threshold_comparator_tooltip());
+ comparatorSelection.setHoverWidth(200);
comparatorSelection.setShowIfCondition(ifFunc);
return comparatorSelection;
}
@@ -756,6 +774,7 @@ public class NewConditionEditor extends LocatableDynamicForm {
comparatorSelection.setDefaultValue("CH");
comparatorSelection.setTooltip(MSG
.view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip());
+ comparatorSelection.setHoverWidth(200);
comparatorSelection.setShowIfCondition(ifFunc);
return comparatorSelection;
}
13 years, 2 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java | 6 +++++-
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java | 6 +++++-
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/download/DownloadServlet.java | 6 +++++-
3 files changed, 15 insertions(+), 3 deletions(-)
New commits:
commit 1aacb18dccff69719482beadb56a6097e743295b
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Feb 18 15:47:27 2011 -0500
BZ 535780 - disable cache when user is downloading agent/cli/connectors/bundle tool
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java
index e5c0e46..c085d06 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java
@@ -83,6 +83,10 @@ public class AgentUpdateServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+ // seeing odd browser caching issues, even though we set Last-Modified. so force no caching for now
+ disableBrowserCache(resp);
+
String servletPath = req.getServletPath();
if (servletPath != null) {
if (isServerAcceptingRequests()) {
@@ -181,7 +185,7 @@ public class AgentUpdateServlet extends HttpServlet {
}
private void disableBrowserCache(HttpServletResponse resp) {
- resp.setHeader("Cache-Control", "no-cache");
+ resp.setHeader("Cache-Control", "no-cache, no-store");
resp.setHeader("Expires", "-1");
resp.setHeader("Pragma", "no-cache");
}
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java
index 81d0731..bb8654d 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java
@@ -88,6 +88,10 @@ public class RemoteClientServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+ // seeing odd browser caching issues, even though we set Last-Modified. so force no caching for now
+ disableBrowserCache(resp);
+
String servletPath = req.getServletPath();
if (servletPath != null) {
if (isServerAcceptingRequests()) {
@@ -206,7 +210,7 @@ public class RemoteClientServlet extends HttpServlet {
}
private void disableBrowserCache(HttpServletResponse resp) {
- resp.setHeader("Cache-Control", "no-cache");
+ resp.setHeader("Cache-Control", "no-cache, no-store");
resp.setHeader("Expires", "-1");
resp.setHeader("Pragma", "no-cache");
}
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/download/DownloadServlet.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/download/DownloadServlet.java
index 8c1a7bb..6e4b0ec 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/download/DownloadServlet.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/download/DownloadServlet.java
@@ -57,6 +57,10 @@ public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+ // seeing odd browser caching issues, even though we set Last-Modified. so force no caching for now
+ disableBrowserCache(resp);
+
if (isServerAcceptingRequests()) {
File requestedDirectory = getRequestedDirectory(req);
if (requestedDirectory == null) {
@@ -200,7 +204,7 @@ public class DownloadServlet extends HttpServlet {
}
private void disableBrowserCache(HttpServletResponse resp) {
- resp.setHeader("Cache-Control", "no-cache");
+ resp.setHeader("Cache-Control", "no-cache, no-store");
resp.setHeader("Expires", "-1");
resp.setHeader("Pragma", "no-cache");
}
13 years, 2 months
[rhq] modules/enterprise
by mazz
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java | 5 +++++
1 file changed, 5 insertions(+)
New commits:
commit c4fa41af0487cd9b6efce6cfd3955ae81e0c0cb8
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Feb 18 15:19:18 2011 -0500
BZ 571873 gracefully create the alert def even if the description is too long. just truncate the desc
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 050ee90..af9f18a 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -594,6 +594,11 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
private void checkAlertDefinition(AlertDefinition alertDefinition, Integer resourceId)
throws InvalidAlertDefinitionException {
+ // if someone enters a really long description, we need to truncate it - the column is only 250 chars
+ if (alertDefinition.getDescription().length() > 250) {
+ alertDefinition.setDescription(alertDefinition.getDescription().substring(0, 250));
+ }
+
for (AlertCondition alertCondition : alertDefinition.getConditions()) {
AlertConditionCategory alertConditionCategory = alertCondition.getCategory();
if (alertConditionCategory == AlertConditionCategory.ALERT) {
13 years, 2 months
[rhq] 2 commits - modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java | 1 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java | 2 ++
2 files changed, 3 insertions(+)
New commits:
commit f896da0dabc1c1b55c9174acdec579a88c30b420
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Feb 18 15:06:29 2011 -0500
BZ 561924 - make sure the modified time changes when updating an alert def
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 03aba63..050ee90 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -530,6 +530,8 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
}
fixRecoveryId(oldAlertDefinition);
+ oldAlertDefinition.setMtime(System.currentTimeMillis());
+
AlertDefinition newAlertDefinition = entityManager.merge(oldAlertDefinition);
if (isResourceLevel
commit 1165aa226878b762b1e7a91eae317633e4bb38dd
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Feb 18 15:05:52 2011 -0500
don't launch a separate browser tab/window when clicking the parent link - keep in the same browser space
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java
index aeba7c2..1ac2862 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java
@@ -65,6 +65,7 @@ public class ResourceAlertDefinitionsDataSource extends AbstractAlertDefinitions
// add two more columns
ListGridField parentIdField = new ListGridField(FIELD_PARENT, MSG.view_alerts_field_parent());
parentIdField.setType(ListGridFieldType.LINK);
+ parentIdField.setTarget("_self");
parentIdField.setWidth(100);
fields.add(parentIdField);
13 years, 2 months
[rhq] Branch 'release-3.0.0' - modules/core
by John Sanda
modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java | 17 +++-------
1 file changed, 6 insertions(+), 11 deletions(-)
New commits:
commit 84da443dc22519f1f6303d388ba97b30e16d926a
Author: John Sanda <jsanda(a)redhat.com>
Date: Fri Feb 18 14:33:40 2011 -0500
Revert "[BZ 677349] Do not obtain PC read lock prematurely"
This reverts commit f2e5b75ab09284863fadfa26fb9c7f67ed2a9fd6.
diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
index 943ed40..dcafd66 100644
--- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
+++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/event/EventContextImpl.java
@@ -39,16 +39,11 @@ import java.util.Set;
*/
public class EventContextImpl implements EventContext {
private Resource resource;
+ private EventManager eventManager;
public EventContextImpl(@NotNull Resource resource) {
this.resource = resource;
- }
-
- // A reference to EventManager was previously stored in a member variable named eventManager. That should *not*
- // be done because of possible concurrency issues. See https://bugzilla.redhat.com/show_bug.cgi?id=677349 for
- // details.
- private EventManager getEventManager() {
- return PluginContainer.getInstance().getEventManager();
+ this.eventManager = PluginContainer.getInstance().getEventManager();
}
public void publishEvent(@NotNull Event event) {
@@ -60,7 +55,7 @@ public class EventContextImpl implements EventContext {
throw new IllegalArgumentException("Event has unknown event type - no EventDefinition exists with name '" + event.getType() + "'.");
Set<Event> events = new HashSet<Event>();
events.add(event);
- getEventManager().publishEvents(events, this.resource);
+ this.eventManager.publishEvents(events, this.resource);
}
public void registerEventPoller(@NotNull EventPoller poller, int pollingInterval) {
@@ -101,7 +96,7 @@ public class EventContextImpl implements EventContext {
@NotNull
public SigarProxy getSigar() {
- return getEventManager().getSigar();
+ return this.eventManager.getSigar();
}
private void registerEventPollerInternal(EventPoller poller, int pollingInterval, String sourceLocation) {
@@ -109,13 +104,13 @@ public class EventContextImpl implements EventContext {
if (eventDefinition == null)
throw new IllegalArgumentException("Poller has unknown event type - no EventDefinition exists with name '" + poller.getEventType() + "'.");
int adjustedPollingInterval = Math.max(EventContext.MINIMUM_POLLING_INTERVAL, pollingInterval);
- getEventManager().registerEventPoller(poller, adjustedPollingInterval, this.resource, sourceLocation);
+ this.eventManager.registerEventPoller(poller, adjustedPollingInterval, this.resource, sourceLocation);
}
private void unregisterEventPollerInternal(String eventType, String sourceLocation) {
EventDefinition eventDefinition = EventUtility.getEventDefinition(eventType, this.resource.getResourceType());
if (eventDefinition == null)
throw new IllegalArgumentException("Unknown event type - no EventDefinition exists with name '" + eventType + "'.");
- getEventManager().unregisterEventPoller(this.resource, eventType, sourceLocation);
+ this.eventManager.unregisterEventPoller(this.resource, eventType, sourceLocation);
}
}
13 years, 2 months
[rhq] modules/enterprise
by mazz
modules/enterprise/server/plugins/alert-email/src/main/resources/META-INF/rhq-serverplugin.xml | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
New commits:
commit ba920165b17375ae507ab72ae866e69c22c15395
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Feb 18 14:23:24 2011 -0500
BZ 569824 add a basic email address validation regex
diff --git a/modules/enterprise/server/plugins/alert-email/src/main/resources/META-INF/rhq-serverplugin.xml b/modules/enterprise/server/plugins/alert-email/src/main/resources/META-INF/rhq-serverplugin.xml
index d065ef3..246b931 100644
--- a/modules/enterprise/server/plugins/alert-email/src/main/resources/META-INF/rhq-serverplugin.xml
+++ b/modules/enterprise/server/plugins/alert-email/src/main/resources/META-INF/rhq-serverplugin.xml
@@ -24,7 +24,13 @@
<!-- What can a user configure when defining an alert -->
<alert-configuration>
<c:simple-property name="emailAddress" displayName="Receiver Email Address(es)" type="longString"
- description="Email addresses (separated by comma) used for notifications."/>
+ description="Email addresses (separated by comma) used for notifications.">
+ <c:constraint>
+ <!-- a real email regex that validates all possible email address would be thousands of chars long -->
+ <!-- here we do just a very basic validation of comma-separated str1@str2 -->
+ <c:regex-constraint expression=".+@[^@, ]+(,.+@[^,@ ]+)?"/>
+ </c:constraint>
+ </c:simple-property>
</alert-configuration>
</alert-plugin>
13 years, 2 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java | 73 ++++++----
1 file changed, 47 insertions(+), 26 deletions(-)
New commits:
commit 39762f6b63382770e0308cb1ed1b7c2f12383ca3
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Feb 18 13:25:24 2011 -0500
final clean up of dynagroup edit/new page:
* fix up the group table so its width is ok
* add double click handler and link in name column
* category column now shows group icon (mixed/compat) with tooltip
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
index 3410ff9..e4b3fcf 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/SingleGroupDefinitionView.java
@@ -24,6 +24,7 @@ import static org.rhq.enterprise.gui.coregui.client.inventory.groups.ResourceGro
import static org.rhq.enterprise.gui.coregui.client.inventory.groups.ResourceGroupDataSourceField.PLUGIN;
import static org.rhq.enterprise.gui.coregui.client.inventory.groups.ResourceGroupDataSourceField.TYPE;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Set;
@@ -34,12 +35,13 @@ import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.Record;
-import com.smartgwt.client.types.AutoFitWidthApproach;
import com.smartgwt.client.types.DSOperationType;
import com.smartgwt.client.types.ListGridFieldType;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.events.DoubleClickEvent;
+import com.smartgwt.client.widgets.events.DoubleClickHandler;
import com.smartgwt.client.widgets.form.fields.CheckboxItem;
import com.smartgwt.client.widgets.form.fields.FormItemIcon;
import com.smartgwt.client.widgets.form.fields.SelectItem;
@@ -52,6 +54,8 @@ import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.form.fields.events.FormItemClickHandler;
import com.smartgwt.client.widgets.form.fields.events.FormItemIconClickEvent;
import com.smartgwt.client.widgets.grid.CellFormatter;
+import com.smartgwt.client.widgets.grid.HoverCustomizer;
+import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.HLayout;
@@ -63,6 +67,8 @@ import org.rhq.core.domain.resource.group.GroupDefinition;
import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.ImageManager;
+import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.PermissionsLoadedListener;
import org.rhq.enterprise.gui.coregui.client.PermissionsLoader;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
@@ -238,51 +244,66 @@ public class SingleGroupDefinitionView extends LocatableVLayout implements Bookm
@Override
protected void configureTable() {
- // i couldn't use percentage widths to work for some reason; using auto-fit instead
+ // i couldn't use percentage widths to work for some reason
ListGridField idField = new ListGridField("id", MSG.common_title_id());
idField.setType(ListGridFieldType.INTEGER);
idField.setWidth("50");
ListGridField nameField = new ListGridField(NAME.propertyName(), NAME.title());
- nameField.setAutoFitWidth(true);
- nameField.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
- //nameField.setWidth("300");
+ nameField.setWidth("300");
+ nameField.setCellFormatter(new CellFormatter() {
+ @Override
+ public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
+ String linkName = record.getAttributeAsString(NAME.propertyName());
+ String linkUrl = LinkManager.getResourceGroupLink(record.getAttributeAsInt("id"));
+ return "<a href=\"" + linkUrl + "\">" + linkName + "</a>";
+ }
+ });
ListGridField descriptionField = new ListGridField(DESCRIPTION.propertyName(), DESCRIPTION.title());
- descriptionField.setAutoFitWidth(true);
- descriptionField.setAutoFitWidthApproach(AutoFitWidthApproach.TITLE);
- //descriptionField.setWidth("300");
+ descriptionField.setWidth("100");
ListGridField typeNameField = new ListGridField(TYPE.propertyName(), TYPE.title());
- typeNameField.setAutoFitWidth(true);
- typeNameField.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
- //typeNameField.setWidth("100");
+ typeNameField.setWidth("100");
ListGridField pluginNameField = new ListGridField(PLUGIN.propertyName(), PLUGIN.title());
- pluginNameField.setAutoFitWidth(true);
- pluginNameField.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
- //pluginNameField.setWidth("100");
+ pluginNameField.setWidth("100");
ListGridField categoryField = new ListGridField(CATEGORY.propertyName(), CATEGORY.title());
- categoryField.setAutoFitWidth(true);
- categoryField.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
- //categoryField.setWidth("100");
- categoryField.setCellFormatter(new CellFormatter() {
+ categoryField.setWidth("100");
+ categoryField.setType(ListGridFieldType.ICON);
+ HashMap<String, String> categoryImages = new HashMap<String, String>(2);
+ categoryImages.put(GroupCategory.COMPATIBLE.name(), ImageManager.getGroupIcon(GroupCategory.COMPATIBLE));
+ categoryImages.put(GroupCategory.MIXED.name(), ImageManager.getGroupIcon(GroupCategory.MIXED));
+ categoryField.setValueIcons(categoryImages);
+ categoryField.setShowHover(true);
+ categoryField.setHoverCustomizer(new HoverCustomizer() {
@Override
- public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
- if (value != null) {
- if (value.toString().equals(GroupCategory.MIXED.name())) {
- return MSG.view_dynagroup_mixed();
- } else if (value.toString().equals(GroupCategory.COMPATIBLE.name())) {
- return MSG.view_dynagroup_compatible();
- }
+ public String hoverHTML(Object value, ListGridRecord record, int rowNum, int colNum) {
+ String category = record.getAttributeAsString(CATEGORY.propertyName());
+ if (GroupCategory.COMPATIBLE.name().equals(category)) {
+ return MSG.view_dynagroup_compatible();
+ } else if (GroupCategory.MIXED.name().equals(category)) {
+ return MSG.view_dynagroup_mixed();
+ } else {
+ return category; // should never happen
}
- return "";
}
});
setListGridFields(idField, nameField, descriptionField, typeNameField, pluginNameField, categoryField);
+ setListGridDoubleClickHandler(new DoubleClickHandler() {
+ @Override
+ public void onDoubleClick(DoubleClickEvent event) {
+ ListGrid listGrid = (ListGrid) event.getSource();
+ ListGridRecord[] selectedRows = listGrid.getSelection();
+ if (selectedRows != null && selectedRows.length == 1) {
+ String groupUrl = LinkManager.getResourceGroupLink(selectedRows[0].getAttributeAsInt("id"));
+ CoreGUI.goToView(groupUrl);
+ }
+ }
+ });
}
}
13 years, 2 months