[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsDataSource.java | 18 ++++++++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java | 14 +++++--
2 files changed, 26 insertions(+), 6 deletions(-)
New commits:
commit e3421f51e395eda30bcb42e44658e37e26ad6800
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Sep 10 12:55:31 2010 -0400
show priority flag icons in alert def pages
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsDataSource.java
index 7e56aec..8f8c5c3 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/AbstractAlertDefinitionsDataSource.java
@@ -23,6 +23,7 @@ import java.util.Date;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.data.fields.DataSourceImageField;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.types.FieldType;
import com.smartgwt.client.widgets.grid.ListGridRecord;
@@ -70,7 +71,20 @@ public abstract class AbstractAlertDefinitionsDataSource extends RPCDataSource<A
record.setAttribute(FIELD_MTIME, new Date(from.getMtime()));
record.setAttribute(FIELD_ENABLED, from.getEnabled());
record.setAttribute(FIELD_DELETED, from.getDeleted());
- record.setAttribute(FIELD_PRIORITY, from.getPriority().getDisplayName());
+ switch (from.getPriority()) {
+ case HIGH: {
+ record.setAttribute(FIELD_PRIORITY, "/images/icons/Flag_red_16.png");
+ break;
+ }
+ case MEDIUM: {
+ record.setAttribute(FIELD_PRIORITY, "/images/icons/Flag_yellow_16.png");
+ break;
+ }
+ case LOW: {
+ record.setAttribute(FIELD_PRIORITY, "/images/icons/Flag_blue_16.png");
+ break;
+ }
+ }
record.setAttribute(FIELD_OBJECT, from);
return record;
}
@@ -99,7 +113,7 @@ public abstract class AbstractAlertDefinitionsDataSource extends RPCDataSource<A
enabledField.setType(FieldType.BOOLEAN);
addField(enabledField);
- DataSourceTextField priorityField = new DataSourceTextField(FIELD_PRIORITY, "Priority");
+ DataSourceImageField priorityField = new DataSourceImageField(FIELD_PRIORITY, "Priority");
addField(priorityField);
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
index b3f07bd..d1f5de5 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/GeneralPropertiesAlertDefinitionForm.java
@@ -97,7 +97,7 @@ public class GeneralPropertiesAlertDefinitionForm extends LocatableDynamicForm i
descriptionStatic.setValue(alertDef.getDescription());
prioritySelection.setValue(alertDef.getPriority().name());
- priorityStatic.setValue(alertDef.getPriority().getDisplayName());
+ priorityStatic.setValue(alertDef.getPriority().name());
enabledSelection.setValue(alertDef.getEnabled() ? "Yes" : "No");
enabledStatic.setValue(alertDef.getEnabled() ? "Yes" : "No");
@@ -216,12 +216,18 @@ public class GeneralPropertiesAlertDefinitionForm extends LocatableDynamicForm i
prioritySelection = new SelectItem("priority", "Priority");
LinkedHashMap<String, String> priorities = new LinkedHashMap<String, String>(3);
- priorities.put(AlertPriority.HIGH.name(), AlertPriority.HIGH.getDisplayName());
- priorities.put(AlertPriority.MEDIUM.name(), AlertPriority.MEDIUM.getDisplayName());
- priorities.put(AlertPriority.LOW.name(), AlertPriority.LOW.getDisplayName());
+ priorities.put(AlertPriority.HIGH.name(), AlertPriority.HIGH.name());
+ priorities.put(AlertPriority.MEDIUM.name(), AlertPriority.MEDIUM.name());
+ priorities.put(AlertPriority.LOW.name(), AlertPriority.LOW.name());
+ LinkedHashMap<String, String> priorityIcons = new LinkedHashMap<String, String>();
+ priorityIcons.put(AlertPriority.HIGH.name(), "/images/icons/Flag_red_16.png");
+ priorityIcons.put(AlertPriority.MEDIUM.name(), "/images/icons/Flag_yellow_16.png");
+ priorityIcons.put(AlertPriority.LOW.name(), "/images/icons/Flag_blue_16.png");
prioritySelection.setValueMap(priorities);
+ prioritySelection.setValueIcons(priorityIcons);
prioritySelection.setDefaultValue(AlertPriority.MEDIUM.name());
priorityStatic = new StaticTextItem("priorityStatic", "Priority");
+ priorityStatic.setValueIcons(priorityIcons);
enabledSelection = new RadioGroupItem("enabled", "Enabled");
enabledSelection.setValueMap("Yes", "No");
13 years, 9 months
[rhq] modules/enterprise
by ips
modules/enterprise/gui/coregui/pom.xml | 9 +++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java | 8 ++++++--
modules/enterprise/gui/coregui/src/main/resources/org/rhq/enterprise/gui/coregui/client/Messages.properties | 5 +++++
3 files changed, 16 insertions(+), 6 deletions(-)
New commits:
commit 2c01272635223d14b4019408aaeaab104022d1c0
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Sep 10 01:22:28 2010 -0400
upgrade GWT from 2.0.3 to 2.0.4 (make sure to do a mvn clean install of coregui after pulling down this commit!); include GWT version in About window
diff --git a/modules/enterprise/gui/coregui/pom.xml b/modules/enterprise/gui/coregui/pom.xml
index 37e1993..2d92aba 100644
--- a/modules/enterprise/gui/coregui/pom.xml
+++ b/modules/enterprise/gui/coregui/pom.xml
@@ -23,8 +23,9 @@
<properties>
<!-- dependency versions -->
- <gwt.version>2.0.3</gwt.version>
-
+ <gwt.version>2.0.4</gwt.version>
+ <smartgwt.version>2.2</smartgwt.version>
+
<!-- If this is too much memory to allocate to your gwt:debug process then override this property in
in your settings.xml -->
<gwt-plugin.extraJvmArgs>-Xms512M -Xmx512M -XX:PermSize=128M -XX:MaxPermSize=256M</gwt-plugin.extraJvmArgs>
@@ -86,13 +87,13 @@
<dependency>
<groupId>com.smartgwt</groupId>
<artifactId>smartgwt</artifactId>
- <version>2.2</version>
+ <version>${smartgwt.version}</version>
</dependency>
<!--
<dependency>
<groupId>com.smartgwt</groupId>
<artifactId>smartgwt-skins</artifactId>
- <version>2.1</version>
+ <version>${smartgwt.version}</version>
</dependency>
-->
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java
index b714a33..2611435 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java
@@ -45,7 +45,7 @@ public class AboutModalWindow extends Window {
public AboutModalWindow() {
setTitle(MESSAGES.about_title(PRODUCT_INFO.getFullName()));
setWidth(300);
- setHeight(290);
+ setHeight(300);
setOverflow(Overflow.VISIBLE);
setShowMinimizeButton(false);
setIsModal(true);
@@ -74,7 +74,9 @@ public class AboutModalWindow extends Window {
+ "</span><br/>\n" +
"<span class=\"DisplayLabel\">" + MESSAGES.about_buildNumber() + " " + PRODUCT_INFO.getBuildNumber()
+ "</span><p/>\n" +
- "<span class=\"DisplayLabel\">SmartGWT version: " + Version.getVersion() + " (built " + Version.getBuildDate() + ")"
+ "<span class=\"DisplayLabel\">GWT version: " + MESSAGES.gwt_version()
+ + "</span><br/>\n" +
+ "<span class=\"DisplayLabel\">SmartGWT version: " + Version.getVersion()
+ "</span><br/>\n" +
"<p><a href=\"http://jboss.org/\" title=\"JBoss " + MESSAGES.about_homepage() + "\">\n" +
" <img height=\"55\" alt=\"" + MESSAGES.about_jbossByRedHat() + "\" src=\"/images/jboss_logo.png\">\n" +
@@ -86,9 +88,11 @@ public class AboutModalWindow extends Window {
HLayout bottomPanel = new HLayout();
bottomPanel.setAlign(VerticalAlignment.BOTTOM);
contentPane.addMember(bottomPanel);
+
Canvas spacer = new Canvas();
spacer.setWidth("*");
bottomPanel.addMember(spacer);
+
Button closeButton = new Button(MESSAGES.button_close());
closeButton.setShowRollOver(true);
closeButton.setShowDown(true);
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 60fe75b..927f231 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
@@ -3,6 +3,11 @@
###########################
#
+# Build Info
+#
+gwt.version = ${gwt.version}
+
+#
# Standard Button Labels
#
button.ok = OK
13 years, 9 months
[rhq] modules/enterprise
by ips
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java | 114 +++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java | 14
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/WidgetUtility.java | 190 ++++++++++
5 files changed, 259 insertions(+), 69 deletions(-)
New commits:
commit e07ebd6a7670ca982b95363820f925531acc0963
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Fri Sep 10 00:31:41 2010 -0400
various refactorings of tab code; start of utility method for dumping the widget tree to stdout
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
index 4b387eb..1db0e78 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
@@ -38,10 +38,12 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
* @author Greg Hinkle
*/
public class SubTabLayout extends LocatableVLayout {
- private ToolStrip buttonBar;
+ /** maps subtab locator IDs to SubTabs */
private Map<String, SubTab> subtabs = new LinkedHashMap<String, SubTab>();
- private Map<String, Button> subTabButtons = new HashMap<String, Button>();
+ /** maps subtab locator IDs to subtab Buttons */
+ private Map<String, Button> subTabButtons = new LinkedHashMap<String, Button>();
+ /** locator IDs of subtabs that are disabled */
private Set<String> disabledSubTabs = new HashSet<String>();
private SubTab currentlyDisplayed;
@@ -62,7 +64,7 @@ public class SubTabLayout extends LocatableVLayout {
setMargin(0);
setPadding(0);
- buttonBar = new ToolStrip();
+ ToolStrip buttonBar = new ToolStrip();
buttonBar.setBackgroundColor("grey");
buttonBar.setWidth100();
buttonBar.setBorder(null);
@@ -77,7 +79,6 @@ public class SubTabLayout extends LocatableVLayout {
SubTab subTab = subtabs.get(locatorId);
if (currentlySelected == null) {
- // currentlyDisplayed = subTab;
currentlySelected = locatorId;
}
@@ -105,7 +106,7 @@ public class SubTabLayout extends LocatableVLayout {
currentlySelected = locatorId;
currentIndex = index;
fireSubTabSelection();
- draw(subtabs.get(locatorId));
+ draw();
}
});
@@ -151,35 +152,9 @@ public class SubTabLayout extends LocatableVLayout {
// }
String locatorId = subTab.getLocatorId();
- subtabs.put(locatorId, subTab);
- if (isDrawn() && locatorId.equals(currentlySelected)) {
- draw(subTab);
- }
- }
-
- private void draw(SubTab subTab) {
- if (currentlyDisplayed != null && currentlyDisplayed.getCanvas() != subTab.getCanvas()) {
- try {
- currentlyDisplayed.getCanvas().hide();
- } catch (Exception e) {
- // ignore this
- }
- }
-
- Canvas canvas = subTab.getCanvas();
- if (canvas != null) {
- if (hasMember(canvas)) {
- if (!canvas.isVisible()) {
- canvas.show();
- }
- } else {
- if (!canvas.isCreated()) {
- canvas.setOverflow(Overflow.SCROLL);
- }
- addMember(canvas);
- }
- markForRedraw();
- currentlyDisplayed = subTab;
+ this.subtabs.put(locatorId, subTab);
+ if (locatorId.equals(this.currentlySelected)) {
+ refresh();
}
}
@@ -200,37 +175,31 @@ public class SubTabLayout extends LocatableVLayout {
return currentIndex;
}
- public String getCurrentTitle() {
- return subtabs.get(currentlySelected).getTitle();
- }
-
public SubTab getDefaultSubTab() {
return subtabs.values().iterator().next();
}
public boolean selectTabByLocatorId(String locatorId) {
boolean foundTab = false;
- this.currentlySelected = locatorId;
int i = 0;
for (String subtabLocatorId : this.subtabs.keySet()) {
if (subtabLocatorId.equals(locatorId)) {
- SubTab subtab = this.subtabs.get(subtabLocatorId);
if (this.disabledSubTabs.contains(subtabLocatorId)) {
// Nice try - user tried to select a disabled tab, probably by going directly to a bookmark URL.
+ SubTab subtab = this.subtabs.get(subtabLocatorId);
CoreGUI.getErrorHandler().handleError("Cannot select disabled subtab '" + subtab.getTitle() + "'.");
- break;
+ } else {
+ this.currentlySelected = subtabLocatorId;
+ this.currentIndex = i;
+ foundTab = true;
}
- this.currentIndex = i;
- foundTab = true;
break;
}
i++;
}
- if (foundTab && isDrawn()) {
- Button button = (Button) this.buttonBar.getMember(this.currentIndex);
- button.select();
- draw(this.subtabs.get(locatorId));
+ if (foundTab) {
+ refresh();
}
return foundTab;
@@ -245,20 +214,18 @@ public class SubTabLayout extends LocatableVLayout {
if (this.disabledSubTabs.contains(subtab.getLocatorId())) {
// Nice try - user tried to select a disabled tab, probably by going directly to a bookmark URL.
CoreGUI.getErrorHandler().handleError("Cannot select disabled subtab '" + title + "'.");
- break;
+ } else {
+ this.currentlySelected = subtab.getLocatorId();
+ this.currentIndex = i;
+ foundTab = true;
}
- this.currentlySelected = subtab.getLocatorId();
- this.currentIndex = i;
- foundTab = true;
break;
}
i++;
}
- if (foundTab && isDrawn()) {
- Button button = (Button) buttonBar.getMember(currentIndex);
- button.select();
- draw(subtabs.get(currentlySelected));
+ if (foundTab) {
+ refresh();
}
return foundTab;
@@ -278,8 +245,8 @@ public class SubTabLayout extends LocatableVLayout {
}
public void fireSubTabSelection() {
- TwoLevelTabSelectedEvent event = new TwoLevelTabSelectedEvent("?", getCurrentTitle(), -1, currentIndex,
- getCurrentCanvas());
+ TwoLevelTabSelectedEvent event = new TwoLevelTabSelectedEvent("?", getCurrentSubTab().getTitle(), -1,
+ currentIndex, getCurrentCanvas());
hm.fireEvent(event);
}
@@ -297,4 +264,37 @@ public class SubTabLayout extends LocatableVLayout {
}
}
}
+
+ private void refresh() {
+ if (isDrawn()) {
+ Button button = this.subTabButtons.get(this.currentlySelected);
+ button.select();
+
+ SubTab currentSubtab = this.subtabs.get(this.currentlySelected);
+
+ if (this.currentlyDisplayed != null && this.currentlyDisplayed.getCanvas() != currentSubtab.getCanvas()) {
+ try {
+ this.currentlyDisplayed.getCanvas().hide();
+ } catch (Exception e) {
+ // ignore this
+ }
+ }
+
+ Canvas canvas = currentSubtab.getCanvas();
+ if (canvas != null) {
+ if (hasMember(canvas)) {
+ if (!canvas.isVisible()) {
+ canvas.show();
+ }
+ } else {
+ if (!canvas.isCreated()) {
+ canvas.setOverflow(Overflow.SCROLL);
+ }
+ addMember(canvas);
+ }
+ markForRedraw();
+ this.currentlyDisplayed = currentSubtab;
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
index 7215baa..a5c2611 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
@@ -73,8 +73,8 @@ public class TwoLevelTabSet extends LocatableTabSet implements TabSelectedHandle
System.out.println("TwoLevelTabSet.onTabSelected(): " + tabSelectedEvent.getTab().getTitle());
TwoLevelTab tab = (TwoLevelTab) getSelectedTab();
TwoLevelTabSelectedEvent event = new TwoLevelTabSelectedEvent(tab.getTitle(),
- tab.getLayout().getCurrentTitle(), tabSelectedEvent.getTabNum(), tab.getLayout().getCurrentIndex(), tab
- .getLayout().getCurrentCanvas());
+ tab.getLayout().getCurrentSubTab().getTitle(), tabSelectedEvent.getTabNum(),
+ tab.getLayout().getCurrentIndex(), tab.getLayout().getCurrentCanvas());
m.fireEvent(event);
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index 7a2064f..6bb216e 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -228,13 +228,11 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
this.eventHistory.setCanvas(EventCompositeHistoryView.get(groupComposite));
eventsTab.updateSubTab(this.eventHistory);
- // topTabSet.setSelectedTab(selectedTab);
- completeTabUpdate();
-
+ updateTabEnablement();
}
- private void completeTabUpdate() {
+ private void updateTabEnablement() {
GroupCategory groupCategory = groupComposite.getResourceGroup().getGroupCategory();
Set<ResourceTypeFacet> facets = groupComposite.getResourceFacets().getFacets();
@@ -318,7 +316,7 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
}
}
- public void loadSelectedGroup(int groupId, final ViewPath viewPath) {
+ public void loadSelectedGroup(final int groupId, final ViewPath viewPath) {
this.groupId = groupId;
ResourceGroupCriteria criteria = new ResourceGroupCriteria();
@@ -327,12 +325,11 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
GWTServiceLookup.getResourceGroupService().findResourceGroupCompositesByCriteria(criteria,
new AsyncCallback<PageList<ResourceGroupComposite>>() {
- @Override
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to load group composite", caught);
+ CoreGUI.getErrorHandler().handleError("Failed to load group composite for group with id "
+ + groupId, caught);
}
- @Override
public void onSuccess(PageList<ResourceGroupComposite> result) {
groupComposite = result.get(0);
loadResourceType(groupComposite, viewPath);
@@ -414,5 +411,4 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
}
return false;
}
-
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
index dc2b363..fc67739 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
@@ -274,6 +274,8 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
monitoringTab.setSubTabEnabled(monitorCallTime.getLocatorId(), facets.contains(ResourceTypeFacet.CALL_TIME));
inventoryTab.setSubTabEnabled(inventoryConn.getLocatorId(), facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION));
+ ResourceType type = this.resourceComposite.getResource().getResourceType();
+ inventoryTab.setSubTabEnabled(inventoryChildren.getLocatorId(), !type.getChildResourceTypes().isEmpty());
if (facets.contains(ResourceTypeFacet.OPERATION)) {
topTabSet.enableTab(operationsTab);
@@ -377,7 +379,9 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
final Resource resource = resourceComposite.getResource();
ResourceTypeRepository.Cache.getInstance().getResourceTypes(
resource.getResourceType().getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.content,
+ EnumSet.of(
+ ResourceTypeRepository.MetadataType.children,
+ ResourceTypeRepository.MetadataType.content,
ResourceTypeRepository.MetadataType.operations,
ResourceTypeRepository.MetadataType.measurements,
ResourceTypeRepository.MetadataType.events,
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/WidgetUtility.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/WidgetUtility.java
new file mode 100644
index 0000000..5790c70
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/WidgetUtility.java
@@ -0,0 +1,190 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2010 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.enterprise.gui.coregui.client.util;
+
+import com.google.gwt.user.client.ui.Widget;
+import com.smartgwt.client.widgets.BaseWidget;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.layout.HLayout;
+import com.smartgwt.client.widgets.layout.Layout;
+import com.smartgwt.client.widgets.layout.VLayout;
+import com.smartgwt.client.widgets.tab.Tab;
+import com.smartgwt.client.widgets.tab.TabSet;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Ian Springer
+ */
+public class WidgetUtility {
+ private WidgetUtility() {
+ }
+
+ public static void printWidgetTree(Widget widget) {
+ printWidgetTree(widget, 0);
+ }
+
+ private static void printWidgetTree(Widget widget, int level) {
+ try {
+ printWidget(widget, level);
+ } catch (Exception e) {
+ System.err.println("=====================================================================================");
+ System.err.println("Failed to print widget [" + widget + "]: " + e);
+ System.err.println("=====================================================================================");
+ }
+
+ // Recurse.
+ List<Widget> children;
+ try {
+ children = getChildren(widget);
+ } catch (Exception e) {
+ System.err.println("=====================================================================================");
+ System.err.println("Failed to get children of widget [" + widget + "]: " + e);
+ System.err.println("=====================================================================================");
+ return;
+ }
+
+ for (Widget child : children) {
+ printWidgetTree(child, level + 1);
+ }
+ }
+
+ private static void printWidget(Widget widget, int level) {
+ String simpleClassName;
+ try {
+ String className = widget.getClass().getName();
+ simpleClassName = className.substring(className.lastIndexOf(".") + 1);
+ } catch (Exception e) {
+ simpleClassName = "?";
+ }
+ String id;
+ try {
+ id = (widget.getElement() != null) ? widget.getElement().getId() : "?";
+ } catch (Exception e) {
+ id = "?";
+ }
+ String title;
+ try {
+ title = widget.getTitle();
+ } catch (Exception e) {
+ title = "?";
+ }
+
+ StringBuilder flags = new StringBuilder();
+
+ if (widget.isAttached()) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("attached");
+ }
+ if (widget.isVisible()) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("visible");
+ }
+
+ if (widget instanceof BaseWidget) {
+ BaseWidget baseWidget = (BaseWidget) widget;
+
+ if (baseWidget.isCreated()) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("created");
+ }
+ if (baseWidget.isConfigOnly()) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("configOnly");
+ }
+ }
+
+ if (widget instanceof Canvas) {
+ Canvas canvas = (Canvas) widget;
+
+ if (canvas.isDrawn()) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("drawn");
+ }
+ if (canvas.isDirty()) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("dirty");
+ }
+ if (canvas.isDisabled()) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("disabled");
+ }
+ }
+
+ if (widget instanceof HLayout) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("hlayout");
+ } else if (widget instanceof VLayout) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("vlayout");
+ } else if (widget instanceof Layout) {
+ if (flags.length() != 0) {
+ flags.append(", ");
+ }
+ flags.append("layout");
+ }
+
+ StringBuilder indent = new StringBuilder();
+ for (int i = 0; i < level; i++) {
+ indent.append(" ");
+ }
+
+ System.out.println(indent + simpleClassName + "[id=" + id + ", title=" + title + ", flags=[" + flags + "]]");
+ }
+
+ private static List<Widget> getChildren(Widget widget) {
+ List<Widget> children;
+ if (widget instanceof TabSet) {
+ TabSet tabSet = (TabSet) widget;
+ Tab[] tabs = tabSet.getTabs();
+ children = new ArrayList<Widget>();
+ for (Tab tab : tabs) {
+ children.add(tab.getPane());
+ }
+ } else if (widget instanceof Canvas) {
+ Canvas canvas = (Canvas) widget;
+ Canvas[] childrenArray = canvas.getChildren();
+ children = new ArrayList<Widget>();
+ children.addAll(Arrays.asList(childrenArray));
+ } else {
+ children = new ArrayList<Widget>();
+ }
+ return children;
+ }
+}
13 years, 9 months
[rhq] modules/enterprise
by ips
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java | 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java | 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java | 78 ++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTab.java | 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java | 42 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java | 209 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/UpdateCollectionIntervalWidget.java | 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java | 35 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeDatasource.java | 43 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java | 119 ++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeDatasource.java | 51 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java | 5
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TreeUtility.java | 29 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java | 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java | 40 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java | 3
18 files changed, 453 insertions(+), 243 deletions(-)
New commits:
commit d00a7dd10a914fc0b1359e9e4da04a802629b941
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Thu Sep 9 19:30:38 2010 -0400
fix various bugs in Resource tab navigation; fix bug that was causing Schedules subtabs to fail to render; start coding a debug utility for dumping the entire GWT widget tree to stdout; fix conditional rendering of certain subtabs
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
index f26acb7..aa2b040 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/CoreGUI.gwt.xml
@@ -41,7 +41,7 @@
<!-- <set-property name="user.agent" value="safari"/> -->
<!-- Firefox 3 -->
- <!--<set-property name="user.agent" value="gecko1_8"/>-->
+ <set-property name="user.agent" value="gecko1_8"/>
<entry-point class='org.rhq.enterprise.gui.coregui.client.CoreGUI'/>
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
index 9b35895..12c624c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
@@ -57,6 +57,7 @@ import org.rhq.enterprise.gui.coregui.client.menu.MenuBarView;
import org.rhq.enterprise.gui.coregui.client.report.ReportTopView;
import org.rhq.enterprise.gui.coregui.client.report.tag.TaggedView;
import org.rhq.enterprise.gui.coregui.client.util.ErrorHandler;
+import org.rhq.enterprise.gui.coregui.client.util.WidgetUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.MessageCenter;
import org.rhq.enterprise.gui.coregui.client.util.preferences.UserPreferences;
@@ -321,6 +322,10 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String> {
return userPreferences;
}
+ public static void printWidgetTree() {
+ WidgetUtility.printWidgetTree(coreGUI.rootCanvas);
+ }
+
public static void setSessionSubject(Subject subject) {
// TODO this breaks because of reattach rules, bizarrely even in queries. gonna switch out to non-subject include apis
// Create a minimized session object for validation on requests
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java
index 7aa6dff..b714a33 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/AboutModalWindow.java
@@ -18,6 +18,7 @@
*/
package org.rhq.enterprise.gui.coregui.client.components;
+import com.smartgwt.client.Version;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.Button;
@@ -44,7 +45,7 @@ public class AboutModalWindow extends Window {
public AboutModalWindow() {
setTitle(MESSAGES.about_title(PRODUCT_INFO.getFullName()));
setWidth(300);
- setHeight(255);
+ setHeight(290);
setOverflow(Overflow.VISIBLE);
setShowMinimizeButton(false);
setIsModal(true);
@@ -72,7 +73,9 @@ public class AboutModalWindow extends Window {
"<span class=\"DisplayLabel\">" + MESSAGES.about_version() + " " + PRODUCT_INFO.getVersion()
+ "</span><br/>\n" +
"<span class=\"DisplayLabel\">" + MESSAGES.about_buildNumber() + " " + PRODUCT_INFO.getBuildNumber()
- + "</span>\n" +
+ + "</span><p/>\n" +
+ "<span class=\"DisplayLabel\">SmartGWT version: " + Version.getVersion() + " (built " + Version.getBuildDate() + ")"
+ + "</span><br/>\n" +
"<p><a href=\"http://jboss.org/\" title=\"JBoss " + MESSAGES.about_homepage() + "\">\n" +
" <img height=\"55\" alt=\"" + MESSAGES.about_jbossByRedHat() + "\" src=\"/images/jboss_logo.png\">\n" +
"</a></p>\n" +
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
index e6be4f8..1739a35 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTab.java
@@ -53,4 +53,8 @@ public class SubTab {
this.canvas = canvas;
}
+ @Override
+ public String toString() {
+ return "SubTab[title=" + this.title + ", locatorId=" + this.locatorId + "]";
+ }
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
index 512540e..4b387eb 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
@@ -18,10 +18,7 @@
*/
package org.rhq.enterprise.gui.coregui.client.components.tab;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.Set;
+import java.util.*;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.event.shared.HandlerRegistration;
@@ -33,6 +30,7 @@ import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableButton;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -40,16 +38,15 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
* @author Greg Hinkle
*/
public class SubTabLayout extends LocatableVLayout {
-
private ToolStrip buttonBar;
- private LinkedHashMap<String, SubTab> subtabs = new LinkedHashMap<String, SubTab>();
- private HashMap<String, Button> subTabButtons = new HashMap<String, Button>();
+ private Map<String, SubTab> subtabs = new LinkedHashMap<String, SubTab>();
+ private Map<String, Button> subTabButtons = new HashMap<String, Button>();
private Set<String> disabledSubTabs = new HashSet<String>();
- SubTab currentlyDisplayed;
- String currentlySelected;
- int currentIndex = 0;
+ private SubTab currentlyDisplayed;
+ private String currentlySelected;
+ private int currentIndex;
public SubTabLayout(String locatorId) {
super(locatorId);
@@ -128,10 +125,10 @@ public class SubTabLayout extends LocatableVLayout {
selectTabByLocatorId(currentlySelected);
}
- public void enableSubTab(String title) {
- disabledSubTabs.remove(title);
- if (subTabButtons.containsKey(title)) {
- subTabButtons.get(title).enable();
+ public void enableSubTab(String locatorId) {
+ disabledSubTabs.remove(locatorId);
+ if (subTabButtons.containsKey(locatorId)) {
+ subTabButtons.get(locatorId).enable();
markForRedraw();
}
}
@@ -172,14 +169,16 @@ public class SubTabLayout extends LocatableVLayout {
Canvas canvas = subTab.getCanvas();
if (canvas != null) {
if (hasMember(canvas)) {
- canvas.show();
+ if (!canvas.isVisible()) {
+ canvas.show();
+ }
} else {
if (!canvas.isCreated()) {
canvas.setOverflow(Overflow.SCROLL);
}
- addMember(canvas);
- markForRedraw();
+ addMember(canvas);
}
+ markForRedraw();
currentlyDisplayed = subTab;
}
}
@@ -205,22 +204,33 @@ public class SubTabLayout extends LocatableVLayout {
return subtabs.get(currentlySelected).getTitle();
}
+ public SubTab getDefaultSubTab() {
+ return subtabs.values().iterator().next();
+ }
+
public boolean selectTabByLocatorId(String locatorId) {
boolean foundTab = false;
- currentlySelected = locatorId;
+ this.currentlySelected = locatorId;
int i = 0;
- for (String sub : subtabs.keySet()) {
- if (sub.equals(locatorId)) {
- currentIndex = i;
+ for (String subtabLocatorId : this.subtabs.keySet()) {
+ if (subtabLocatorId.equals(locatorId)) {
+ SubTab subtab = this.subtabs.get(subtabLocatorId);
+ if (this.disabledSubTabs.contains(subtabLocatorId)) {
+ // Nice try - user tried to select a disabled tab, probably by going directly to a bookmark URL.
+ CoreGUI.getErrorHandler().handleError("Cannot select disabled subtab '" + subtab.getTitle() + "'.");
+ break;
+ }
+ this.currentIndex = i;
foundTab = true;
break;
}
i++;
}
- if (isDrawn()) {
- ((Button) buttonBar.getMember(currentIndex)).select();
- draw(subtabs.get(locatorId));
+ if (foundTab && isDrawn()) {
+ Button button = (Button) this.buttonBar.getMember(this.currentIndex);
+ button.select();
+ draw(this.subtabs.get(locatorId));
}
return foundTab;
@@ -229,25 +239,35 @@ public class SubTabLayout extends LocatableVLayout {
public boolean selectTab(String title) {
boolean foundTab = false;
int i = 0;
- for (String sub : subtabs.keySet()) {
- SubTab subtab = subtabs.get(sub);
+ for (String subtabLocatorId : this.subtabs.keySet()) {
+ SubTab subtab = this.subtabs.get(subtabLocatorId);
if (subtab.getTitle().equals(title)) {
+ if (this.disabledSubTabs.contains(subtab.getLocatorId())) {
+ // Nice try - user tried to select a disabled tab, probably by going directly to a bookmark URL.
+ CoreGUI.getErrorHandler().handleError("Cannot select disabled subtab '" + title + "'.");
+ break;
+ }
this.currentlySelected = subtab.getLocatorId();
- currentIndex = i;
+ this.currentIndex = i;
foundTab = true;
break;
}
i++;
}
- if (isDrawn()) {
- ((Button) buttonBar.getMember(currentIndex)).select();
+ if (foundTab && isDrawn()) {
+ Button button = (Button) buttonBar.getMember(currentIndex);
+ button.select();
draw(subtabs.get(currentlySelected));
}
return foundTab;
}
+ public SubTab getCurrentSubTab() {
+ return this.subtabs.get(this.currentlySelected);
+ }
+
// ------- Event support -------
// Done with a separate handler manager from parent class on purpose (compatibility issue)
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTab.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTab.java
index c78db8a..845128f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTab.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTab.java
@@ -26,7 +26,6 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTab;
* @author Greg Hinkle
*/
public class TwoLevelTab extends LocatableTab {
-
private SubTabLayout layout;
public TwoLevelTab(String locatorId, String title, String icon) {
@@ -45,11 +44,11 @@ public class TwoLevelTab extends LocatableTab {
}
}
- public void setSubTabEnabled(String tab, boolean enabled) {
+ public void setSubTabEnabled(String locatorId, boolean enabled) {
if (enabled) {
- layout.enableSubTab(tab);
+ layout.enableSubTab(locatorId);
} else {
- layout.disableSubTab(tab);
+ layout.disableSubTab(locatorId);
}
}
@@ -62,4 +61,8 @@ public class TwoLevelTab extends LocatableTab {
return layout;
}
+ @Override
+ public String toString() {
+ return "TwoLevelTab[title=" + getTitle() + ", locatorId=" + getLocatorId() + "]";
+ }
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
index de4a27c..7215baa 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/TwoLevelTabSet.java
@@ -27,6 +27,8 @@ import com.smartgwt.client.widgets.tab.events.TabSelectedHandler;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTabSet;
/**
+ * A tab set where each {@link TwoLevelTab tab} has one or more {@link SubTab subtab}s.
+ *
* @author Greg Hinkle
*/
public class TwoLevelTabSet extends LocatableTabSet implements TabSelectedHandler, TwoLevelTabSelectedHandler {
@@ -37,16 +39,27 @@ public class TwoLevelTabSet extends LocatableTabSet implements TabSelectedHandle
public void setTabs(TwoLevelTab... tabs) {
super.setTabs(tabs);
- for (TwoLevelTab tab : tabs) {
-
+ for (TwoLevelTab tab : tabs) {
tab.getLayout().addTwoLevelTabSelectedHandler(this);
-
updateTab(tab, tab.getPane());
}
addTabSelectedHandler(this);
}
+ public TwoLevelTab[] getTabs() {
+ Tab[] tabs = super.getTabs();
+ TwoLevelTab[] twoLevelTabs = new TwoLevelTab[tabs.length];
+ for (int i = 0, tabsLength = tabs.length; i < tabsLength; i++) {
+ Tab tab = tabs[i];
+ if (!(tab instanceof TwoLevelTab)) {
+ throw new IllegalStateException("TwoLevelTabSet contains a Tab that is not a TwoLevelTab.");
+ }
+ twoLevelTabs[i] = (TwoLevelTab) tab;
+ }
+ return twoLevelTabs;
+ }
+
// ------- Event support -------
// Done with a separate handler manager from parent class on purpose (compatibility issue)
@@ -57,9 +70,8 @@ public class TwoLevelTabSet extends LocatableTabSet implements TabSelectedHandle
}
public void onTabSelected(TabSelectedEvent tabSelectedEvent) {
-
+ System.out.println("TwoLevelTabSet.onTabSelected(): " + tabSelectedEvent.getTab().getTitle());
TwoLevelTab tab = (TwoLevelTab) getSelectedTab();
-
TwoLevelTabSelectedEvent event = new TwoLevelTabSelectedEvent(tab.getTitle(),
tab.getLayout().getCurrentTitle(), tabSelectedEvent.getTabNum(), tab.getLayout().getCurrentIndex(), tab
.getLayout().getCurrentCanvas());
@@ -67,19 +79,19 @@ public class TwoLevelTabSet extends LocatableTabSet implements TabSelectedHandle
}
public void onTabSelected(TwoLevelTabSelectedEvent tabSelectedEvent) {
+ System.out.println("TwoLevelTabSet.onTwoLevelTabSelected(): " + tabSelectedEvent.getId() + "/" +
+ tabSelectedEvent.getSubTabId());
tabSelectedEvent.setTabNum(getSelectedTabNumber());
- tabSelectedEvent.setId(getSelectedTab().getTitle());
-
+ Tab tab = getSelectedTab();
+ tabSelectedEvent.setId(tab.getTitle());
m.fireEvent(tabSelectedEvent);
}
- public Tab getTabByTitle(String title) {
- Tab[] tabs = getTabs();
- for (Tab tab : tabs) {
- if (tab.getTitle().equals(title)) {
- return tab;
- }
- }
- return null;
+ public TwoLevelTab getTabByTitle(String title) {
+ return (TwoLevelTab) super.getTabByTitle(title);
+ }
+
+ public TwoLevelTab getTabByLocatorId(String locatorId) {
+ return (TwoLevelTab) super.getTabByLocatorId(locatorId);
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
index abae48f..f30ab10 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
@@ -53,6 +53,7 @@ import com.smartgwt.client.widgets.layout.LayoutSpacer;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIButton;
@@ -208,136 +209,140 @@ public class Table extends LocatableHLayout {
@Override
protected void onDraw() {
- super.onDraw();
+ try {
+ super.onDraw();
- for (Canvas child : contents.getMembers()) {
- contents.removeChild(child);
- }
-
- // Title
- title = new HTMLFlow();
- setTableTitle(tableTitle);
-
- if (showHeader) {
- titleLayout = new HLayout();
- titleLayout.setAutoHeight();
- titleLayout.setAlign(VerticalAlignment.BOTTOM);
- }
+ for (Canvas child : contents.getMembers()) {
+ contents.removeChild(child);
+ }
- // Add components to the view
- if (showHeader) {
- contents.addMember(titleLayout, 0);
- }
+ // Title
+ title = new HTMLFlow();
+ setTableTitle(tableTitle);
- if (filterForm.hasContent()) {
- contents.addMember(filterForm);
- }
+ if (showHeader) {
+ titleLayout = new HLayout();
+ titleLayout.setAutoHeight();
+ titleLayout.setAlign(VerticalAlignment.BOTTOM);
+ }
- contents.addMember(listGrid);
+ // Add components to the view
+ if (showHeader) {
+ contents.addMember(titleLayout, 0);
+ }
- // Footer
- footer = new ToolStrip();
- footer.setPadding(5);
- footer.setWidth100();
- footer.setMembersMargin(15);
- contents.addMember(footer);
-
- // The ListGrid has been created and configured
- // Now give subclasses a chance to configure the table
- configureTable();
-
- tableInfo = new Label("Total: " + listGrid.getTotalRows());
-
- // NOTE: It is essential that we wait to hide any excluded fields until after super.onDraw() is called, since
- // super.onDraw() is what actually adds the fields to the ListGrid (based on what fields are defined in
- // the underlying datasource).
- if (this.excludedFieldNames != null) {
- for (String excludedFieldName : excludedFieldNames) {
- this.listGrid.hideField(excludedFieldName);
+ if (filterForm.hasContent()) {
+ contents.addMember(filterForm);
}
- }
- tableInfo.setWrap(false);
+ contents.addMember(listGrid);
- if (showHeader) {
+ // Footer
+ footer = new ToolStrip();
+ footer.setPadding(5);
+ footer.setWidth100();
+ footer.setMembersMargin(15);
+ contents.addMember(footer);
- for (String headerIcon : headerIcons) {
- Img img = new Img(headerIcon, 24, 24);
- img.setPadding(4);
- titleLayout.addMember(img);
- }
+ // The ListGrid has been created and configured
+ // Now give subclasses a chance to configure the table
+ configureTable();
- titleLayout.addMember(title);
+ tableInfo = new Label("Total: " + listGrid.getTotalRows());
- if (titleComponent != null) {
- titleLayout.addMember(new LayoutSpacer());
- titleLayout.addMember(titleComponent);
+ // NOTE: It is essential that we wait to hide any excluded fields until after super.onDraw() is called, since
+ // super.onDraw() is what actually adds the fields to the ListGrid (based on what fields are defined in
+ // the underlying datasource).
+ if (this.excludedFieldNames != null) {
+ for (String excludedFieldName : excludedFieldNames) {
+ this.listGrid.hideField(excludedFieldName);
+ }
}
- }
+ tableInfo.setWrap(false);
- if (showFooter) {
+ if (showHeader) {
- footer.removeMembers(footer.getMembers());
+ for (String headerIcon : headerIcons) {
+ Img img = new Img(headerIcon, 24, 24);
+ img.setPadding(4);
+ titleLayout.addMember(img);
+ }
- for (final TableActionInfo tableAction : tableActions) {
- IButton button = new LocatableIButton(tableAction.getLocatorId(), tableAction.getTitle());
- button.setDisabled(true);
- button.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent clickEvent) {
- if (tableAction.confirmMessage != null) {
+ titleLayout.addMember(title);
- String message = tableAction.confirmMessage.replaceAll("\\#", String.valueOf(listGrid
- .getSelection().length));
+ if (titleComponent != null) {
+ titleLayout.addMember(new LayoutSpacer());
+ titleLayout.addMember(titleComponent);
+ }
- SC.ask(message, new BooleanCallback() {
- public void execute(Boolean confirmed) {
- if (confirmed) {
- tableAction.action.executeAction(listGrid.getSelection());
- }
- }
- });
- } else {
- tableAction.action.executeAction(listGrid.getSelection());
- }
- }
- });
- tableAction.actionButton = button;
- footer.addMember(button);
}
- for (Canvas extraWidgetCanvas : extraWidgets) {
- footer.addMember(extraWidgetCanvas);
- }
+ if (showFooter) {
- footer.addMember(new LayoutSpacer());
+ footer.removeMembers(footer.getMembers());
- IButton refreshButton = new LocatableIButton(extendLocatorId("Refresh"), "Refresh");
- refreshButton.addClickHandler(new ClickHandler() {
- public void onClick(ClickEvent clickEvent) {
- listGrid.invalidateCache();
- }
- });
- footer.addMember(refreshButton);
+ for (final TableActionInfo tableAction : tableActions) {
+ IButton button = new LocatableIButton(tableAction.getLocatorId(), tableAction.getTitle());
+ button.setDisabled(true);
+ button.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ if (tableAction.confirmMessage != null) {
- footer.addMember(tableInfo);
+ String message = tableAction.confirmMessage.replaceAll("\\#", String.valueOf(listGrid
+ .getSelection().length));
- // Manages enable/disable buttons for the grid
- listGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
- public void onSelectionChanged(SelectionEvent selectionEvent) {
- refreshTableInfo();
+ SC.ask(message, new BooleanCallback() {
+ public void execute(Boolean confirmed) {
+ if (confirmed) {
+ tableAction.action.executeAction(listGrid.getSelection());
+ }
+ }
+ });
+ } else {
+ tableAction.action.executeAction(listGrid.getSelection());
+ }
+ }
+ });
+ tableAction.actionButton = button;
+ footer.addMember(button);
}
- });
- listGrid.addDataArrivedHandler(new DataArrivedHandler() {
- public void onDataArrived(DataArrivedEvent dataArrivedEvent) {
- refreshTableInfo();
- fieldSizes.clear();
+ for (Canvas extraWidgetCanvas : extraWidgets) {
+ footer.addMember(extraWidgetCanvas);
}
- });
- // ensure buttons are initially set correctly
- refreshTableInfo();
+ footer.addMember(new LayoutSpacer());
+
+ IButton refreshButton = new LocatableIButton(extendLocatorId("Refresh"), "Refresh");
+ refreshButton.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent clickEvent) {
+ listGrid.invalidateCache();
+ }
+ });
+ footer.addMember(refreshButton);
+
+ footer.addMember(tableInfo);
+
+ // Manages enable/disable buttons for the grid
+ listGrid.addSelectionChangedHandler(new SelectionChangedHandler() {
+ public void onSelectionChanged(SelectionEvent selectionEvent) {
+ refreshTableInfo();
+ }
+ });
+
+ listGrid.addDataArrivedHandler(new DataArrivedHandler() {
+ public void onDataArrived(DataArrivedEvent dataArrivedEvent) {
+ refreshTableInfo();
+ fieldSizes.clear();
+ }
+ });
+
+ // Ensure buttons are initially set correctly.
+ refreshTableInfo();
+ }
+ } catch (Exception e) {
+ CoreGUI.getErrorHandler().handleError("Failed to draw Table [" + this + "].", e);
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/UpdateCollectionIntervalWidget.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/UpdateCollectionIntervalWidget.java
index 1cf02e7..78fe1d3 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/UpdateCollectionIntervalWidget.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/UpdateCollectionIntervalWidget.java
@@ -96,9 +96,13 @@ public class UpdateCollectionIntervalWidget extends LocatableHLayout implements
@Override
public void refresh(ListGrid listGrid) {
- int count = listGrid.getSelection().length;
- Long interval = getInterval();
- this.setButton.setDisabled(count == 0 || interval == null);
+ if (isDrawn()) {
+ int count = listGrid.getSelection().length;
+ Long interval = getInterval();
+ this.setButton.setDisabled(count == 0 || interval == null);
+ } else {
+ markForRedraw();
+ }
}
private Long getInterval() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index 59997b4..7a2064f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -29,6 +29,8 @@ import com.smartgwt.client.widgets.tab.Tab;
import org.rhq.core.domain.authz.Permission;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
+import org.rhq.core.domain.measurement.DataType;
+import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.ResourceTypeFacet;
import org.rhq.core.domain.resource.composite.ResourcePermission;
@@ -242,7 +244,7 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
topTabSet.enableTab(inventoryTab);
// Inventory>Connection Settings subtab is only enabled for compat groups that define conn props.
- inventoryTab.setSubTabEnabled("Connection Settings", groupCategory == GroupCategory.COMPATIBLE
+ inventoryTab.setSubTabEnabled(this.inventoryConn.getLocatorId(), groupCategory == GroupCategory.COMPATIBLE
&& facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION));
// Monitoring and Alerts tabs are always enabled for compatible groups and always disabled for mixed groups.
@@ -276,8 +278,9 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
topTabSet.disableTab(eventsTab);
}
- // only enable "Call Time" sub-tab for those that implement it
- monitoringTab.setSubTabEnabled("Call Time", facets.contains(ResourceTypeFacet.CALL_TIME));
+ // only enable "Call Time" and "Traits" subtabs for groups that implement them.
+ monitoringTab.setSubTabEnabled(monitorTraits.getLocatorId(), hasTraits(this.groupComposite));
+ monitoringTab.setSubTabEnabled(monitorCallTime.getLocatorId(), facets.contains(ResourceTypeFacet.CALL_TIME));
}
public void onTabSelected(TwoLevelTabSelectedEvent tabSelectedEvent) {
@@ -300,7 +303,6 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
viewPath.next();
-
tabName = (!viewPath.isEnd()) ? viewPath.getCurrent().getPath() : null; // e.g. "Inventory"
subTabName = (viewPath.viewsLeft() >= 1) ? viewPath.getNext().getPath() : null; // e.g. "Overview"
@@ -319,7 +321,6 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
public void loadSelectedGroup(int groupId, final ViewPath viewPath) {
this.groupId = groupId;
-
ResourceGroupCriteria criteria = new ResourceGroupCriteria();
criteria.addFilterId(groupId);
criteria.addFilterVisible(null);
@@ -349,7 +350,9 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
ResourceType groupType = group.getResourceType();
ResourceTypeRepository.Cache.getInstance().getResourceTypes(
groupType.getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.content, ResourceTypeRepository.MetadataType.operations,
+ EnumSet.of(ResourceTypeRepository.MetadataType.content,
+ ResourceTypeRepository.MetadataType.operations,
+ ResourceTypeRepository.MetadataType.measurements,
ResourceTypeRepository.MetadataType.events,
ResourceTypeRepository.MetadataType.resourceConfigurationDefinition),
new ResourceTypeRepository.TypeLoadedCallback() {
@@ -377,16 +380,16 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
if (tabName == null) {
tabName = DEFAULT_TAB_NAME;
}
- TwoLevelTab tab = (TwoLevelTab) this.topTabSet.getTabByTitle(tabName);
+ TwoLevelTab tab = this.topTabSet.getTabByTitle(tabName);
if (tab == null) {
CoreGUI.getErrorHandler().handleError("Invalid tab name: " + tabName);
// TODO: Should we fire a history event here to redirect to a valid bookmark?
- tab = (TwoLevelTab) this.topTabSet.getTabByTitle(DEFAULT_TAB_NAME);
+ tab = this.topTabSet.getTabByTitle(DEFAULT_TAB_NAME);
}
this.topTabSet.selectTab(tab);
if (subtabName != null) {
if (!tab.getLayout().selectTab(subtabName)) {
- CoreGUI.getErrorHandler().handleError("Invalid subtab name: " + subtabName);
+ CoreGUI.getErrorHandler().handleError("Invalid subtab name: " + subtabName);
// TODO: Should we fire a history event here to redirect to a valid bookmark?
return;
} else {
@@ -398,4 +401,18 @@ public class ResourceGroupDetailView extends LocatableVLayout implements Bookmar
}
}
+
+ private static boolean hasTraits(ResourceGroupComposite groupComposite) {
+ ResourceType type = groupComposite.getResourceGroup().getResourceType();
+ if (type != null) {
+ Set<MeasurementDefinition> metricDefs = type.getMetricDefinitions();
+ for (MeasurementDefinition metricDef : metricDefs) {
+ if (metricDef.getDataType() == DataType.TRAIT) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeDatasource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeDatasource.java
index 51b48eb..76b7b76 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeDatasource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupTreeDatasource.java
@@ -261,11 +261,24 @@ public class ResourceGroupTreeDatasource extends DataSource {
setAttribute("parentId", parentId);
setAttribute("name", category.getDisplayName());
}
+
+ @Override
+ public String toString() {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("CategoryTreeNode[");
+ String id = getAttribute("id");
+ buffer.append("id=").append(id);
+ String parentId = getAttribute("parentId");
+ buffer.append(", parentId=").append(parentId);
+ String name = getAttribute("name");
+ buffer.append(", name=").append(name);
+ buffer.append("]");
+ return buffer.toString();
+ }
}
public static class TypeTreeNode extends TreeNode {
-
private TypeTreeNode(String parentId, String parentResourceId, String type) {
setID(parentId + "_" + type);
setParentID(parentId);
@@ -276,10 +289,22 @@ public class ResourceGroupTreeDatasource extends DataSource {
setAttribute("name", type);
}
+ @Override
+ public String toString() {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("TypeTreeNode[");
+ String id = getAttribute("id");
+ buffer.append("id=").append(id);
+ String parentId = getAttribute("parentId");
+ buffer.append(", parentId=").append(parentId);
+ String name = getAttribute("name");
+ buffer.append(", name=").append(name);
+ buffer.append("]");
+ return buffer.toString();
+ }
}
public static class ResourceTreeNode extends TreeNode {
-
private Resource resource;
private ResourceTreeNode(Resource resource) {
@@ -325,5 +350,19 @@ public class ResourceGroupTreeDatasource extends DataSource {
public String getParentId() {
return getAttribute("parentId");
}
+
+ @Override
+ public String toString() {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("ResourceTreeNode[");
+ String id = getAttribute("id");
+ buffer.append("id=").append(id);
+ String parentId = getAttribute("parentId");
+ buffer.append(", parentId=").append(parentId);
+ String name = getAttribute("name");
+ buffer.append(", name=").append(name);
+ buffer.append("]");
+ return buffer.toString();
+ }
}
}
\ No newline at end of file
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
index e43ccef..dc2b363 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
@@ -28,6 +28,8 @@ import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.tab.Tab;
import org.rhq.core.domain.criteria.ResourceCriteria;
+import org.rhq.core.domain.measurement.DataType;
+import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.ResourceTypeFacet;
@@ -65,11 +67,9 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
* Right panel of the Resource view.
*
* @author Greg Hinkle
+ * @author Ian Springer
*/
public class ResourceDetailView extends LocatableVLayout implements BookmarkableView, TwoLevelTabSelectedHandler {
-
- private static final String DEFAULT_TAB_NAME = "Summary";
-
private int resourceId;
private ResourceComposite resourceComposite;
@@ -202,7 +202,7 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
final Resource resource = this.resourceComposite.getResource();
this.titleBar.setResource(resource);
- for (Tab top : topTabSet.getTabs()) {
+ for (Tab top : this.topTabSet.getTabs()) {
((TwoLevelTab) top).getLayout().destroyViews();
}
@@ -210,9 +210,6 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
this.summaryDashboard.setCanvas(new DashboardView(this.resourceComposite));
this.summaryTimeline.setCanvas(new FullHTMLPane("/rhq/resource/summary/timeline-plain.xhtml?id="
+ resource.getId()));
- summaryTab.updateSubTab(this.summaryOverview);
- summaryTab.updateSubTab(this.summaryDashboard);
- summaryTab.updateSubTab(this.summaryTimeline);
this.monitorGraphs.setCanvas(new GraphListView(this.monitoringTab.extendLocatorId("GraphListView"), resource));
this.monitorTables.setCanvas(new FullHTMLPane("/rhq/common/monitor/tables-plain.xhtml?id=" + resource.getId()));
@@ -222,17 +219,9 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
this.monitorSched.setCanvas(new SchedulesView(monitoringTab.extendLocatorId("SchedulesView"), resource.getId()));
this.monitorCallTime.setCanvas(new FullHTMLPane("/rhq/resource/monitor/response-plain.xhtml?id="
+ resource.getId()));
- monitoringTab.updateSubTab(this.monitorGraphs);
- monitoringTab.updateSubTab(this.monitorTables);
- monitoringTab.updateSubTab(this.monitorTraits);
- monitoringTab.updateSubTab(this.monitorAvail);
- monitoringTab.updateSubTab(this.monitorSched);
- monitoringTab.updateSubTab(this.monitorCallTime);
this.inventoryChildren.setCanvas(ResourceSearchView.getChildrenOf(resource.getId()));
this.inventoryConn.setCanvas(new PluginConfigurationEditView(this.extendLocatorId("PluginConfig"), resource));
- inventoryTab.updateSubTab(this.inventoryChildren);
- inventoryTab.updateSubTab(this.inventoryConn);
// comment out GWT-based operation history until...
// 1) user can delete history if they possess the appropriate permissions
@@ -244,33 +233,24 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
resourceComposite));
this.opSched.setCanvas(new FullHTMLPane("/rhq/resource/operation/resourceOperationSchedules-plain.xhtml?id="
+ resource.getId()));
- operationsTab.updateSubTab(this.opHistory);
- operationsTab.updateSubTab(this.opSched);
// comment out GWT-based alert definitions/history views until...
// 1) new workflow is implement for alert definition creation, with particular attention to interaction model for alert notifications
// 2) user can delete/ack/purgeAll alerts if they possess the appropriate permissions
// 3) user can enable/disable/delete alert definitions if they possess the appropriate permissions
- // 4) user can search alert history by: date alert was fired, alert priority, or alert definition
- //alertsTab.updateSubTab("History", new ResourceAlertHistoryView(resource.getId()));
+ // 4) user can search alert history by: date alert was fired, alert priority, or alert definition
this.alertHistory.setCanvas(new FullHTMLPane("/rhq/resource/alert/listAlertHistory-plain.xhtml?id="
+ resource.getId()));
this.alertDef.setCanvas(new ResourceAlertDefinitionsView(alertsTab.extendLocatorId("Def"), resource));
this.alertDelete.setCanvas(new FullHTMLPane("/rhq/resource/alert/listAlertDefinitions-plain.xhtml?id="
+ resource.getId()));
- alertsTab.updateSubTab(this.alertHistory);
- alertsTab.updateSubTab(this.alertDef);
- alertsTab.updateSubTab(this.alertDelete);
this.configCurrent
.setCanvas(new ResourceConfigurationEditView(this.extendLocatorId("ResourceConfig"), resource));
this.configHistory.setCanvas(ConfigurationHistoryView.getHistoryOf(configurationTab.extendLocatorId("Hist"),
resource.getId()));
- configurationTab.updateSubTab(this.configCurrent);
- configurationTab.updateSubTab(this.configHistory);
this.eventHistory.setCanvas(EventCompositeHistoryView.get(resourceComposite));
- eventsTab.updateSubTab(this.eventHistory);
this.contentDeployed
.setCanvas(new FullHTMLPane("/rhq/resource/content/view-plain.xhtml?id=" + resource.getId()));
@@ -279,26 +259,21 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
+ resource.getId()));
this.contentHistory.setCanvas(new FullHTMLPane("/rhq/resource/content/history-plain.xhtml?id="
+ resource.getId()));
- contentTab.updateSubTab(contentDeployed);
- contentTab.updateSubTab(contentNew);
- contentTab.updateSubTab(contentSubscrip);
- contentTab.updateSubTab(contentHistory);
-
- // topTabSet.setSelectedTab(selectedTab);
- completeTabUpdate();
+ updateTabEnablement();
}
- private void completeTabUpdate() {
+ private void updateTabEnablement() {
ResourcePermission permissions = this.resourceComposite.getResourcePermission();
Set<ResourceTypeFacet> facets = this.resourceComposite.getResourceFacets().getFacets();
// Summary, Monitoring, Inventory, and Alerts tabs are always enabled.
- monitoringTab.setSubTabEnabled("Call Time", facets.contains(ResourceTypeFacet.CALL_TIME));
+ monitoringTab.setSubTabEnabled(monitorTraits.getLocatorId(), hasTraits(this.resourceComposite));
+ monitoringTab.setSubTabEnabled(monitorCallTime.getLocatorId(), facets.contains(ResourceTypeFacet.CALL_TIME));
- inventoryTab.setSubTabEnabled("Connection Settings", facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION));
+ inventoryTab.setSubTabEnabled(inventoryConn.getLocatorId(), facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION));
if (facets.contains(ResourceTypeFacet.OPERATION)) {
topTabSet.enableTab(operationsTab);
@@ -323,26 +298,26 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
} else {
topTabSet.disableTab(contentTab);
}
-
- if (topTabSet.getSelectedTab().getDisabled()) {
- topTabSet.selectTab(0);
- }
-
- topTabSet.markForRedraw();
}
public void onTabSelected(TwoLevelTabSelectedEvent tabSelectedEvent) {
+ //CoreGUI.printWidgetTree();
+
if (this.resourceComposite == null) {
// History.fireCurrentHistoryState();
} else {
// Switch tabs directly, rather than letting the history framework do it, to avoid redrawing the outer views.
// selectTab(tabSelectedEvent.getId(), tabSelectedEvent.getSubTabId());
-
String tabPath = "/" + tabSelectedEvent.getId() + "/" + tabSelectedEvent.getSubTabId();
String path = "Resource/" + resourceId + tabPath;
- // But still add an item to the history, specifying false to tell it not to fire an event.
- History.newItem(path, true);
+ // If the tab that was selected is not already the current history item, the user clicked on the tab, rather
+ // than going directly to the tab's URL. In this case, fire a history event to go to the tab and make it the
+ // current history item.
+ if (!History.getToken().equals(path)) {
+ System.out.println("Firing History event [" + path + "]...");
+ History.newItem(path, true);
+ }
}
}
@@ -402,7 +377,9 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
final Resource resource = resourceComposite.getResource();
ResourceTypeRepository.Cache.getInstance().getResourceTypes(
resource.getResourceType().getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.content, ResourceTypeRepository.MetadataType.operations,
+ EnumSet.of(ResourceTypeRepository.MetadataType.content,
+ ResourceTypeRepository.MetadataType.operations,
+ ResourceTypeRepository.MetadataType.measurements,
ResourceTypeRepository.MetadataType.events,
ResourceTypeRepository.MetadataType.resourceConfigurationDefinition),
new ResourceTypeRepository.TypeLoadedCallback() {
@@ -411,34 +388,52 @@ public class ResourceDetailView extends LocatableVLayout implements Bookmarkable
ResourceDetailView.this.resourceComposite = resourceComposite;
updateDetailViews(resourceComposite);
selectTab(tabName, subTabName, viewPath);
-
}
});
}
public void selectTab(String tabName, String subtabName, ViewPath viewPath) {
- if (tabName == null) {
- tabName = DEFAULT_TAB_NAME;
- }
- TwoLevelTab tab = (TwoLevelTab) this.topTabSet.getTabByTitle(tabName);
- if (tab == null) {
- CoreGUI.getErrorHandler().handleError("Invalid tab name: " + tabName);
- // TODO: Should we fire a history event here to redirect to a valid bookmark?
- tab = (TwoLevelTab) this.topTabSet.getTabByTitle(DEFAULT_TAB_NAME);
- }
- this.topTabSet.selectTab(tab);
- if (subtabName != null) {
- if (!tab.getLayout().selectTab(subtabName)) {
- CoreGUI.getErrorHandler().handleError("Invalid subtab name: " + subtabName);
+ try {
+ TwoLevelTab tab = this.topTabSet.getTabByTitle(tabName);
+ if (tab == null || tab.getDisabled()) {
+ CoreGUI.getErrorHandler().handleError("Invalid tab name: " + tabName);
// TODO: Should we fire a history event here to redirect to a valid bookmark?
- return;
- } else {
- Canvas subView = tab.getLayout().getCurrentCanvas();
+ Tab defaultTab = this.topTabSet.getTab(0);
+ tab = (TwoLevelTab) defaultTab;
+ }
+ SubTab subTab = null;
+ if (subtabName != null) {
+ if (!tab.getLayout().selectTab(subtabName)) {
+ CoreGUI.getErrorHandler().handleError("Invalid subtab name: " + subtabName);
+ // TODO: Should we fire a history event here to redirect to a valid bookmark?
+ SubTab defaultSubtab = tab.getLayout().getDefaultSubTab();
+ tab.getLayout().selectTab(defaultSubtab.getTitle());
+ }
+ subTab = tab.getLayout().getCurrentSubTab();
+ }
+ this.topTabSet.selectTab(tab);
+ if (subTab != null) {
+ tab.updateSubTab(subTab);
+ Canvas subView = subTab.getCanvas();
if (subView instanceof BookmarkableView) {
((BookmarkableView) subView).renderView(viewPath);
}
}
+ tab.getLayout().markForRedraw();
+ this.topTabSet.markForRedraw();
+ } catch (Exception e) {
+ System.err.println("Failed to select tab " + tabName + "/" + subtabName + ": " + e);
}
}
+ private static boolean hasTraits(ResourceComposite resourceComposite) {
+ ResourceType type = resourceComposite.getResource().getResourceType();
+ Set<MeasurementDefinition> metricDefs = type.getMetricDefinitions();
+ for (MeasurementDefinition metricDef : metricDefs) {
+ if (metricDef.getDataType() == DataType.TRAIT) {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeDatasource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeDatasource.java
index ecb4806..fe4fdc2 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeDatasource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeDatasource.java
@@ -55,10 +55,7 @@ import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTyp
* @author Greg Hinkle
*/
public class ResourceTreeDatasource extends DataSource {
-
- private boolean initialized = false;
- int rootId;
- List<Resource> initialData;
+ private List<Resource> initialData;
private ResourceGWTServiceAsync resourceService = GWTServiceLookup.getResourceService();
@@ -69,8 +66,6 @@ public class ResourceTreeDatasource extends DataSource {
this.initialData = initialData;
- this.rootId = rootId;
-
DataSourceField idDataField = new DataSourceTextField("id", "ID");
idDataField.setPrimaryKey(true);
@@ -240,7 +235,6 @@ public class ResourceTreeDatasource extends DataSource {
}
return built.toArray(new TreeNode[built.size()]);
-
}
private static boolean sameTypes(ResourceTreeNode[] nodes) {
@@ -263,10 +257,23 @@ public class ResourceTreeDatasource extends DataSource {
setAttribute("parentId", parentId);
setAttribute("name", category.getDisplayName());
}
+
+ @Override
+ public String toString() {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("CategoryTreeNode[");
+ String id = getAttribute("id");
+ buffer.append("id=").append(id);
+ String parentId = getAttribute("parentId");
+ buffer.append(", parentId=").append(parentId);
+ String name = getAttribute("name");
+ buffer.append(", name=").append(name);
+ buffer.append("]");
+ return buffer.toString();
+ }
}
public static class TypeTreeNode extends TreeNode {
-
private TypeTreeNode(String parentId, String parentResourceId, String type) {
setID(parentId + "_" + type);
setParentID(parentId);
@@ -277,10 +284,22 @@ public class ResourceTreeDatasource extends DataSource {
setAttribute("name", type);
}
+ @Override
+ public String toString() {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("TypeTreeNode[");
+ String id = getAttribute("id");
+ buffer.append("id=").append(id);
+ String parentId = getAttribute("parentId");
+ buffer.append(", parentId=").append(parentId);
+ String name = getAttribute("name");
+ buffer.append(", name=").append(name);
+ buffer.append("]");
+ return buffer.toString();
+ }
}
public static class ResourceTreeNode extends TreeNode {
-
private Resource resource;
private ResourceTreeNode(Resource resource) {
@@ -327,5 +346,19 @@ public class ResourceTreeDatasource extends DataSource {
public String getParentId() {
return getAttribute("parentId");
}
+
+ @Override
+ public String toString() {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("ResourceTreeNode[");
+ String id = getAttribute("id");
+ buffer.append("id=").append(id);
+ String parentId = getAttribute("parentId");
+ buffer.append(", parentId=").append(parentId);
+ String name = getAttribute("name");
+ buffer.append(", name=").append(name);
+ buffer.append("]");
+ return buffer.toString();
+ }
}
}
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 e73c7ef..8566975 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
@@ -73,6 +73,7 @@ import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSelectLi
import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.create.OperationCreateWizard;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.factory.ResourceFactoryCreateWizard;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
+import org.rhq.enterprise.gui.coregui.client.util.TreeUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -520,6 +521,8 @@ public class ResourceTreeView extends LocatableVLayout {
}
});
+ TreeUtility.printTree(treeGrid.getTree());
+
TreeNode selectedNode = treeGrid.getTree().findById(String.valueOf(selectedResourceId));
// System.out.println("Trying to preopen: " + selectedNode);
if (selectedNode != null) {
@@ -550,6 +553,8 @@ public class ResourceTreeView extends LocatableVLayout {
new ResourceTypeRepository.ResourceTypeLoadedCallback() {
public void onResourceTypeLoaded(List<Resource> result) {
+ TreeUtility.printTree(treeGrid.getTree());
+
treeGrid.getTree().linkNodes(ResourceTreeDatasource.build(result));
TreeNode selectedNode = treeGrid.getTree().findById(
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TreeUtility.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TreeUtility.java
new file mode 100644
index 0000000..8199c50
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/TreeUtility.java
@@ -0,0 +1,29 @@
+package org.rhq.enterprise.gui.coregui.client.util;
+
+import com.smartgwt.client.widgets.tree.Tree;
+import com.smartgwt.client.widgets.tree.TreeNode;
+
+/**
+ * @author Ian Springer
+ */
+public class TreeUtility {
+ public static void printTree(Tree tree) {
+ TreeNode rootNode = tree.getRoot();
+ printTreeNode(tree, rootNode);
+ }
+
+ private static void printTreeNode(Tree tree, TreeNode node) {
+ int level = tree.getLevel(node);
+ for (int i = 0; i < level; i++) {
+ System.out.print(' ');
+ }
+ System.out.println("* " + node);
+ TreeNode[] childNodes = tree.getChildren(node);
+ for (TreeNode childNode : childNodes) {
+ printTreeNode(tree, childNode);
+ }
+ }
+
+ private TreeUtility() {
+ }
+}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
index 5b3e09e..8fb1e41 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
@@ -3,7 +3,7 @@ package org.rhq.enterprise.gui.coregui.client.util.selenium;
import com.smartgwt.client.widgets.layout.HLayout;
/**
- * Wrapper for com.smartgwt.client.widgets.layout.HLayout that sets the ID for use with selenium scLocators.
+ * Wrapper for a SmartGWT {@link HLayout} that sets the ID for use with Selenium scLocators.
*
* @author Jay Shaughnessy
*/
@@ -46,5 +46,4 @@ public class LocatableHLayout extends HLayout implements Locatable {
public String extendLocatorId(String extension) {
return this.locatorId + "_" + extension;
}
-
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java
index 4ba995c..0dda6bf 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java
@@ -18,6 +18,7 @@
*/
package org.rhq.enterprise.gui.coregui.client.util.selenium;
+import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;
/**
@@ -41,10 +42,28 @@ public class LocatableTabSet extends TabSet {
SeleniumUtility.setID(this, locatorId);
}
+ public void setTabs(LocatableTab... tabs) {
+ super.setTabs(tabs);
+ }
+
+ public LocatableTab[] getTabs() {
+ Tab[] tabs = super.getTabs();
+ LocatableTab[] locatableTabs = new LocatableTab[tabs.length];
+ for (int i = 0, tabsLength = tabs.length; i < tabsLength; i++) {
+ Tab tab = tabs[i];
+ if (!(tab instanceof LocatableTab)) {
+ throw new IllegalStateException("LocatableTabSet contains a Tab that is not a LocatableTab.");
+ }
+ locatableTabs[i] = (LocatableTab) tab;
+ }
+ return locatableTabs;
+ }
+
/**
* Returns the locatorId. This can be useful for constructing more granular locatorIds. For example, if
* the widget contains sub-widgets. Note, this is the raw locatorId for the widget, to get the fully
- * formed ID, typically ofthe form "simpleClassname_locatorId" Call {@link getID()}.
+ * formed ID, typically of the form "simpleClassname_locatorId", call
+ * {@link com.smartgwt.client.widgets.Canvas#getID()}.
*
* @return the locatorId
*/
@@ -67,4 +86,23 @@ public class LocatableTabSet extends TabSet {
return this.locatorId + "_" + extension;
}
+ public LocatableTab getTabByTitle(String title) {
+ LocatableTab[] tabs = getTabs();
+ for (LocatableTab tab : tabs) {
+ if (tab.getTitle().equals(title)) {
+ return tab;
+ }
+ }
+ return null;
+ }
+
+ public LocatableTab getTabByLocatorId(String locatorId) {
+ LocatableTab[] tabs = getTabs();
+ for (LocatableTab tab : tabs) {
+ if (tab.getLocatorId().equals(locatorId)) {
+ return tab;
+ }
+ }
+ return null;
+ }
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
index 0a9b00e..61991c4 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
@@ -3,7 +3,7 @@ package org.rhq.enterprise.gui.coregui.client.util.selenium;
import com.smartgwt.client.widgets.layout.VLayout;
/**
- * Wrapper for com.smartgwt.client.widgets.layout.VLayout that sets the ID for use with selenium scLocators.
+ * Wrapper for a SmartGWT {@link VLayout} that sets the ID for use with Selenium scLocators.
*
* @author Jay Shaughnessy
*/
@@ -50,5 +50,4 @@ public class LocatableVLayout extends VLayout implements Locatable {
public void destroyMembers() {
SeleniumUtility.destroyMembers(this);
}
-
}
13 years, 9 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java | 24 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java | 83 ++++++++++
3 files changed, 108 insertions(+), 3 deletions(-)
New commits:
commit d5c7dd9fe06a82c944231ef63d102f48968585c9
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 9 17:17:32 2010 -0400
more alert def conditions editor stuff - starting the "add new condition" dialog
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
index c4e1844..e1cb68f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
@@ -139,7 +139,11 @@ public class ConditionsAlertDefinitionForm extends LocatableVLayout implements E
condExprs.put(BooleanExpression.ANY.name(), BooleanExpression.ANY.toString());
conditionExpression.setValueMap(condExprs);
conditionExpression.setDefaultValue(BooleanExpression.ALL.name());
+ conditionExpression.setWrapTitle(false);
+
conditionExpressionStatic = new StaticTextItem("conditionExpressionStatic", "Fire alert when");
+ conditionExpressionStatic.setWrapTitle(false);
+
conditionExpressionForm.setFields(conditionExpression, conditionExpressionStatic);
conditionsEditor = new ConditionsEditor(this.extendLocatorId("conditionsEditor"), null);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
index ecd93d0..1742ec0 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
@@ -29,7 +29,9 @@ import java.util.Set;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.fields.DataSourceTextField;
-import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.Window;
+import com.smartgwt.client.widgets.events.CloseClickHandler;
+import com.smartgwt.client.widgets.events.CloseClientEvent;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.alert.AlertCondition;
@@ -86,8 +88,24 @@ public class ConditionsEditor extends LocatableVLayout {
table.addTableAction(this.extendLocatorId("add"), "Add", SelectionEnablement.ALWAYS, null, new TableAction() {
@Override
public void executeAction(ListGridRecord[] selection) {
- // TODO Auto-generated method stub
- SC.say("Not implemented yet");
+ final Window winModal = new Window();
+ winModal.setTitle("Add Condition");
+ winModal.setShowMinimizeButton(false);
+ winModal.setIsModal(true);
+ winModal.setShowModalMask(true);
+ winModal.setAutoSize(true);
+ winModal.setAutoCenter(true);
+ winModal.centerInPage();
+ winModal.addCloseClickHandler(new CloseClickHandler() {
+ @Override
+ public void onCloseClick(CloseClientEvent event) {
+ winModal.destroy();
+ }
+ });
+ NewConditionEditor newConditionEditor = new NewConditionEditor(extendLocatorId("newConditionEditor"),
+ conditions);
+ winModal.addItem(newConditionEditor);
+ winModal.show();
}
});
table.addTableAction(this.extendLocatorId("delete"), "Delete", SelectionEnablement.ANY, "Are you sure?",
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
new file mode 100644
index 0000000..9f39e6e
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/NewConditionEditor.java
@@ -0,0 +1,83 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+package org.rhq.enterprise.gui.coregui.client.alert.definitions;
+
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+
+import com.smartgwt.client.types.Alignment;
+import com.smartgwt.client.util.SC;
+import com.smartgwt.client.widgets.form.fields.ButtonItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
+import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
+
+import org.rhq.core.domain.alert.AlertCondition;
+import org.rhq.core.domain.alert.AlertConditionCategory;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+
+/**
+ * @author John Mazzitelli
+ */
+public class NewConditionEditor extends LocatableDynamicForm {
+
+ private HashSet<AlertCondition> conditions;
+ private SelectItem conditionTypeSelectItem;
+
+ public NewConditionEditor(String locatorId, HashSet<AlertCondition> conditions) {
+ super(locatorId);
+ this.conditions = conditions;
+ }
+
+ @Override
+ protected void onInit() {
+ super.onInit();
+
+ conditionTypeSelectItem = new SelectItem("conditionType", "Condition Type");
+ LinkedHashMap<String, String> condTypes = new LinkedHashMap<String, String>(7);
+ condTypes.put(AlertConditionCategory.THRESHOLD.name(), "Measurement Absolute Value Threshold");
+ condTypes.put(AlertConditionCategory.BASELINE.name(), "Measurement Baseline Threshold");
+ condTypes.put(AlertConditionCategory.CHANGE.name(), "Measurement Value Change");
+ condTypes.put(AlertConditionCategory.TRAIT.name(), "Trait Value Change");
+ condTypes.put(AlertConditionCategory.AVAILABILITY.name(), "Availability Change");
+ condTypes.put(AlertConditionCategory.CONTROL.name(), "Operation Execution");
+ condTypes.put(AlertConditionCategory.EVENT.name(), "Event Detection");
+ conditionTypeSelectItem.setValueMap(condTypes);
+ conditionTypeSelectItem.setDefaultValue(AlertConditionCategory.THRESHOLD.name());
+ conditionTypeSelectItem.setWrapTitle(false);
+
+ ButtonItem ok = new ButtonItem("buttonItem", "OK");
+ ok.setColSpan(2);
+ ok.setAlign(Alignment.CENTER);
+ ok.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ // TODO
+ SC.say("Not yet implemented");
+ }
+ });
+
+ setFields(conditionTypeSelectItem, ok);
+ };
+}
13 years, 9 months
[rhq] 2 commits - modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java | 27 +++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java | 43 +++++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java | 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java | 52 +++++-----
4 files changed, 83 insertions(+), 40 deletions(-)
New commits:
commit b10d84bf08e986ade3786ef53bcea64c94c11468
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 9 13:44:52 2010 -0400
more incremental coding for the conditions editor of alert def editor
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
index f19d967..c4e1844 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
@@ -23,24 +23,27 @@
package org.rhq.enterprise.gui.coregui.client.alert.definitions;
+import java.util.HashSet;
import java.util.LinkedHashMap;
-import com.smartgwt.client.widgets.form.fields.CanvasItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+import org.rhq.core.domain.alert.AlertCondition;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.BooleanExpression;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* @author John Mazzitelli
*/
-public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implements EditAlertDefinitionForm {
+public class ConditionsAlertDefinitionForm extends LocatableVLayout implements EditAlertDefinitionForm {
private AlertDefinition alertDefinition;
private SelectItem conditionExpression;
+ private ConditionsEditor conditionsEditor;
private StaticTextItem conditionExpressionStatic;
@@ -81,6 +84,7 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen
clearFormValues();
} else {
conditionExpression.setValue(alertDef.getConditionExpression().name());
+ conditionsEditor.setConditions(alertDef.getConditions());
conditionExpressionStatic.setValue(alertDef.getConditionExpression().toString());
}
@@ -90,6 +94,7 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen
@Override
public void makeEditable() {
conditionExpression.show();
+ conditionsEditor.setEditable(true);
conditionExpressionStatic.hide();
markForRedraw();
@@ -98,6 +103,7 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen
@Override
public void makeViewOnly() {
conditionExpression.hide();
+ conditionsEditor.setEditable(false);
conditionExpressionStatic.show();
markForRedraw();
@@ -107,11 +113,15 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen
public void saveAlertDefinition() {
String condExpr = conditionExpression.getValue().toString();
alertDefinition.setConditionExpression(BooleanExpression.valueOf(condExpr));
+
+ HashSet<AlertCondition> conditions = conditionsEditor.getConditions();
+ alertDefinition.setConditions(conditions);
}
@Override
public void clearFormValues() {
conditionExpression.clearValue();
+ conditionsEditor.setConditions(null);
conditionExpressionStatic.clearValue();
@@ -121,6 +131,8 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen
private void buildForm() {
if (!formBuilt) {
+ LocatableDynamicForm conditionExpressionForm;
+ conditionExpressionForm = new LocatableDynamicForm(this.extendLocatorId("conditionExpressionForm"));
conditionExpression = new SelectItem("conditionExpression", "Fire alert when");
LinkedHashMap<String, String> condExprs = new LinkedHashMap<String, String>(2);
condExprs.put(BooleanExpression.ALL.name(), BooleanExpression.ALL.toString());
@@ -128,16 +140,11 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen
conditionExpression.setValueMap(condExprs);
conditionExpression.setDefaultValue(BooleanExpression.ALL.name());
conditionExpressionStatic = new StaticTextItem("conditionExpressionStatic", "Fire alert when");
+ conditionExpressionForm.setFields(conditionExpression, conditionExpressionStatic);
- ConditionsEditor conditionsEditor = new ConditionsEditor(this.extendLocatorId("conditionsEditor"), this);
-
- CanvasItem canvasItem = new CanvasItem("conditionsEditorCanvasItem");
- canvasItem.setCanvas(conditionsEditor);
- canvasItem.setShowTitle(false);
- canvasItem.setColSpan(2);
-
- setFields(conditionExpression, conditionExpressionStatic, canvasItem);
+ conditionsEditor = new ConditionsEditor(this.extendLocatorId("conditionsEditor"), null);
+ setMembers(conditionExpressionForm, conditionsEditor);
formBuilt = true;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
index ddc3545..ecd93d0 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
@@ -23,9 +23,13 @@
package org.rhq.enterprise.gui.coregui.client.alert.definitions;
+import java.util.HashSet;
+import java.util.Set;
+
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.fields.DataSourceTextField;
+import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.alert.AlertCondition;
@@ -41,12 +45,32 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*/
public class ConditionsEditor extends LocatableVLayout {
- private final ConditionsAlertDefinitionForm form;
+ private HashSet<AlertCondition> conditions;
private Table table;
- public ConditionsEditor(String locatorId, ConditionsAlertDefinitionForm form) {
+ public ConditionsEditor(String locatorId, HashSet<AlertCondition> conditions) {
super(locatorId);
- this.form = form;
+ setConditions(conditions);
+ }
+
+ /**
+ * Returns the conditions that this editor currently has in memory.
+ * This will never be <code>null</code>.
+ *
+ * @return conditions set that was possibly edited by the user
+ */
+ public HashSet<AlertCondition> getConditions() {
+ return conditions;
+ }
+
+ public void setConditions(Set<AlertCondition> set) {
+ conditions = new HashSet<AlertCondition>(); // make our own copy
+ if (set != null) {
+ conditions.addAll(set);
+ }
+ if (table != null) {
+ table.refresh();
+ }
}
@Override
@@ -55,19 +79,26 @@ public class ConditionsEditor extends LocatableVLayout {
table = new Table("conditionsTable");
table.setShowHeader(false);
- table.setDataSource(new ConditionDataSource());
+
+ final ConditionDataSource dataSource = new ConditionDataSource();
+ table.setDataSource(dataSource);
table.addTableAction(this.extendLocatorId("add"), "Add", SelectionEnablement.ALWAYS, null, new TableAction() {
@Override
public void executeAction(ListGridRecord[] selection) {
// TODO Auto-generated method stub
+ SC.say("Not implemented yet");
}
});
table.addTableAction(this.extendLocatorId("delete"), "Delete", SelectionEnablement.ANY, "Are you sure?",
new TableAction() {
@Override
public void executeAction(ListGridRecord[] selection) {
- // TODO Auto-generated method stub
+ for (ListGridRecord record : selection) {
+ AlertCondition cond = dataSource.copyValues(record);
+ conditions.remove(cond);
+ }
+ table.refresh();
}
});
@@ -102,7 +133,7 @@ public class ConditionsEditor extends LocatableVLayout {
@Override
protected void executeFetch(DSRequest request, DSResponse response) {
- response.setData(buildRecords(ConditionsEditor.this.form.getAlertDefinition().getConditions()));
+ response.setData(buildRecords(conditions));
processResponse(request.getRequestId(), response);
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java
index 05e6c18..d06e422 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/SingleAlertDefinitionView.java
@@ -121,6 +121,7 @@ public class SingleAlertDefinitionView extends LocatableVLayout {
cancelButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
+ setAlertDefinition(getAlertDefinition()); // reverts data back to original
makeViewOnly();
}
});
commit 0074e60a201b6d8796f2cea440d4df3b32003c9a
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Sep 9 13:44:00 2010 -0400
avoid NPE. this can occur if calling the set-disable-override method before the table is drawn
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
index d12a864..abae48f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
@@ -501,39 +501,43 @@ public class Table extends LocatableHLayout {
if (showFooter) {
int count = this.listGrid.getSelection().length;
for (TableActionInfo tableAction : tableActions) {
- boolean enabled;
- if (!this.tableActionDisableOverride) {
- switch (tableAction.enablement) {
- case ALWAYS:
- enabled = true;
- break;
- case NEVER:
+ if (tableAction.actionButton != null) { // if null, we haven't initialized our buttons yet, so skip this
+ boolean enabled;
+ if (!this.tableActionDisableOverride) {
+ switch (tableAction.enablement) {
+ case ALWAYS:
+ enabled = true;
+ break;
+ case NEVER:
+ enabled = false;
+ break;
+ case ANY:
+ enabled = (count >= 1);
+ break;
+ case SINGLE:
+ enabled = (count == 1);
+ break;
+ case MULTIPLE:
+ enabled = (count > 1);
+ break;
+ default:
+ throw new IllegalStateException("Unhandled SelectionEnablement: "
+ + tableAction.enablement.name());
+ }
+ } else {
enabled = false;
- break;
- case ANY:
- enabled = (count >= 1);
- break;
- case SINGLE:
- enabled = (count == 1);
- break;
- case MULTIPLE:
- enabled = (count > 1);
- break;
- default:
- throw new IllegalStateException("Unhandled SelectionEnablement: "
- + tableAction.enablement.name());
}
- } else {
- enabled = false;
+ tableAction.actionButton.setDisabled(!enabled);
}
- tableAction.actionButton.setDisabled(!enabled);
}
for (Canvas extraWidget : extraWidgets) {
if (extraWidget instanceof TableWidget) {
((TableWidget) extraWidget).refresh(this.listGrid);
}
}
- this.tableInfo.setContents("Total: " + listGrid.getTotalRows() + " (" + count + " selected)");
+ if (this.tableInfo != null) {
+ this.tableInfo.setContents("Total: " + listGrid.getTotalRows() + " (" + count + " selected)");
+ }
}
}
13 years, 9 months
[rhq] 2 commits - etc/cli-scripts
by John Sanda
etc/cli-scripts/measurement_utils.js | 134 +++++++++++++++++++++++++++++++++++
1 file changed, 134 insertions(+)
New commits:
commit bcf70dce12b481f4f0876a9d87eb3f7781df9497
Merge: ce3f841... 256cc0e...
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Sep 8 13:38:17 2010 -0400
Merge branch 'master' of ssh://git.fedorahosted.org/git/rhq/rhq
commit ce3f841a30ea1f4d56055c42e252acad575043bb
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Sep 8 13:36:49 2010 -0400
Initial commit for measurement_utils.js
Defines the class MeausrementModule which provides some properties and
methods for working with measurement schedules.
diff --git a/etc/cli-scripts/measurement_utils.js b/etc/cli-scripts/measurement_utils.js
new file mode 100644
index 0000000..261aa8e
--- /dev/null
+++ b/etc/cli-scripts/measurement_utils.js
@@ -0,0 +1,134 @@
+testUpdates = {
+ context: 'Resource',
+ id: 10033,
+ schedules: {
+ 'Late Collections': interval(15, minutes),
+ 'Failed Collections per Minute': interval(15, minutes),
+ 'Currently Schedule Measurements': 'enabled'
+ }
+}
+
+testGroupUpdates = {
+ context: 'Group',
+ id: 10031,
+ schedules: {
+ 'Used Swap Space': 'disabled',
+ 'Total Memory': interval(3, minutes)
+ }
+}
+
+/**
+ * MeasurementModule is a class that provides properties and methods for working with
+ * measurements.
+ */
+function MeasurementModule() {
+
+ /**
+ * Performs the actual updates, calling MeasurementScheduleManager.
+ *
+ * @param updates
+ * @param criteria
+ * @param enableSchedules
+ * @param disableSchedules
+ * @param updateSchedules
+ */
+ function doScheduleUpdates(updates, criteria, enableSchedules, disableSchedules, updateSchedules) {
+ criteria.fetchDefinition(true);
+ var schedules = MeasurementScheduleManager.findSchedulesByCriteria(criteria);
+
+ foreach(schedules, function (schedule) {
+ var measurementName = schedule.definition.displayName;
+
+ if (updates.schedules[measurementName]) {
+ switch (updates.schedules[measurementName]) {
+ case 'enabled':
+ MeasurementScheduleManager[enableSchedules](updates.id, [schedule.definition.id]);
+ break;
+ case 'disabled':
+ MeasurementScheduleManager[disableSchedules](updates.id,
+ [schedule.definition.id]);
+ break;
+ default:
+ var interval = updates.schedules[measurementName];
+ MeasurementScheduleManager[updateSchedules](updates.id,
+ [schedule.definition.id], interval);
+ }
+ }
+ });
+
+ }
+
+ /**
+ * Intended for use with the interval method.
+ */
+ this.time = {
+ seconds: 1000,
+ minutes: 60 * seconds,
+ hours: 60 * minutes
+ }
+
+ /**
+ * A helper method that calculates a shedule's interval in milliseconds
+ * @param num
+ * @param time
+ */
+ this.interval = function (num, time) {
+ return num * time;
+ }
+
+ /**
+ * Updates the metric schedule as specified in the updates object. The object is expected
+ * to contain three properties or keys. The first of these required keys is <context>.
+ * Accepted values are the strings 'Resource' or 'Group'.
+ *
+ * The next required key is <id>, and its values is expected to be an integer. The
+ * interpretation of its values is dependent on the value of <context>. When the value of
+ * <context> is 'Resource', then <id> is treated as a resource id. If the value of
+ * <context> is 'Group', then <id> is treated as a compatible group id.
+ *
+ * The third required key is <schedules>, and it a nested object that specifies the
+ * schedules to be updated. The keys of <schedules> are the measurement display names.
+ * Expected values are 'enabled', 'disabled', or an integer which specifies the
+ * collection interval in milliseconds.
+ *
+ * Here is an example to illustrate what the updates object should look like:
+ *
+ * resourceSchedulesUpdates = {
+ * context: 'Resource',
+ * id: 123,
+ * schedules: {
+ * 'Measurement A': 'enabled',
+ * 'Measurement B': 'disabled,
+ * 'Measurement C': interval(20, time.minutes)
+ * }
+ * }
+ *
+ * @param updates The updates to perform
+ */
+ this.updateSchedules = function (updates) {
+ if (!updates.id) {
+ throw '<id> is a required property';
+ }
+
+ if (!updates.schedules) {
+ throw '<schedules> is a required property';
+ }
+
+ if (updates.context == 'Resource') {
+ var criteria = MeasurementScheduleCriteria();
+ criteria.addFilterResourceId(updates.id);
+ doScheduleUpdates(updates, criteria, 'enableSchedulesForResource',
+ 'disableSchedulesForResource', 'updateSchedulesForResource');
+ }
+ else if (updates.context == 'Group') {
+ var criteria = MeasurementScheduleCriteria();
+ criteria.addFilterResourceGroupId(updates.id);
+ doScheduleUpdates(updates, criteria, 'enableSchedulesForCompatibleGroup',
+ 'disableSchedulesForCompatibleGroup', 'updateSchedulesForCompatibleGroup');
+ }
+ else {
+ throw "Unrecognized value for context: " + updates.context + " - expected either " +
+ "<Resource> or <Group>";
+ }
+ }
+}
13 years, 9 months
[rhq] 2 commits - modules/enterprise
by Simeon Pinder
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java | 100 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedView.java | 142 ++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java | 335 +++++++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java | 28
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java | 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java | 2
6 files changed, 576 insertions(+), 42 deletions(-)
New commits:
commit 256cc0e5624dcb2c1c656057924590126e37e5ff
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Wed Sep 8 17:27:50 2010 -0400
refresh/config for portlets i)auto discovery ii)recently added.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
index 0356212..ad0895b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
@@ -18,29 +18,58 @@
*/
package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.inventory.queue;
+import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.events.SubmitValuesEvent;
+import com.smartgwt.client.widgets.form.events.SubmitValuesHandler;
+import com.smartgwt.client.widgets.form.fields.BlurbItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
+import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.ResourceAutodiscoveryView;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
/**
* @author Greg Hinkle
*/
-public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements Portlet {
+public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements CustomSettingsPortlet {
public static final String KEY = "Discovery Queue";
+ private static final String AUTODISCOVERY_PLATFORM_MAX = "auto-discovery-platform-max";
+ private String unlimited = "unlimited";
+ private String defaultValue = unlimited;
+ private DashboardPortlet storedPortlet;
+ private int maximumPlatformsToDisplay = -1;
public AutodiscoveryPortlet(String locatorId) {
super(locatorId, true);
}
+ /** Implement configure action.
+ */
+ @Override
public void configure(PortletWindow portletWindow, DashboardPortlet storedPortlet) {
- // TODO: Implement this method.
+ this.storedPortlet = storedPortlet;
+ if (storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX) != null) {
+ //retrieve and translate to int
+ String retrieved = storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX).getStringValue();
+ if (retrieved.equals(unlimited)) {
+ maximumPlatformsToDisplay = -1;
+ } else {
+ maximumPlatformsToDisplay = Integer.parseInt(retrieved);
+ }
+ } else {//create setting
+ storedPortlet.getConfiguration().put(new PropertySimple(AUTODISCOVERY_PLATFORM_MAX, defaultValue));
+ }
}
public Canvas getHelpCanvas() {
@@ -48,8 +77,73 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements P
+ "for monitoring and management or to ingnore them from further action.");
}
+ /** Build custom for to dispaly the Portlet Configuration settings.
+ *
+ */
public DynamicForm getCustomSettingsForm() {
- return null; // TODO: Implement this method.
+
+ final DynamicForm form = new DynamicForm();
+ form.setLayoutAlign(VerticalAlignment.CENTER);
+
+ //horizontal display component
+ LocatableHLayout row = new LocatableHLayout("auto-discovery.configuration");
+ BlurbItem label = new BlurbItem("discovery-platform-count-label");
+ label.setValue("Maximum Platforms to show");
+
+ //-------------combobox for number of platforms to display on the dashboard
+ final SelectItem maximumPlatformsComboBox = new SelectItem(AUTODISCOVERY_PLATFORM_MAX);
+ maximumPlatformsComboBox.setTitle("");
+ //spinder 9/3/10: the following is required workaround to disable editability of combobox.
+ maximumPlatformsComboBox.setType("selection");
+ //define acceptable values for display amount
+ String[] acceptableDisplayValues = { "1", "2", "5", "10", unlimited };
+ maximumPlatformsComboBox.setValueMap(acceptableDisplayValues);
+ //set width of dropdown display region
+ maximumPlatformsComboBox.setWidth(100);
+ maximumPlatformsComboBox.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ String selectedItem = "" + event.getValue();
+ //stuff into the master form for retrieval
+ form.setValue(AUTODISCOVERY_PLATFORM_MAX, selectedItem);
+ }
+ });
+
+ //wrap field item in dynamicform for addition as a field item
+ DynamicForm item = new DynamicForm();
+ item.setFields(label);
+
+ row.addMember(item);
+ DynamicForm item2 = new DynamicForm();
+ item2.setFields(maximumPlatformsComboBox);
+ row.addMember(item2);
+
+ //default selected value to 'unlimited'(live lists) and check both combobox settings here.
+ String selectedValue = defaultValue;
+ if (storedPortlet != null) {
+ //if property exists retrieve it
+ if (storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX) != null) {
+ selectedValue = storedPortlet.getConfiguration().getSimple(AUTODISCOVERY_PLATFORM_MAX).getStringValue();
+ } else {//insert default value
+ storedPortlet.getConfiguration().put(new PropertySimple(AUTODISCOVERY_PLATFORM_MAX, defaultValue));
+ }
+ }
+ //prepopulate the combobox with the previously stored selection
+ maximumPlatformsComboBox.setDefaultValue(selectedValue);
+
+ form.addChild(row);
+
+ //submit handler
+ form.addSubmitValuesHandler(new SubmitValuesHandler() {
+ @Override
+ public void onSubmitValues(SubmitValuesEvent event) {
+ if (form.getValue(AUTODISCOVERY_PLATFORM_MAX) != null) {
+ storedPortlet.getConfiguration().put(
+ new PropertySimple(AUTODISCOVERY_PLATFORM_MAX, form.getValue(AUTODISCOVERY_PLATFORM_MAX)));
+ }
+ }
+ });
+
+ return form;
}
public static final class Factory implements PortletViewFactory {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedView.java
index 3a551eb..655596b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/imported/RecentlyAddedView.java
@@ -26,32 +26,49 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.imported
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.events.SubmitValuesEvent;
+import com.smartgwt.client.widgets.form.events.SubmitValuesHandler;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.tree.TreeGrid;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.dashboard.DashboardPortlet;
import org.rhq.enterprise.gui.coregui.client.components.HeaderLabel;
+import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
-public class RecentlyAddedView extends LocatableVLayout implements Portlet {
+public class RecentlyAddedView extends LocatableVLayout implements CustomSettingsPortlet {
public static final String KEY = "Recently Added Portlet";
private boolean simple = true;
+ private DashboardPortlet storedPortlet;
+ public static final String unlimited = "unlimited";
+ public static final String defaultValue = unlimited;
+
+ private static final String RECENTLY_ADDED_SHOW_MAX = "recently-added-show-amount";
+
+ private static final String RECENTLY_ADDED_SHOW_HRS = "recently-added-time-range";
public RecentlyAddedView(String locatorId) {
super(locatorId);
}
+ private TreeGrid treeGrid = null;
+
+ private int maximumRecentlyAddedToDisplay;
+ private int maximumRecentlyAddedWithinHours;
+
@Override
protected void onInit() {
super.onInit();
- TreeGrid treeGrid = new TreeGrid();
+ treeGrid = new TreeGrid();
treeGrid.setDataSource(new RecentlyAddedResourceDS());
treeGrid.setAutoFetchData(true);
treeGrid.setTitle("Recently Added Resources");
@@ -79,7 +96,28 @@ public class RecentlyAddedView extends LocatableVLayout implements Portlet {
}
public void configure(PortletWindow portletWindow, DashboardPortlet storedPortlet) {
-
+ this.storedPortlet = storedPortlet;
+ if (storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_MAX) != null) {
+ //retrieve and translate to int
+ String retrieved = storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_MAX).getStringValue();
+ if (retrieved.equals(unlimited)) {
+ maximumRecentlyAddedToDisplay = -1;
+ } else {
+ maximumRecentlyAddedToDisplay = Integer.parseInt(retrieved);
+ }
+ } else {//create setting
+ storedPortlet.getConfiguration().put(new PropertySimple(RECENTLY_ADDED_SHOW_MAX, defaultValue));
+ }
+ if (storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_HRS) != null) {
+ String retrieved = storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_HRS).getStringValue();
+ if (retrieved.equals(unlimited)) {
+ setMaximumRecentlyAddedWithinHours(-1);
+ } else {
+ setMaximumRecentlyAddedWithinHours(Integer.parseInt(retrieved));
+ }
+ } else {
+ storedPortlet.getConfiguration().put(new PropertySimple(RECENTLY_ADDED_SHOW_HRS, defaultValue));
+ }
}
public Canvas getHelpCanvas() {
@@ -87,7 +125,76 @@ public class RecentlyAddedView extends LocatableVLayout implements Portlet {
}
public DynamicForm getCustomSettingsForm() {
- return null;
+ final DynamicForm form = new DynamicForm();
+
+ //-------------combobox for number of recently added resources to display on the dashboard
+ final SelectItem maximumRecentlyAddedComboBox = new SelectItem(RECENTLY_ADDED_SHOW_MAX);
+ maximumRecentlyAddedComboBox.setTitle("Show maximum of");
+ maximumRecentlyAddedComboBox.setHint("<nobr><b> recently approved resources on dashboard.</b></nobr>");
+ //spinder 9/3/10: the following is required workaround to disable editability of combobox.
+ maximumRecentlyAddedComboBox.setType("selection");
+ //define acceptable values for display amount
+ String[] acceptableDisplayValues = { "5", "10", "15", "20", "30", unlimited };
+ maximumRecentlyAddedComboBox.setValueMap(acceptableDisplayValues);
+ //set width of dropdown display region
+ maximumRecentlyAddedComboBox.setWidth(100);
+
+ //default selected value to 'unlimited'(live lists) and check both combobox settings here.
+ String selectedValue = defaultValue;
+ if (storedPortlet != null) {
+ //if property exists retrieve it
+ if (storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_MAX) != null) {
+ selectedValue = storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_MAX).getStringValue();
+ } else {//insert default value
+ storedPortlet.getConfiguration().put(new PropertySimple(RECENTLY_ADDED_SHOW_MAX, defaultValue));
+ }
+ }
+ //prepopulate the combobox with the previously stored selection
+ maximumRecentlyAddedComboBox.setDefaultValue(selectedValue);
+
+ //------------- Build second combobox for timeframe for problem resources search.
+ final SelectItem maximumTimeRecentlyAddedComboBox = new SelectItem(RECENTLY_ADDED_SHOW_HRS);
+ maximumTimeRecentlyAddedComboBox.setTitle("For the last ");
+ maximumTimeRecentlyAddedComboBox.setHint("<nobr><b> hours </b></nobr>");
+ //spinder 9/3/10: the following is required workaround to disable editability of combobox.
+ maximumTimeRecentlyAddedComboBox.setType("selection");
+ //define acceptable values for display amount
+ String[] acceptableTimeValues = { "1", "4", "8", "24", "48", unlimited };
+ maximumTimeRecentlyAddedComboBox.setValueMap(acceptableTimeValues);
+ maximumTimeRecentlyAddedComboBox.setWidth(100);
+
+ //set to default
+ selectedValue = defaultValue;
+ if (storedPortlet != null) {
+ //if property exists retrieve it
+ if (storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_HRS) != null) {
+ selectedValue = storedPortlet.getConfiguration().getSimple(RECENTLY_ADDED_SHOW_HRS).getStringValue();
+ } else {//insert default value
+ storedPortlet.getConfiguration().put(new PropertySimple(RECENTLY_ADDED_SHOW_HRS, defaultValue));
+ }
+ }
+ //prepopulate the combobox with the previously stored selection
+ maximumTimeRecentlyAddedComboBox.setDefaultValue(selectedValue);
+
+ //insert fields
+ form.setFields(maximumRecentlyAddedComboBox, maximumTimeRecentlyAddedComboBox);
+
+ //submit handler
+ form.addSubmitValuesHandler(new SubmitValuesHandler() {
+ @Override
+ public void onSubmitValues(SubmitValuesEvent event) {
+ if (form.getValue(RECENTLY_ADDED_SHOW_MAX) != null) {
+ storedPortlet.getConfiguration().put(
+ new PropertySimple(RECENTLY_ADDED_SHOW_MAX, form.getValue(RECENTLY_ADDED_SHOW_MAX)));
+ }
+ if (form.getValue(RECENTLY_ADDED_SHOW_HRS) != null) {
+ storedPortlet.getConfiguration().put(
+ new PropertySimple(RECENTLY_ADDED_SHOW_HRS, form.getValue(RECENTLY_ADDED_SHOW_HRS)));
+ }
+ }
+ });
+
+ return form;
}
public static final class Factory implements PortletViewFactory {
@@ -97,4 +204,31 @@ public class RecentlyAddedView extends LocatableVLayout implements Portlet {
return new RecentlyAddedView(locatorId);
}
}
+
+ /** Custom refresh operation as we cannot directly extend Table because it
+ * contains a TreeGrid which is not a Table.
+ */
+ @Override
+ public void redraw() {
+ super.redraw();
+ //now reload the table data
+ this.treeGrid.invalidateCache();
+ this.treeGrid.markForRedraw();
+ }
+
+ public int getMaximumRecentlyAddedToDisplay() {
+ return maximumRecentlyAddedToDisplay;
+ }
+
+ public void setMaximumRecentlyAddedToDisplay(int maximumRecentlyAddedToDisplay) {
+ this.maximumRecentlyAddedToDisplay = maximumRecentlyAddedToDisplay;
+ }
+
+ public int getMaximumRecentlyAddedWithinHours() {
+ return maximumRecentlyAddedWithinHours;
+ }
+
+ public void setMaximumRecentlyAddedWithinHours(int maximumRecentlyAddedWithinHours) {
+ this.maximumRecentlyAddedWithinHours = maximumRecentlyAddedWithinHours;
+ }
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
index 57472d3..88df56f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
@@ -82,7 +82,6 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
listGrid.setCellHeight(50);
//wrap to display disambiguation
listGrid.setWrapCells(true);
- // System.out.println("@@@@:"+listGrid.getField(ProblemResourcesDataSource.resource)+":W"+listGrid.getField(ProblemResourcesDataSource.resource).getWidth());
listGrid.getField(ProblemResourcesDataSource.resource).setWidth("40%");
listGrid.getField(ProblemResourcesDataSource.location).setWidth("40%");
listGrid.getField(ProblemResourcesDataSource.alerts).setWidth("10%");
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java
index 54d175f..2d81fe0 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/discovery/ResourceAutodiscoveryView.java
@@ -219,4 +219,15 @@ public class ResourceAutodiscoveryView extends LocatableVLayout {
}
return selected.toArray(new Integer[selected.size()]);
}
+
+ /** Custom refresh operation as we cannot directly extend Table because it
+ * contains a TreeGrid which is not a Table.
+ */
+ @Override
+ public void redraw() {
+ super.redraw();
+ //now reload the table data
+ this.treeGrid.invalidateCache();
+ this.treeGrid.markForRedraw();
+ }
}
commit c6fa4276a970f11ad543bdd83d714c3c2cc8c5bb
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Wed Sep 8 09:23:39 2010 -0400
i)OperationsPortlet config/refresh ii)editable combobox fix.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
index b7eeef9..81accf8 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
@@ -21,15 +21,29 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.operatio
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
+import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.events.SubmitValuesEvent;
+import com.smartgwt.client.widgets.form.events.SubmitValuesHandler;
+import com.smartgwt.client.widgets.form.fields.CheckboxItem;
+import com.smartgwt.client.widgets.form.fields.SelectItem;
+import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
+import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import com.smartgwt.client.widgets.grid.HeaderSpan;
+import com.smartgwt.client.widgets.layout.VStack;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.PropertyDefinitionSimple;
+import org.rhq.core.domain.configuration.definition.PropertySimpleType;
import org.rhq.core.domain.dashboard.DashboardPortlet;
+import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory;
import org.rhq.enterprise.gui.coregui.client.dashboard.PortletWindow;
import org.rhq.enterprise.gui.coregui.client.operation.RecentOperationsDataSource;
import org.rhq.enterprise.gui.coregui.client.operation.ScheduledOperationsDataSource;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableListGrid;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -38,12 +52,34 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
*
* @author Simeon Pinder
*/
-public class OperationsPortlet extends LocatableVLayout implements Portlet {
+public class OperationsPortlet extends LocatableVLayout implements CustomSettingsPortlet {
+ //unique field/form identifiers
+ public static final String OPERATIONS_RANGE_COMPLETED_ENABLED = "operations-completed-enabled";
+ public static final String OPERATIONS_RANGE_SCHEDULED_ENABLED = "operations-scheduled-enabled";
+ public static final String OPERATIONS_RANGE_COMPLETED = "operations-range-completed";
+ public static final String OPERATIONS_RANGE_SCHEDULED = "operations-range-scheduled";
+ //portlet key
public static final String KEY = "Operations";
private static final String TITLE = KEY;
private static String recentOperations = "Recent Operations";
private static String scheduledOperations = "Scheduled Operations";
+ private boolean operationsRangeLastEnabled = false;
+ private boolean operationsRangeNextEnabled = false;
+ private int operationsRangeScheduled = -1;
+ private int operationsRangeCompleted = -1;
+ //ListGrids for operations
+ private LocatableListGrid recentOperationsGrid = null;
+ private LocatableListGrid scheduledOperationsGrid = null;
+ private DashboardPortlet storedPortlet = null;
+ public static String unlimited = "unlimited";
+ public static String defaultValue = unlimited;
+ public static boolean defaultEnabled = false;
+
+ //default no-args constructor for serialization.
+ private OperationsPortlet() {
+ super("(unitialized)");
+ }
public OperationsPortlet(String locatorId) {
super(locatorId);
@@ -56,13 +92,16 @@ public class OperationsPortlet extends LocatableVLayout implements Portlet {
//set title for larger container
setTitle(TITLE);
- // Add the list table as the top half of the view.
- LocatableListGrid recentOperationsGrid = new LocatableListGrid(recentOperations);
+ this.recentOperationsGrid = new LocatableListGrid(recentOperations);
recentOperationsGrid.setDataSource(new RecentOperationsDataSource());
recentOperationsGrid.setAutoFetchData(true);
- String[] allRows = new String[] { RecentOperationsDataSource.location, RecentOperationsDataSource.operation,
- RecentOperationsDataSource.resource, RecentOperationsDataSource.status, RecentOperationsDataSource.time };
- recentOperationsGrid.setHeaderSpans(new HeaderSpan(recentOperations, allRows));
+ recentOperationsGrid.setTitle(recentOperations);
+ recentOperationsGrid.setWidth100();
+ //defining header span
+ String[] completedRows = new String[] { RecentOperationsDataSource.location,
+ RecentOperationsDataSource.operation, RecentOperationsDataSource.resource,
+ RecentOperationsDataSource.status, RecentOperationsDataSource.time };
+ recentOperationsGrid.setHeaderSpans(new HeaderSpan(recentOperations, completedRows));
recentOperationsGrid.setHeaderSpanHeight(new Integer(20));
recentOperationsGrid.setHeaderHeight(40);
recentOperationsGrid.setResizeFieldsInRealTime(true);
@@ -71,13 +110,15 @@ public class OperationsPortlet extends LocatableVLayout implements Portlet {
addMember(recentOperationsGrid);
// Add the list table as the top half of the view.
- LocatableListGrid scheduledOperationsGrid = new LocatableListGrid(scheduledOperations);
+ this.scheduledOperationsGrid = new LocatableListGrid(scheduledOperations);
scheduledOperationsGrid.setDataSource(new ScheduledOperationsDataSource());
scheduledOperationsGrid.setAutoFetchData(true);
- String[] allRows2 = new String[] { ScheduledOperationsDataSource.location,
+ scheduledOperationsGrid.setTitle(scheduledOperations);
+ scheduledOperationsGrid.setWidth100();
+ String[] scheduledRows = new String[] { ScheduledOperationsDataSource.location,
ScheduledOperationsDataSource.operation, ScheduledOperationsDataSource.resource,
ScheduledOperationsDataSource.time };
- scheduledOperationsGrid.setHeaderSpans(new HeaderSpan(scheduledOperations, allRows2));
+ scheduledOperationsGrid.setHeaderSpans(new HeaderSpan(scheduledOperations, scheduledRows));
scheduledOperationsGrid.setHeaderSpanHeight(new Integer(20));
scheduledOperationsGrid.setHeaderHeight(40);
@@ -92,8 +133,50 @@ public class OperationsPortlet extends LocatableVLayout implements Portlet {
@Override
public void configure(PortletWindow portletWindow, DashboardPortlet storedPortlet) {
- // TODO implement this.
-
+ this.storedPortlet = storedPortlet;
+ //Operation range property - retrieve existing value
+ PropertySimple property = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_COMPLETED);
+ if ((property != null) && (property.getStringValue() != null)) {
+ //retrieve and translate to int
+ String retrieved = property.getStringValue();
+ if (retrieved.equals(unlimited)) {
+ setOperationsRangeCompleted(-1);
+ } else {
+ setOperationsRangeCompleted(Integer.parseInt(retrieved));
+ }
+ } else {//create setting
+ storedPortlet.getConfiguration().put(new PropertySimple(OPERATIONS_RANGE_COMPLETED, defaultValue));
+ setOperationsRangeCompleted(-1);
+ }
+ property = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_SCHEDULED);
+ if ((property != null) && (property.getStringValue() != null)) {
+ //retrieve and translate to int
+ String retrieved = property.getStringValue();
+ if (retrieved.equals(unlimited)) {
+ setOperationsRangeScheduled(-1);
+ } else {
+ setOperationsRangeScheduled(Integer.parseInt(retrieved));
+ }
+ } else {//create setting
+ storedPortlet.getConfiguration().put(new PropertySimple(OPERATIONS_RANGE_SCHEDULED, defaultValue));
+ setOperationsRangeScheduled(-1);
+ }
+ //Checkbox settings property
+ property = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_SCHEDULED_ENABLED);
+ if ((property != null) && (property.getBooleanValue() != null)) {
+ setOperationsRangeScheduleEnabled(property.getBooleanValue().booleanValue());
+ } else {//create setting
+ storedPortlet.getConfiguration()
+ .put(new PropertySimple(OPERATIONS_RANGE_SCHEDULED_ENABLED, defaultEnabled));
+ setOperationsRangeScheduleEnabled(defaultEnabled);
+ }
+ property = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_COMPLETED_ENABLED);
+ if ((property != null) && (property.getBooleanValue() != null)) {
+ setOperationsRangeScheduleEnabled(property.getBooleanValue().booleanValue());
+ } else {//create setting
+ storedPortlet.getConfiguration()
+ .put(new PropertySimple(OPERATIONS_RANGE_COMPLETED_ENABLED, defaultEnabled));
+ }
}
@Override
@@ -101,8 +184,171 @@ public class OperationsPortlet extends LocatableVLayout implements Portlet {
return new HTMLFlow("This portlet displays both operations that have occurred and are scheduled to occur.");
}
+ /** Constructs the dynamic form instance using 1 column and multiple row layouts.
+ */
public DynamicForm getCustomSettingsForm() {
- return null;
+
+ //root dynamic form instance
+ final DynamicForm form = new DynamicForm();
+
+ //vertical layout
+ VStack column = new VStack();
+
+ //label
+ Label operationRange = new Label("Operation Range");
+ column.addMember(operationRange);
+
+ //horizontal layout
+ LocatableHLayout row = new LocatableHLayout("enable.completed.operations");
+
+ //checkbox indicating whether to apply completed operations grouping settings
+ final CheckboxItem enableCompletedOperationsGrouping = new CheckboxItem();
+ enableCompletedOperationsGrouping.setName(OPERATIONS_RANGE_COMPLETED_ENABLED);
+ enableCompletedOperationsGrouping.setTitle(" show Last ");
+ //add change listener
+ enableCompletedOperationsGrouping.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ String selectedItem = "" + event.getValue();
+ //stuff into the master form for retrieval
+ form.setValue(OPERATIONS_RANGE_COMPLETED_ENABLED, selectedItem);
+ }
+ });
+ //retrieve previous value otherwise initialize to true(live unlimited list)
+ PropertySimple retrieved = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_COMPLETED_ENABLED);
+ if (retrieved != null) {
+ enableCompletedOperationsGrouping.setValue(retrieved.getBooleanValue());
+ } else {//default
+ enableCompletedOperationsGrouping.setValue(true);
+ }
+
+ //wrap field item in dynamicform for addition as a field item
+ DynamicForm item = new DynamicForm();
+ item.setFields(enableCompletedOperationsGrouping);
+ row.addMember(item);
+
+ //-------------combobox for number of completed scheduled ops to display on the dashboard
+ final SelectItem maximumCompletedOperationsComboBox = new SelectItem(OPERATIONS_RANGE_COMPLETED);
+ maximumCompletedOperationsComboBox.setTitle("");
+ maximumCompletedOperationsComboBox.setHint("<nobr><b> completed operations.</b></nobr>");
+ //spinder: required to disable editability
+ maximumCompletedOperationsComboBox.setType("selection");
+ //define acceptable values for display amount
+ String[] acceptableDisplayValues = { "1", "5", "10", "15", unlimited };
+ maximumCompletedOperationsComboBox.setValueMap(acceptableDisplayValues);
+ //set width of dropdown display region
+ maximumCompletedOperationsComboBox.setWidth(100);
+ maximumCompletedOperationsComboBox.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ String selectedItem = "" + event.getValue();
+ //stuff into the master form for retrieval
+ form.setValue(OPERATIONS_RANGE_COMPLETED, selectedItem);
+ }
+ });
+
+ //default selected value to 'unlimited'(live lists) and check both combobox settings here.
+ String selectedValue = defaultValue;
+ if (storedPortlet != null) {
+ //if property exists retrieve it
+ if (storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_COMPLETED) != null) {
+ selectedValue = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_COMPLETED).getStringValue();
+ } else {//insert default value
+ storedPortlet.getConfiguration().put(new PropertySimple(OPERATIONS_RANGE_COMPLETED, defaultValue));
+ }
+ }
+ //prepopulate the combobox with the previously stored selection
+ maximumCompletedOperationsComboBox.setDefaultValue(selectedValue);
+ DynamicForm item2 = new DynamicForm();
+ item2.setFields(maximumCompletedOperationsComboBox);
+ row.addMember(item2);
+
+ //horizontal layout
+ LocatableHLayout row2 = new LocatableHLayout("enable.scheduled.operations");
+
+ final CheckboxItem enableScheduledOperationsGrouping = new CheckboxItem();
+ enableScheduledOperationsGrouping.setName(OPERATIONS_RANGE_SCHEDULED_ENABLED);
+ enableScheduledOperationsGrouping.setTitle(" show Next ");
+ enableScheduledOperationsGrouping.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ String selectedItem = "" + event.getValue();
+ //stuff into the master form for retrieval
+ form.setValue(OPERATIONS_RANGE_SCHEDULED_ENABLED, selectedItem);
+ }
+ });
+
+ //wrap field item in dynamicform for addition
+ DynamicForm fieldWrapper = new DynamicForm();
+ fieldWrapper.setFields(enableScheduledOperationsGrouping);
+ row2.addMember(fieldWrapper);
+
+ //retrieve previous value otherwise initialize to true(live unlimited list)
+ retrieved = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_SCHEDULED_ENABLED);
+ if (retrieved != null) {
+ enableScheduledOperationsGrouping.setValue(retrieved.getBooleanValue());
+ } else {
+ enableScheduledOperationsGrouping.setValue(true);
+ }
+
+ //------------- Build second combobox for timeframe for problem resources search.
+ final SelectItem maximumScheduledOperationsComboBox = new SelectItem(OPERATIONS_RANGE_SCHEDULED);
+ maximumScheduledOperationsComboBox.setTitle("");
+ maximumScheduledOperationsComboBox.setHint("<nobr><b> scheduled operations.</b></nobr>");
+ maximumScheduledOperationsComboBox.setType("selection");
+ maximumScheduledOperationsComboBox.setValueMap(acceptableDisplayValues);
+ maximumScheduledOperationsComboBox.setWidth(100);
+ maximumScheduledOperationsComboBox.addChangeHandler(new ChangeHandler() {
+ public void onChange(ChangeEvent event) {
+ String selectedItem = "" + event.getValue();
+ //stuff into the master form for retrieval
+ form.setValue(OPERATIONS_RANGE_SCHEDULED, selectedItem);
+ }
+ });
+
+ //set to default
+ selectedValue = defaultValue;
+ if (storedPortlet != null) {
+ //if property exists retrieve it
+ if (storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_SCHEDULED) != null) {
+ selectedValue = storedPortlet.getConfiguration().getSimple(OPERATIONS_RANGE_SCHEDULED).getStringValue();
+ } else {//insert default value
+ storedPortlet.getConfiguration().put(new PropertySimple(OPERATIONS_RANGE_SCHEDULED, defaultValue));
+ }
+ }
+ //prepopulate the combobox with the previously stored selection
+ maximumScheduledOperationsComboBox.setDefaultValue(selectedValue);
+ DynamicForm fieldWrapper2 = new DynamicForm();
+ fieldWrapper2.setFields(maximumScheduledOperationsComboBox);
+ row2.addMember(fieldWrapper2);
+ column.addMember(row);
+ column.addMember(row2);
+ form.addChild(column);
+
+ //submit handler
+ form.addSubmitValuesHandler(new SubmitValuesHandler() {
+ @Override
+ public void onSubmitValues(SubmitValuesEvent event) {
+ //no need to insert validation here as user not allowed to enter values
+ if (form.getValue(OPERATIONS_RANGE_SCHEDULED) != null) {//if new value supplied
+ storedPortlet.getConfiguration().put(
+ new PropertySimple(OPERATIONS_RANGE_SCHEDULED, form.getValue(OPERATIONS_RANGE_SCHEDULED)));
+ }
+ if (form.getValue(OPERATIONS_RANGE_COMPLETED) != null) {//if new value supplied
+ storedPortlet.getConfiguration().put(
+ new PropertySimple(OPERATIONS_RANGE_COMPLETED, form.getValue(OPERATIONS_RANGE_COMPLETED)));
+ }
+ if (form.getValue(OPERATIONS_RANGE_COMPLETED_ENABLED) != null) {//if new value supplied
+ storedPortlet.getConfiguration().put(
+ new PropertySimple(OPERATIONS_RANGE_COMPLETED_ENABLED, form
+ .getValue(OPERATIONS_RANGE_COMPLETED_ENABLED)));
+ }
+ if (form.getValue(OPERATIONS_RANGE_SCHEDULED_ENABLED) != null) {//if new value supplied
+ storedPortlet.getConfiguration().put(
+ new PropertySimple(OPERATIONS_RANGE_SCHEDULED_ENABLED, form
+ .getValue(OPERATIONS_RANGE_SCHEDULED_ENABLED)));
+ }
+ }
+ });
+
+ return form;
}
public static final class Factory implements PortletViewFactory {
@@ -113,4 +359,69 @@ public class OperationsPortlet extends LocatableVLayout implements Portlet {
}
}
+ public boolean isOperationsRangeCompletedEnabled() {
+ return operationsRangeLastEnabled;
+ }
+
+ public void setOperationsRangeCompleteEnabled(boolean operationsRangeLastEnabled) {
+ this.operationsRangeLastEnabled = operationsRangeLastEnabled;
+ }
+
+ public boolean isOperationsRangeScheduleEnabled() {
+ return operationsRangeNextEnabled;
+ }
+
+ public void setOperationsRangeScheduleEnabled(boolean operationsRangeNextEnabled) {
+ this.operationsRangeNextEnabled = operationsRangeNextEnabled;
+ }
+
+ public int getOperationsRangeScheduled() {
+ return operationsRangeScheduled;
+ }
+
+ public void setOperationsRangeScheduled(int operationsRangeScheduled) {
+ this.operationsRangeScheduled = operationsRangeScheduled;
+ }
+
+ public int getOperationsRangeCompleted() {
+ return operationsRangeCompleted;
+ }
+
+ public void setOperationsRangeCompleted(int operationsRangeCompleted) {
+ this.operationsRangeCompleted = operationsRangeCompleted;
+ }
+
+ /** Custom refresh operation as we cannot directly extend Table because it only
+ * contains one ListGrid while the OperationsPortlet displays two tables.
+ */
+ @Override
+ public void redraw() {
+ super.redraw();
+ //now reload the table data
+ this.recentOperationsGrid.invalidateCache();
+ this.recentOperationsGrid.markForRedraw();
+ this.scheduledOperationsGrid.invalidateCache();
+ this.scheduledOperationsGrid.markForRedraw();
+ }
+
+ public ConfigurationDefinition getConfigurationDefinition() {
+ ConfigurationDefinition definition = new ConfigurationDefinition("OperationsPortlet Configuration",
+ "The configuration settings for the Operations portlet.");
+
+ definition.put(new PropertyDefinitionSimple(OPERATIONS_RANGE_COMPLETED,
+ "Maximum number of Completed operations to display.", true, PropertySimpleType.STRING));
+ definition.put(new PropertyDefinitionSimple(OPERATIONS_RANGE_SCHEDULED,
+ "Maximum number of Scheduled operations to display.", true, PropertySimpleType.STRING));
+ definition
+ .put(new PropertyDefinitionSimple(OPERATIONS_RANGE_COMPLETED_ENABLED,
+ "Whether to enable completed operations results grouping for dashboard.", true,
+ PropertySimpleType.BOOLEAN));
+ definition
+ .put(new PropertyDefinitionSimple(OPERATIONS_RANGE_SCHEDULED_ENABLED,
+ "Whether to enable scheduled operations results grouping for dashboard.", true,
+ PropertySimpleType.BOOLEAN));
+
+ return definition;
+ }
+
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
index f87d80d..57472d3 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
@@ -19,8 +19,6 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.problems
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-import java.util.ArrayList;
-
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
@@ -84,6 +82,7 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
listGrid.setCellHeight(50);
//wrap to display disambiguation
listGrid.setWrapCells(true);
+ // System.out.println("@@@@:"+listGrid.getField(ProblemResourcesDataSource.resource)+":W"+listGrid.getField(ProblemResourcesDataSource.resource).getWidth());
listGrid.getField(ProblemResourcesDataSource.resource).setWidth("40%");
listGrid.getField(ProblemResourcesDataSource.location).setWidth("40%");
listGrid.getField(ProblemResourcesDataSource.alerts).setWidth("10%");
@@ -137,20 +136,14 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
final DynamicForm form = new DynamicForm();
//-------------combobox for number of resource to display on the dashboard
- // final ComboBoxItem maximumProblemResourcesComboBox = new ComboBoxItem(PROBLEM_RESOURCE_SHOW_MAX);
- //TODO: spinder(9/1/10) field is still editable. This looks like a bug.
final SelectItem maximumProblemResourcesComboBox = new SelectItem(PROBLEM_RESOURCE_SHOW_MAX);
maximumProblemResourcesComboBox.setTitle("Show maximum of");
maximumProblemResourcesComboBox.setHint("<nobr><b> problem resources for display on dashboard.</b></nobr>");
- maximumProblemResourcesComboBox.setType("comboBox");
+ //spinder 9/3/10: the following is required workaround to disable editability of combobox.
+ maximumProblemResourcesComboBox.setType("selection");
//define acceptable values for display amount
String[] acceptableDisplayValues = { "5", "10", "15", "20", "30", unlimited };
maximumProblemResourcesComboBox.setValueMap(acceptableDisplayValues);
- //load the acceptable values for validity check later.
- final ArrayList<String> acceptableProblemResourceDisplayValues = new ArrayList<String>();
- for (String value : acceptableDisplayValues) {
- acceptableProblemResourceDisplayValues.add(value);
- }
//set width of dropdown display region
maximumProblemResourcesComboBox.setWidth(100);
@@ -171,14 +164,10 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
final SelectItem maximumTimeProblemResourcesComboBox = new SelectItem(PROBLEM_RESOURCE_SHOW_HRS);
maximumTimeProblemResourcesComboBox.setTitle("For the last ");
maximumTimeProblemResourcesComboBox.setHint("<nobr><b> hours </b></nobr>");
- maximumTimeProblemResourcesComboBox.setType("comboBox");
+ //spinder 9/3/10: the following is required workaround to disable editability of combobox.
+ maximumTimeProblemResourcesComboBox.setType("selection");
//define acceptable values for display amount
String[] acceptableTimeValues = { "1", "4", "8", "24", "48", unlimited };
- //load the acceptable values for validity check later.
- final ArrayList<String> acceptableTimeDisplayValues = new ArrayList<String>();
- for (String value : acceptableTimeValues) {
- acceptableTimeDisplayValues.add(value);
- }
maximumTimeProblemResourcesComboBox.setValueMap(acceptableTimeValues);
maximumTimeProblemResourcesComboBox.setWidth(100);
@@ -202,15 +191,11 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
form.addSubmitValuesHandler(new SubmitValuesHandler() {
@Override
public void onSubmitValues(SubmitValuesEvent event) {
- String maxItems = (String) form.getValue(PROBLEM_RESOURCE_SHOW_MAX);
- String timeFrame = (String) form.getValue(PROBLEM_RESOURCE_SHOW_HRS);
- //TODO: spinder 9/1/10: use smartgwt validation here?
- //shouldn't be necessary, but SelectItem remains editable for odd reason.
- if (acceptableProblemResourceDisplayValues.contains(maxItems.trim())) {
+ if (form.getValue(PROBLEM_RESOURCE_SHOW_MAX) != null) {
storedPortlet.getConfiguration().put(
new PropertySimple(PROBLEM_RESOURCE_SHOW_MAX, form.getValue(PROBLEM_RESOURCE_SHOW_MAX)));
}
- if (acceptableTimeDisplayValues.contains(timeFrame.trim())) {
+ if (form.getValue(PROBLEM_RESOURCE_SHOW_HRS) != null) {
storedPortlet.getConfiguration().put(
new PropertySimple(PROBLEM_RESOURCE_SHOW_HRS, form.getValue(PROBLEM_RESOURCE_SHOW_HRS)));
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
index 87ed4b7..28e6169 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
@@ -13,7 +13,7 @@ public class LocatableListGrid extends ListGrid implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname_locatorId"
+ * ID Format: "scClassname-id"
* </pre>
* @param locatorId not null or empty.
*/
13 years, 9 months
[rhq] 9 commits - modules/enterprise
by Jay Shaughnessy
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java | 32 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/SubjectRoleSelector.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java | 115 +++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java | 74 ++---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java | 18 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java | 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java | 31 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java | 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java | 12
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java | 11
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java | 1
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java | 130 +---------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/Locatable.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableButton.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDialog.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDynamicForm.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHTMLPane.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHeaderControl.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIButton.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIMenuButton.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImg.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLabel.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableMenu.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableSectionStack.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableStretchImgButton.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTab.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java | 8
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTileLayout.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTransferImgButton.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTreeGrid.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java | 6
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWidgetCanvas.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWindow.java | 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java | 7
40 files changed, 217 insertions(+), 337 deletions(-)
New commits:
commit ede3762f4450a72eb47c9359b115ab5342f0d26d
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Sep 8 21:54:59 2010 -0400
keep default ids in place for just a little longer
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java
index 21ef740..e4b60bc 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java
@@ -17,7 +17,7 @@ import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
*/
public class SeleniumUtility {
- private static final boolean USE_DEFAULT_IDS = false;
+ private static final boolean USE_DEFAULT_IDS = true;
/** A default id that is not ecommended as it will clash with any other element set to the default */
public static final String DEFAULT_ID = "DefaultID";
commit 3465dd5d19d96e5be1ff3569beec2b7b30e333e6
Merge: 5fc1c81... e292517...
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Sep 8 17:28:08 2010 -0400
Merge branch 'master' into master-jay
commit 5fc1c81999013914039d01d293a8dfc3eb6827fa
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Sep 8 17:26:23 2010 -0400
A bunch of fixes to Admin/User mgmt.
- Fixes to Administration View setup/left nav/rendering
-- I believe this also fixes the issues with the "sticking" Admin
top menu and default content.
- Users list/new/delete should all be working
- removed password/verify from list view
- removed pop-up window for create in favor of straight master-detail
approach. This should be more consistent across the app, makes better
use of real-estate, and avoids an issue/possible bug with smartgwt
callbacks.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
index e0625a5..6856a55 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java
@@ -257,7 +257,7 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String> {
Canvas canvas;
if (breadcrumbName.equals("Administration")) {
- canvas = new AdministrationView("Administration");
+ canvas = new AdministrationView("Admin");
} else if (breadcrumbName.equals("Demo")) {
canvas = new DemoCanvas();
} else if (breadcrumbName.equals("Inventory")) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
index 709d1cd..7c69fa5 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/AdministrationView.java
@@ -84,14 +84,15 @@ public class AdministrationView extends LocatableHLayout implements Bookmarkable
treeGrids.put("Configuration", buildSystemConfigurationSection());
treeGrids.put("Cluster", buildManagementClusterSection());
treeGrids.put("Reports", buildReportsSection());
- treeGrids.put("Security", buildSecuritySection());
for (final String name : treeGrids.keySet()) {
TreeGrid grid = treeGrids.get(name);
grid.addSelectionChangedHandler(new SelectionChangedHandler() {
public void onSelectionChanged(SelectionEvent selectionEvent) {
- CoreGUI.goTo("Administration/" + name + "/" + selectionEvent.getRecord().getAttribute("name"));
+ if (selectionEvent.getState()) {
+ CoreGUI.goTo("Administration/" + name + "/" + selectionEvent.getRecord().getAttribute("name"));
+ }
}
});
@@ -199,8 +200,11 @@ public class AdministrationView extends LocatableHLayout implements Bookmarkable
public void setContent(Canvas newContent) {
- if (contentCanvas.getChildren().length > 0)
- contentCanvas.getChildren()[0].destroy();
+ if (contentCanvas.getChildren().length > 0) {
+ for (Canvas child : contentCanvas.getChildren()) {
+ child.destroy();
+ }
+ }
contentCanvas.addChild(newContent);
contentCanvas.markForRedraw();
@@ -272,7 +276,14 @@ public class AdministrationView extends LocatableHLayout implements Bookmarkable
}
}
- setContent(content);
+ // ignore clicks on subsection folder nodes
+ if (null != content) {
+ setContent(content);
+
+ if (content instanceof BookmarkableView) {
+ ((BookmarkableView) content).renderView(viewPath.next().next());
+ }
+ }
}
@@ -286,17 +297,12 @@ public class AdministrationView extends LocatableHLayout implements Bookmarkable
} else {
renderContentView(viewPath);
}
- }
-
- // When looking at a detail view, always fire the event down
- if (!viewPath.isEnd()) {
-
- if (currentContent instanceof BookmarkableView) {
- ((BookmarkableView) currentContent).renderView(viewPath.next().next());
+ } else {
+ if (this.currentContent instanceof BookmarkableView) {
+ ((BookmarkableView) this.currentContent).renderView(viewPath.next().next());
}
}
-
}
private static String addQueryStringParam(String url, String param) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java
index 1a36bc7..bd13da7 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java
@@ -21,6 +21,7 @@ package org.rhq.enterprise.gui.coregui.client.admin.users;
import java.util.HashSet;
import java.util.Set;
+import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DSRequest;
@@ -32,7 +33,6 @@ import com.smartgwt.client.types.TitleOrientation;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Label;
-import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.CanvasItem;
import com.smartgwt.client.widgets.form.fields.SectionItem;
@@ -49,11 +49,9 @@ import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ViewId;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
-import org.rhq.enterprise.gui.coregui.client.components.HeaderLabel;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIButton;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -67,7 +65,6 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
// private SubjectRolesEditorItem subjectRolesEditorItem ;
private VLayout editCanvas;
- private HeaderLabel editLabel;
private DynamicForm form;
CanvasItem roleSelectionItem;
@@ -76,7 +73,6 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
private Subject subject;
- private Window editorWindow;
private SubjectRoleSelector roleSelector;
public UserEditView(String locatorId) {
@@ -104,30 +100,12 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
SectionItem userEditSection = new SectionItem("userEditSection", "Edit User");
- // TextItem firstName = new TextItem("firstName", "First Name");
- //
- // TextItem lastName = new TextItem("lastName", "Last Name");
- //
- // TextItem email = new TextItem("email", "Email Address");
- //
- //
- // BooleanItem enabled = new BooleanItem();
- // enabled.setName("enabled");
- // enabled.setTitle("Enabled");
- //
- // TextItem username = new TextItem("username", "Username");
- //
- // TextItem phone = new TextItem("phone", "Phone");
-
- // form.setField//s(userEditSection);
-
form.setUseAllDataSourceFields(true);
form.setDataSource(dataSource);
this.roleSelectionItem = new CanvasItem("selectRoles", "Select Roles");
this.roleSelectionItem.setTitleOrientation(TitleOrientation.TOP);
this.roleSelectionItem.setColSpan(2);
- // roleSelectionItem.setCanvas(new SubjectRoleSelector(null));
TextItem departmentItem = new TextItem("department");
departmentItem.setRequired(false);
@@ -137,10 +115,6 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
public void onClick(com.smartgwt.client.widgets.events.ClickEvent clickEvent) {
if (form.validate()) {
save();
- if (editorWindow != null) {
- editorWindow.destroy();
- CoreGUI.refresh();
- }
}
}
});
@@ -155,15 +129,11 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
IButton cancelButton = new LocatableIButton(this.extendLocatorId("Cancel"), "Cancel");
cancelButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {
public void onClick(com.smartgwt.client.widgets.events.ClickEvent clickEvent) {
- if (editorWindow != null) {
- editorWindow.destroy();
- } else {
- form.reset();
- }
+ History.back();
}
});
- HLayout buttonLayout = new LocatableHLayout(this.extendLocatorId("Buttons"), 10);
+ HLayout buttonLayout = new HLayout(10);
buttonLayout.setAlign(Alignment.CENTER);
buttonLayout.addMember(saveButton);
buttonLayout.addMember(resetButton);
@@ -180,8 +150,10 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
}
- private void save() {
+ public void save() {
final HashSet<Integer> roles = roleSelector.getSelection();
+ // The form.saveData() call triggers UsersDataSource.executeAdd() to create the new Subject. On
+ // successful create we need to perform the role assignment, so set this callback on completion.
form.saveData(new DSCallback() {
public void execute(DSResponse dsResponse, Object o, DSRequest dsRequest) {
@@ -197,11 +169,13 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError("Failed to set subject role assignments.", caught);
+ History.back();
}
public void onSuccess(Void result) {
CoreGUI.getMessageCenter().notify(
new Message("Succesfully saved new user roles.", Message.Severity.Info));
+ History.back();
}
});
@@ -210,9 +184,6 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
}
public void editRecord(Record record) {
-
- // form.getDataSource().getField("username").setCanEdit(true );
-
roleSelector = new SubjectRoleSelector(this.extendLocatorId("Roles"), (Set<Role>) record
.getAttributeAsObject("roles"));
roleSelectionItem.setCanvas(roleSelector);
@@ -239,50 +210,48 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
subject = new Subject();
ListGridRecord r = dataSource.copyValues(subject);
editRecord(r);
- // form.getDataSource().getField("username").setCanEdit(false);
- form.setSaveOperationType(DSOperationType.ADD);
-
- editorWindow = new Window();
- editorWindow.setTitle("Create User");
- editorWindow.setWidth(800);
- editorWindow.setHeight(800);
- editorWindow.setIsModal(true);
- editorWindow.setShowModalMask(true);
- editorWindow.setCanDragResize(true);
- editorWindow.centerInPage();
- editorWindow.addItem(this);
- editorWindow.show();
+ // This tells form.saveData() to call UsersDataSource.executeAdd() on the new Subject's ListGridRecord
+ form.setSaveOperationType(DSOperationType.ADD);
}
public static void editNew(String locatorId) {
UserEditView editView = new UserEditView(locatorId);
editView.editNewInternal();
-
}
private void editSubject(int subjectId, final ViewId current) {
- SubjectCriteria criteria = new SubjectCriteria();
- criteria.fetchRoles(true);
- criteria.fetchConfiguration(true);
+ final int id = Integer.valueOf(current.getBreadcrumbs().get(0).getName());
- GWTServiceLookup.getSubjectService().findSubjectsByCriteria(criteria, new AsyncCallback<PageList<Subject>>() {
- @Override
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failed to load subject for editing", caught);
- }
+ if (id > 0) {
+ SubjectCriteria criteria = new SubjectCriteria();
+ criteria.addFilterId(id);
+ criteria.fetchRoles(true);
+ criteria.fetchConfiguration(true);
- @Override
- public void onSuccess(PageList<Subject> result) {
- Subject subject = result.get(0);
- Record record = new UsersDataSource().copyValues(subject);
- editRecord(record);
+ GWTServiceLookup.getSubjectService().findSubjectsByCriteria(criteria,
+ new AsyncCallback<PageList<Subject>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failed to load subject for editing", caught);
+ }
- current.getBreadcrumbs().get(0).setDisplayName("Editing: " + subject.getName());
- CoreGUI.refreshBreadCrumbTrail();
- }
- });
+ @Override
+ public void onSuccess(PageList<Subject> result) {
+ Subject subject = result.get(0);
+ Record record = new UsersDataSource().copyValues(subject);
+ editRecord(record);
+
+ current.getBreadcrumbs().get(0).setDisplayName("Editing: " + subject.getName());
+ CoreGUI.refreshBreadCrumbTrail();
+ }
+ });
+ } else {
+ editNewInternal();
+ current.getBreadcrumbs().get(0).setDisplayName("New User");
+ CoreGUI.refreshBreadCrumbTrail();
+ }
}
@Override
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java
index 578d2b6..809edec 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersDataSource.java
@@ -18,26 +18,15 @@
*/
package org.rhq.enterprise.gui.coregui.client.admin.users;
-import org.rhq.core.domain.auth.Subject;
-import org.rhq.core.domain.authz.Permission;
-import org.rhq.core.domain.authz.Role;
-import org.rhq.core.domain.criteria.SubjectCriteria;
-import org.rhq.core.domain.resource.group.ResourceGroup;
-import org.rhq.core.domain.util.PageList;
-import org.rhq.enterprise.gui.coregui.client.CoreGUI;
-import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
-import org.rhq.enterprise.gui.coregui.client.gwt.SubjectGWTServiceAsync;
-import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
-import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.DataSourceField;
-import com.smartgwt.client.data.FieldValueExtractor;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.data.fields.DataSourceIntegerField;
import com.smartgwt.client.data.fields.DataSourceTextField;
@@ -48,9 +37,15 @@ import com.smartgwt.client.widgets.form.validator.LengthRangeValidator;
import com.smartgwt.client.widgets.form.validator.MatchesFieldValidator;
import com.smartgwt.client.widgets.grid.ListGridRecord;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
+import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.authz.Role;
+import org.rhq.core.domain.criteria.SubjectCriteria;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.gwt.SubjectGWTServiceAsync;
+import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
* @author Greg Hinkle
@@ -61,7 +56,6 @@ public class UsersDataSource extends RPCDataSource<Subject> {
private SubjectGWTServiceAsync subjectService = GWTServiceLookup.getSubjectService();
-
public static UsersDataSource getInstance() {
if (INSTANCE == null) {
INSTANCE = new UsersDataSource();
@@ -69,9 +63,8 @@ public class UsersDataSource extends RPCDataSource<Subject> {
return INSTANCE;
}
+ public UsersDataSource() {
- public UsersDataSource() {
-
DataSourceField idDataField = new DataSourceIntegerField("id", "ID");
idDataField.setPrimaryKey(true);
idDataField.setCanEdit(false);
@@ -90,7 +83,6 @@ public class UsersDataSource extends RPCDataSource<Subject> {
passwordValdidator.setErrorMessage("Password must be at least six characters");
password.setValidators(passwordValdidator);
-
DataSourceTextField passwordVerify = new DataSourceTextField("passwordVerify", "Verify", 100, false);
passwordVerify.setType(FieldType.PASSWORD);
@@ -99,10 +91,9 @@ public class UsersDataSource extends RPCDataSource<Subject> {
passwordsEqualValidator.setErrorMessage("Passwords do not match");
passwordVerify.setValidators(passwordsEqualValidator);
-
DataSourceTextField emailAddress = new DataSourceTextField("emailAddress", "Email Address", 100, true);
- DataSourceTextField phone = new DataSourceTextField("phoneNumber", "Phone", 15, false);
+ DataSourceTextField phone = new DataSourceTextField("phoneNumber", "Phone", 15, false);
DataSourceTextField department = new DataSourceTextField("department", "Department", 100, false);
@@ -111,11 +102,10 @@ public class UsersDataSource extends RPCDataSource<Subject> {
roles.setName("roles");
roles.setMultiple(true);
-
- setFields(idDataField, usernameField, firstName, lastName, password, passwordVerify, phone, emailAddress, department);
+ setFields(idDataField, usernameField, firstName, lastName, password, passwordVerify, phone, emailAddress,
+ department);
}
-
public void executeFetch(final DSRequest request, final DSResponse response) {
final long start = System.currentTimeMillis();
@@ -141,13 +131,12 @@ public class UsersDataSource extends RPCDataSource<Subject> {
}
response.setData(records);
- response.setTotalRows(result.getTotalSize()); // for paging to work we have to specify size of full result set
+ response.setTotalRows(result.getTotalSize()); // for paging to work we have to specify size of full result set
processResponse(request.getRequestId(), response);
}
});
}
-
@Override
protected void executeAdd(final DSRequest request, final DSResponse response) {
JavaScriptObject data = request.getData();
@@ -160,7 +149,7 @@ public class UsersDataSource extends RPCDataSource<Subject> {
Map<String, String> errors = new HashMap<String, String>();
errors.put("name", "A user with this name already exists.");
response.setErrors(errors);
-// CoreGUI.getErrorHandler().handleError("Failed to create role",caught);
+ // CoreGUI.getErrorHandler().handleError("Failed to create role",caught);
response.setStatus(RPCResponse.STATUS_VALIDATION_ERROR);
processResponse(request.getRequestId(), response);
}
@@ -169,12 +158,14 @@ public class UsersDataSource extends RPCDataSource<Subject> {
String password = rec.getAttribute("password");
subjectService.createPrincipal(newSubject.getName(), password, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Subject created, but failed to create principal",caught);
+ CoreGUI.getErrorHandler()
+ .handleError("Subject created, but failed to create principal", caught);
}
public void onSuccess(Void nothing) {
- CoreGUI.getMessageCenter().notify(new Message("Created User [" + newSubject.getName() + "]", Message.Severity.Info));
- response.setData(new Record[]{copyValues(result)});
+ CoreGUI.getMessageCenter().notify(
+ new Message("Created User [" + newSubject.getName() + "]", Message.Severity.Info));
+ response.setData(new Record[] { copyValues(result) });
processResponse(request.getRequestId(), response);
}
});
@@ -203,16 +194,18 @@ public class UsersDataSource extends RPCDataSource<Subject> {
}
public void onSuccess(Void nothing) {
- CoreGUI.getMessageCenter().notify(new Message("User updated and password changed", Message.Severity.Info));
- response.setData(new Record[]{copyValues(result)});
+ CoreGUI.getMessageCenter().notify(
+ new Message("User updated and password changed", Message.Severity.Info));
+ response.setData(new Record[] { copyValues(result) });
processResponse(request.getRequestId(), response);
}
});
} else {
System.out.println("Subject Updated");
- CoreGUI.getMessageCenter().notify(new Message("User [" + result.getName() + "] updated", Message.Severity.Info));
- response.setData(new Record[]{copyValues(result)});
+ CoreGUI.getMessageCenter().notify(
+ new Message("User [" + result.getName() + "] updated", Message.Severity.Info));
+ response.setData(new Record[] { copyValues(result) });
processResponse(request.getRequestId(), response);
}
}
@@ -225,21 +218,21 @@ public class UsersDataSource extends RPCDataSource<Subject> {
final ListGridRecord rec = new ListGridRecord(data);
final Subject subjectToDelete = copyValues(rec);
- subjectService.deleteSubjects(new int[]{subjectToDelete.getId()}, new AsyncCallback<Void>() {
+ subjectService.deleteSubjects(new int[] { subjectToDelete.getId() }, new AsyncCallback<Void>() {
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError("Failed to delete role", caught);
}
public void onSuccess(Void result) {
- CoreGUI.getMessageCenter().notify(new Message("User [" + subjectToDelete.getName() + "] removed", Message.Severity.Info));
- response.setData(new Record[]{rec});
+ CoreGUI.getMessageCenter().notify(
+ new Message("User [" + subjectToDelete.getName() + "] removed", Message.Severity.Info));
+ response.setData(new Record[] { rec });
processResponse(request.getRequestId(), response);
}
});
}
-
public Subject copyValues(ListGridRecord from) {
Subject to = new Subject();
to.setId(from.getAttributeAsInt("id"));
@@ -272,7 +265,6 @@ public class UsersDataSource extends RPCDataSource<Subject> {
return to;
}
-
private ListGridRecord getEditedRecord(DSRequest request) {
// Retrieving values before edit
JavaScriptObject oldValues = request.getAttributeAsJavaScriptObject("oldValues");
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
index aa0cf64..72e2aa7 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
@@ -19,6 +19,7 @@
package org.rhq.enterprise.gui.coregui.client.admin.users;
import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
@@ -41,31 +42,28 @@ public class UsersView extends TableSection {
@Override
protected void configureTable() {
- getListGrid().getField("id").setWidth(55);
- getListGrid().getField("name").setWidth(100);
+ final ListGrid grid = getListGrid();
+ grid.getField("id").setWidth(20);
+ grid.getField("name").setWidth(100);
+ grid.hideField("password");
+ grid.hideField("passwordVerify");
addTableAction(extendLocatorId("Delete"), "Delete", Table.SelectionEnablement.ANY,
"Are you sure you want to delete # users?", new TableAction() {
public void executeAction(ListGridRecord[] selection) {
- getListGrid().removeSelectedData();
+ grid.removeSelectedData();
}
});
addTableAction(extendLocatorId("New"), "New", new TableAction() {
public void executeAction(ListGridRecord[] selection) {
- createUser();
+ newDetails();
}
});
}
- public void createUser() {
- UserEditView editView = new UserEditView(extendLocatorId("Edit"));
- editView.editNewInternal();
- }
-
public Canvas getDetailsView(int id) {
final UserEditView userEditor = new UserEditView(extendLocatorId("Detail"));
-
return userEditor;
}
}
commit fa6ab36ec6ff7be045d84e99e72860c3a97d40f3
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Sep 8 17:19:16 2010 -0400
Add newDetails() to TableSection. This complements showDetails(id) and
should be called instead of showDetails(0) when wanting an empty form for
creating a new entity.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
index 126c672..7cf7226 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsView.java
@@ -63,7 +63,7 @@ public class ResourceAlertDefinitionsView extends AbstractAlertDefinitionsView {
@Override
protected void newButtonPressed(ListGridRecord[] selection) {
- showDetails(0);
+ newDetails();
}
@Override
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java
index 01a19f3..44746c2 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java
@@ -146,17 +146,35 @@ public abstract class TableSection extends Table implements BookmarkableView {
}
/**
- * Shows the details for an item has the given ID. Note that an empty
- * details view will be shown if the id passed in is 0.
+ * Shows empty details for a new item being created.
+ * This method is usually called when a user clicks a 'New' button.
+ *
+ * @see #showDetails(ListGridRecord)
+ */
+ public void newDetails() {
+ History.newItem(basePath + "/0");
+ }
+
+ /**
+ * Shows the details for an item has the given ID.
* This method is usually called when a user goes to the details
- * page via a bookmark or direct link.
+ * page via a bookmark, double-cick on a list view row, or direct link.
*
- * @param id the id of the row whose details are to be shown; pass in 0 to show empty details
+ * @param id the id of the row whose details are to be shown; Should be a valid id, > 0.
*
* @see #showDetails(ListGridRecord)
+ *
+ * @throws IllegalArgumentException if id <= 0.
*/
public void showDetails(int id) {
- History.newItem(basePath + "/" + id);
+ if (id > 0) {
+ History.newItem(basePath + "/" + id);
+ } else {
+ String msg = "Can not show detail for [" + this.getClass() + "]. Illegal 'id': " + id
+ + " Please report this bug";
+ CoreGUI.getErrorHandler().handleError(msg);
+ throw new IllegalArgumentException(msg);
+ }
}
/**
@@ -232,9 +250,8 @@ public abstract class TableSection extends Table implements BookmarkableView {
detailsHolder.animateHide(AnimationEffect.FADE, new AnimationCallback() {
@Override
public void execute(boolean b) {
- // TODO: Implement this method.
for (Canvas child : detailsHolder.getMembers()) {
- detailsHolder.removeMember(child);
+ child.destroy();
}
contents.animateShow(AnimationEffect.FADE);
commit bfc20948d695463b215f247339cf0c9568a151b9
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Sep 8 17:16:33 2010 -0400
removed 'Preferences' from top menu. Currently this may not be needed at all,
but even if it is it wil likely be integrated into either user mgmt or
possibly even more fine-grained use, like specific to a group config
update.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
index 8e51dd9..dc5503f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/menu/MenuBarView.java
@@ -89,7 +89,6 @@ public class MenuBarView extends VLayout {
// loggedInAs.setValign(VerticalAlignment.CENTER);
// helpLayout.addMember(loggedInAs);
topStrip.addMember(SeleniumUtility.setHtmlId(new Hyperlink("Help", "Help")));
- topStrip.addMember(SeleniumUtility.setHtmlId(new Hyperlink("Preferences", "Preferences")));
topStrip.addMember(SeleniumUtility.setHtmlId(new Hyperlink("Log Out", "LogOut")));
// helpLayout.setLayoutAlign(VerticalAlignment.CENTER);
// topStrip.addMember(helpLayout);
commit 818b8aa88257a97541c8f97f1a167aa7f99c319a
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Wed Sep 8 17:15:00 2010 -0400
Selenium Work - It seems that in certain scenarios a DSCallback can't
locate an element with a '-' in the id attribute. The dash seems to be used
as a delimiter, this may be a bug in smartgwt. Anyway, changing all use of
'-' in locatorIds to '_'.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
index ef0c74d..a8472b8 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/configuration/ConfigurationEditor.java
@@ -455,7 +455,7 @@ public class ConfigurationEditor extends LocatableVLayout {
.getNonGroupedProperties() : definition.getPropertiesInGroup(group.getName())));
Collections.sort(definitions, new PropertyDefinitionComparator());
- DynamicForm form = buildPropertiesForm(locatorId + "-Props", definitions, configuration);
+ DynamicForm form = buildPropertiesForm(locatorId + "_Props", definitions, configuration);
section.addItem(form);
return section;
@@ -493,7 +493,7 @@ public class ConfigurationEditor extends LocatableVLayout {
propertyMap.put(property);
}
}
- addItems(locatorId + "-" + propertyDefinition.getName(), fields, propertyDefinition, property, odd);
+ addItems(locatorId + "_" + propertyDefinition.getName(), fields, propertyDefinition, property, odd);
odd = !odd;
}
@@ -635,7 +635,7 @@ public class ConfigurationEditor extends LocatableVLayout {
editField.addRecordClickHandler(new RecordClickHandler() {
public void onRecordClick(RecordClickEvent recordClickEvent) {
System.out.println("You want to edit: " + recordClickEvent.getRecord());
- displayMapEditor(locatorId + "-MapEdit", summaryTable, recordClickEvent.getRecord(),
+ displayMapEditor(locatorId + "_MapEdit", summaryTable, recordClickEvent.getRecord(),
propertyDefinition, propertyList, (PropertyMap) recordClickEvent.getRecord().getAttributeAsObject(
"_RHQ_PROPERTY"));
}
@@ -684,7 +684,7 @@ public class ConfigurationEditor extends LocatableVLayout {
addRowButton.setIcon(Window.getImgURL("[SKIN]/actions/add.png"));
addRowButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {
public void onClick(ClickEvent clickEvent) {
- displayMapEditor(locatorId + "-MapEdit", summaryTable, null, propertyDefinition, propertyList, null);
+ displayMapEditor(locatorId + "_MapEdit", summaryTable, null, propertyDefinition, propertyList, null);
}
});
@@ -917,7 +917,7 @@ public class ConfigurationEditor extends LocatableVLayout {
LocatableVLayout layout = new LocatableVLayout(locatorId);
layout.setHeight100();
- DynamicForm childForm = buildPropertiesForm(locatorId + "-Child", definitions, finalMap);
+ DynamicForm childForm = buildPropertiesForm(locatorId + "_Child", definitions, finalMap);
childForm.setHeight100();
layout.addMember(childForm);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/Locatable.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/Locatable.java
index 6c0481d..bd9d966 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/Locatable.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/Locatable.java
@@ -5,7 +5,7 @@ public interface Locatable {
/**
* Returns the locatorId. This can be useful for constructing more granular locatorIds. For example, if
* the widget contains sub-widgets. Note, this is the raw locatorId for the widget, to get the fully
- * formed ID, typically ofthe form "simpleClassname-locatorId" Call {@link getID()}.
+ * formed ID, typically ofthe form "simpleClassname_locatorId" Call {@link getID()}.
*
* @return the locatorId
*/
@@ -15,7 +15,7 @@ public interface Locatable {
* Extends this widget's original locatorId with an extension. This can be useful for constructing more
* granular locatorIds. For example, if the widget contains sub-widgets.
* <pre>
- * ID Format: "getLocatorId()-extension"
+ * ID Format: "getLocatorId()_extension"
* </pre>
*
* @param extension not null or empty.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableButton.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableButton.java
index a6dd2ca..5219934 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableButton.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableButton.java
@@ -11,7 +11,7 @@ public class LocatableButton extends Button {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDialog.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDialog.java
index b923b1c..39e4772 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDialog.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDialog.java
@@ -13,7 +13,7 @@ public class LocatableDialog extends Dialog implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null.
*/
@@ -28,6 +28,6 @@ public class LocatableDialog extends Dialog implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDynamicForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDynamicForm.java
index a29789c..1fb565c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDynamicForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableDynamicForm.java
@@ -13,7 +13,7 @@ public class LocatableDynamicForm extends DynamicForm implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -28,7 +28,7 @@ public class LocatableDynamicForm extends DynamicForm implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
index 25f8216..5b3e09e 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
@@ -13,7 +13,7 @@ public class LocatableHLayout extends HLayout implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -24,7 +24,7 @@ public class LocatableHLayout extends HLayout implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
* @param membersMargin
@@ -44,7 +44,7 @@ public class LocatableHLayout extends HLayout implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHTMLPane.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHTMLPane.java
index 653190c..a8e758e 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHTMLPane.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHTMLPane.java
@@ -13,7 +13,7 @@ public class LocatableHTMLPane extends HTMLPane implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -28,7 +28,7 @@ public class LocatableHTMLPane extends HTMLPane implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHeaderControl.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHeaderControl.java
index 83e2443..b30f134 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHeaderControl.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHeaderControl.java
@@ -14,7 +14,7 @@ public class LocatableHeaderControl extends HeaderControl implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
* @param icon
@@ -26,7 +26,7 @@ public class LocatableHeaderControl extends HeaderControl implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
* @param icon
@@ -47,7 +47,7 @@ public class LocatableHeaderControl extends HeaderControl implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIButton.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIButton.java
index 72ce93b..f265697 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIButton.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIButton.java
@@ -11,7 +11,7 @@ public class LocatableIButton extends IButton {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIMenuButton.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIMenuButton.java
index e3b2eae..7734c3b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIMenuButton.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableIMenuButton.java
@@ -14,7 +14,7 @@ public class LocatableIMenuButton extends IMenuButton implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -25,7 +25,7 @@ public class LocatableIMenuButton extends IMenuButton implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -44,6 +44,6 @@ public class LocatableIMenuButton extends IMenuButton implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImg.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImg.java
index 8317ff5..c0dc681 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImg.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableImg.java
@@ -11,7 +11,7 @@ public class LocatableImg extends Img {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null.
* @param img not null or empty.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLabel.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLabel.java
index bd7ab1f..3b06238 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLabel.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLabel.java
@@ -13,7 +13,7 @@ public class LocatableLabel extends Label implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -24,7 +24,7 @@ public class LocatableLabel extends Label implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -43,7 +43,7 @@ public class LocatableLabel extends Label implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
index e14a421..7a2e99b 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableLayout.java
@@ -13,7 +13,7 @@ public class LocatableLayout extends Layout implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -28,7 +28,7 @@ public class LocatableLayout extends Layout implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
index 458a97a..87ed4b7 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableListGrid.java
@@ -13,7 +13,7 @@ public class LocatableListGrid extends ListGrid implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -28,6 +28,6 @@ public class LocatableListGrid extends ListGrid implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableMenu.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableMenu.java
index 424f64d..827ba2a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableMenu.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableMenu.java
@@ -13,7 +13,7 @@ public class LocatableMenu extends Menu implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -32,7 +32,7 @@ public class LocatableMenu extends Menu implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableSectionStack.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableSectionStack.java
index 33e2b9e..62fb4ac 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableSectionStack.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableSectionStack.java
@@ -13,7 +13,7 @@ public class LocatableSectionStack extends SectionStack implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -28,7 +28,7 @@ public class LocatableSectionStack extends SectionStack implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableStretchImgButton.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableStretchImgButton.java
index 6b2b379..ba1435f 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableStretchImgButton.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableStretchImgButton.java
@@ -11,7 +11,7 @@ public class LocatableStretchImgButton extends StretchImgButton {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null.
* @param img not null or empty.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTab.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTab.java
index 9932a65..197a1be 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTab.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTab.java
@@ -31,7 +31,7 @@ public class LocatableTab extends Tab implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -64,7 +64,7 @@ public class LocatableTab extends Tab implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java
index e290758..4ba995c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTabSet.java
@@ -31,7 +31,7 @@ public class LocatableTabSet extends TabSet {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -44,7 +44,7 @@ public class LocatableTabSet extends TabSet {
/**
* Returns the locatorId. This can be useful for constructing more granular locatorIds. For example, if
* the widget contains sub-widgets. Note, this is the raw locatorId for the widget, to get the fully
- * formed ID, typically ofthe form "simpleClassname-locatorId" Call {@link getID()}.
+ * formed ID, typically ofthe form "simpleClassname_locatorId" Call {@link getID()}.
*
* @return the locatorId
*/
@@ -56,7 +56,7 @@ public class LocatableTabSet extends TabSet {
* Extends this widget's original locatorId with an extension. This can be useful for constructing more
* granular locatorIds. For example, if the widget contains sub-widgets.
* <pre>
- * ID Format: "getLocatorId()-extension"
+ * ID Format: "getLocatorId()_extension"
* </pre>
*
* @param extension not null or empty.
@@ -64,7 +64,7 @@ public class LocatableTabSet extends TabSet {
* @return the new, extended locatorId
*/
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTileLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTileLayout.java
index b93bfe8..c6308a3 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTileLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTileLayout.java
@@ -13,7 +13,7 @@ public class LocatableTileLayout extends TileLayout implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -28,7 +28,7 @@ public class LocatableTileLayout extends TileLayout implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
index 7f1dfb7..fa24d45 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableToolStrip.java
@@ -13,7 +13,7 @@ public class LocatableToolStrip extends ToolStrip implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -28,7 +28,7 @@ public class LocatableToolStrip extends ToolStrip implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTransferImgButton.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTransferImgButton.java
index 58d11f7..e255096 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTransferImgButton.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTransferImgButton.java
@@ -21,7 +21,7 @@ public class LocatableTransferImgButton extends TransferImgButton {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null.
* @param img not null or empty.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTreeGrid.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTreeGrid.java
index 39e4afa..c4d6a87 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTreeGrid.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableTreeGrid.java
@@ -13,7 +13,7 @@ public class LocatableTreeGrid extends TreeGrid implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null.
*/
@@ -28,6 +28,6 @@ public class LocatableTreeGrid extends TreeGrid implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
index e396236..0a9b00e 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
@@ -13,7 +13,7 @@ public class LocatableVLayout extends VLayout implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -24,7 +24,7 @@ public class LocatableVLayout extends VLayout implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
* @param membersMargin
@@ -44,7 +44,7 @@ public class LocatableVLayout extends VLayout implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
public void destroyMembers() {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWidgetCanvas.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWidgetCanvas.java
index 66792a2..90324df 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWidgetCanvas.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWidgetCanvas.java
@@ -14,7 +14,7 @@ public class LocatableWidgetCanvas extends WidgetCanvas implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -33,7 +33,7 @@ public class LocatableWidgetCanvas extends WidgetCanvas implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWindow.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWindow.java
index 87c6b22..56f34bd 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWindow.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableWindow.java
@@ -13,7 +13,7 @@ public class LocatableWindow extends Window implements Locatable {
/**
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @param locatorId not null or empty.
*/
@@ -32,7 +32,7 @@ public class LocatableWindow extends Window implements Locatable {
}
public String extendLocatorId(String extension) {
- return this.locatorId + "-" + extension;
+ return this.locatorId + "_" + extension;
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java
index 43678f0..21ef740 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/SeleniumUtility.java
@@ -17,7 +17,7 @@ import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
*/
public class SeleniumUtility {
- private static final boolean USE_DEFAULT_IDS = true;
+ private static final boolean USE_DEFAULT_IDS = false;
/** A default id that is not ecommended as it will clash with any other element set to the default */
public static final String DEFAULT_ID = "DefaultID";
@@ -25,7 +25,7 @@ public class SeleniumUtility {
/**
* A utility for assigning an ID to a smartgwt widget. Any current ID will be overwritten. The algorithm is:
* <pre>
- * ID Format: "simpleClassname-locatorId"
+ * ID Format: "simpleClassname_locatorId"
* </pre>
* @return the updated widget
*/
@@ -34,7 +34,7 @@ public class SeleniumUtility {
return widget;
}
- String unsafeId = getSimpleClassName(widget) + "-" + locatorId;
+ String unsafeId = getSimpleClassName(widget) + "_" + locatorId;
String safeId = SeleniumUtility.getSafeId(unsafeId, DEFAULT_ID);
Canvas canvasWithId = Canvas.getById(safeId);
if (null != canvasWithId) {
@@ -127,6 +127,7 @@ public class SeleniumUtility {
* <pre>
* - removes spaces
* - removes dots
+ * - converts '-' to '_'
* </pre>
* @param unsafeId The desired Id but with potential problems
* @param defaultId
@@ -137,7 +138,7 @@ public class SeleniumUtility {
return defaultId;
}
- String safeId = unsafeId.replace(" ", "").replace(".", "");
+ String safeId = unsafeId.replace(" ", "").replace(".", "").replace("-", "_");
return safeId;
}
commit 3f2b2d7ab890f050e65e90508f95866a29278558
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Sep 3 08:59:37 2010 -0400
Remove use of GWT.create() from some portlets. This uses the no-arg
constructor under the covers. We want to use constructors with explicit
locatorIds.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
index fe33c31..0356212 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/queue/AutodiscoveryPortlet.java
@@ -56,7 +56,6 @@ public class AutodiscoveryPortlet extends ResourceAutodiscoveryView implements P
public static PortletViewFactory INSTANCE = new Factory();
public final Portlet getInstance(String locatorId) {
- //return GWT.create(AutodiscoveryPortlet.class);
return new AutodiscoveryPortlet(locatorId);
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
index 5119bf1..b7eeef9 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/operations/OperationsPortlet.java
@@ -19,7 +19,6 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.operatio
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-import com.google.gwt.core.client.GWT;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.DynamicForm;
@@ -46,12 +45,6 @@ public class OperationsPortlet extends LocatableVLayout implements Portlet {
private static String recentOperations = "Recent Operations";
private static String scheduledOperations = "Scheduled Operations";
- //default no-args constructor for serialization.
- //TODO: spinder 9/2/10 revisit why we need to do this?
- private OperationsPortlet() {
- super("(unitialized)");
- }
-
public OperationsPortlet(String locatorId) {
super(locatorId);
}
@@ -115,14 +108,9 @@ public class OperationsPortlet extends LocatableVLayout implements Portlet {
public static final class Factory implements PortletViewFactory {
public static PortletViewFactory INSTANCE = new Factory();
- public final Portlet getInstance() {
- return GWT.create(OperationsPortlet.class);
- }
-
public final Portlet getInstance(String locatorId) {
return new OperationsPortlet(locatorId);
}
-
}
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
index 9838932..f87d80d 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/problems/ProblemResourcesPortlet.java
@@ -21,7 +21,6 @@ package org.rhq.enterprise.gui.coregui.client.dashboard.portlets.recent.problems
import java.util.ArrayList;
-import com.google.gwt.core.client.GWT;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.HTMLFlow;
@@ -61,10 +60,6 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
public static final String unlimited = "unlimited";
public static final String defaultValue = unlimited;
- private ProblemResourcesPortlet() {
- super("(uninitialized)");
- }
-
public ProblemResourcesPortlet(String locatorId) {
super(locatorId, TITLE, true);
@@ -228,11 +223,7 @@ public class ProblemResourcesPortlet extends Table implements CustomSettingsPort
public static final class Factory implements PortletViewFactory {
public static PortletViewFactory INSTANCE = new Factory();
- public final Portlet getInstance() {
- return GWT.create(ProblemResourcesPortlet.class);
- }
-
- public Portlet getInstance(String locatorId) {
+ public final Portlet getInstance(String locatorId) {
return new ProblemResourcesPortlet(locatorId);
}
}
commit 13344f52f5e36ca340b4f246a3368c25120a66c6
Merge: 6cd1302... 0ba7c59...
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu Sep 2 10:32:47 2010 -0400
Merge branch 'master' into master-jay
commit 6cd13026c279f154b4d38b10674987e5fb57a246
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Thu Sep 2 10:30:58 2010 -0400
Selenium Work - Administration Section work
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/SubjectRoleSelector.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/SubjectRoleSelector.java
index 146303a..2a7db09 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/SubjectRoleSelector.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/SubjectRoleSelector.java
@@ -38,8 +38,8 @@ import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
*/
public class SubjectRoleSelector extends AbstractSelector<Role> {
- public SubjectRoleSelector(String id, Collection<Role> roles) {
- super(id);
+ public SubjectRoleSelector(String locatorId, Collection<Role> roles) {
+ super(locatorId);
if (roles != null) {
ListGridRecord[] data = (new RolesDataSource()).buildRecords(roles);
setAssigned(data);
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java
index 5aefeec..1a36bc7 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UserEditView.java
@@ -52,6 +52,9 @@ import org.rhq.enterprise.gui.coregui.client.ViewPath;
import org.rhq.enterprise.gui.coregui.client.components.HeaderLabel;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableDynamicForm;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableIButton;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
@@ -93,7 +96,7 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
}
private Canvas buildSubjectEditor() {
- form = new DynamicForm();
+ form = new LocatableDynamicForm(this.getLocatorId());
form.setWidth100();
form.setHiliteRequiredFields(true);
@@ -129,7 +132,7 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
TextItem departmentItem = new TextItem("department");
departmentItem.setRequired(false);
- IButton saveButton = new IButton("Save");
+ IButton saveButton = new LocatableIButton(this.extendLocatorId("Save"), "Save");
saveButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {
public void onClick(com.smartgwt.client.widgets.events.ClickEvent clickEvent) {
if (form.validate()) {
@@ -142,14 +145,14 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
}
});
- IButton resetButton = new IButton("Reset");
+ IButton resetButton = new LocatableIButton(this.extendLocatorId("Reset"), "Reset");
resetButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {
public void onClick(com.smartgwt.client.widgets.events.ClickEvent clickEvent) {
form.reset();
}
});
- IButton cancelButton = new IButton("Cancel");
+ IButton cancelButton = new LocatableIButton(this.extendLocatorId("Cancel"), "Cancel");
cancelButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {
public void onClick(com.smartgwt.client.widgets.events.ClickEvent clickEvent) {
if (editorWindow != null) {
@@ -160,7 +163,7 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
}
});
- HLayout buttonLayout = new HLayout(10);
+ HLayout buttonLayout = new LocatableHLayout(this.extendLocatorId("Buttons"), 10);
buttonLayout.setAlign(Alignment.CENTER);
buttonLayout.addMember(saveButton);
buttonLayout.addMember(resetButton);
@@ -210,7 +213,8 @@ public class UserEditView extends LocatableVLayout implements BookmarkableView {
// form.getDataSource().getField("username").setCanEdit(true );
- roleSelector = new SubjectRoleSelector("UserEditor-Roles", (Set<Role>) record.getAttributeAsObject("roles"));
+ roleSelector = new SubjectRoleSelector(this.extendLocatorId("Roles"), (Set<Role>) record
+ .getAttributeAsObject("roles"));
roleSelectionItem.setCanvas(roleSelector);
try {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
index 3d09ed8..9d56dc2 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/ReportTopView.java
@@ -41,18 +41,15 @@ import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ViewId;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
-import org.rhq.enterprise.gui.coregui.client.admin.agent.install.RemoteAgentInstallView;
-import org.rhq.enterprise.gui.coregui.client.admin.roles.RolesView;
-import org.rhq.enterprise.gui.coregui.client.admin.users.UsersView;
import org.rhq.enterprise.gui.coregui.client.alert.AlertsView;
-import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane;
import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.platform.PlatformPortletView;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.configuration.ConfigurationHistoryView;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.OperationHistoryView;
-import org.rhq.enterprise.gui.coregui.client.inventory.resource.discovery.ResourceAutodiscoveryView;
import org.rhq.enterprise.gui.coregui.client.report.measurement.MeasurementOOBView;
import org.rhq.enterprise.gui.coregui.client.report.tag.TaggedView;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableHLayout;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableSectionStack;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableTreeGrid;
/**
* @author Greg Hinkle
@@ -61,6 +58,9 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
public static final String VIEW_PATH = "Reports";
+ private static final String SECTION_INVENTORY = "Inventory";
+ private static final String SECTION_REPORTS = "Reports";
+
private ViewId currentSectionViewId;
private ViewId currentPageViewId;
@@ -85,16 +85,14 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
contentCanvas.setWidth("*");
contentCanvas.setHeight100();
- sectionStack = new SectionStack();
+ sectionStack = new LocatableSectionStack(this.getLocatorId());
sectionStack.setShowResizeBar(true);
sectionStack.setVisibilityMode(VisibilityMode.MULTIPLE);
sectionStack.setWidth(250);
sectionStack.setHeight100();
- treeGrids.put("Inventory", buildInventorySection());
- // treeGrids.put("Configuration", buildSystemConfigurationSection());
- // treeGrids.put("Cluster", buildManagementClusterSection());
- treeGrids.put("Reports", buildReportsSection());
+ treeGrids.put(SECTION_INVENTORY, buildInventorySection());
+ treeGrids.put(SECTION_REPORTS, buildReportsSection());
for (final String name : treeGrids.keySet()) {
TreeGrid grid = treeGrids.get(name);
@@ -128,7 +126,7 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
private TreeGrid buildInventorySection() {
- final TreeGrid inventoryTreeGrid = new TreeGrid();
+ final TreeGrid inventoryTreeGrid = new LocatableTreeGrid(SECTION_INVENTORY);
inventoryTreeGrid.setLeaveScrollbarGap(false);
inventoryTreeGrid.setShowHeader(false);
@@ -154,65 +152,24 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
final TreeNode platforms = new TreeNode("Platforms");
platforms.setIcon("types/Platform_up_16.png");
- tree.setRoot(new TreeNode("inventory", tagCloud, suspectMetrics, recentConfigurationChanges, recentOperations,
- recentAlerts, alertDefinitions, platforms));
+ tree.setRoot(new TreeNode(SECTION_INVENTORY, tagCloud, suspectMetrics, recentConfigurationChanges,
+ recentOperations, recentAlerts, alertDefinitions, platforms));
inventoryTreeGrid.setData(tree);
return inventoryTreeGrid;
}
- private TreeGrid buildManagementClusterSection() {
-
- final TreeGrid mgmtClusterTreeGrid = new TreeGrid();
- mgmtClusterTreeGrid.setLeaveScrollbarGap(false);
- mgmtClusterTreeGrid.setShowHeader(false);
-
- Tree tree = new Tree();
- final TreeNode manageServersNode = new TreeNode("Servers");
- final TreeNode manageAgentsNode = new TreeNode("Agents");
- final TreeNode manageAffinityGroupsNode = new TreeNode("Affinity Groups");
- final TreeNode managePartitionEventsNode = new TreeNode("Partition Events");
-
- tree.setRoot(new TreeNode("clustering", manageServersNode, manageAgentsNode, manageAffinityGroupsNode,
- managePartitionEventsNode));
-
- mgmtClusterTreeGrid.setData(tree);
-
- return mgmtClusterTreeGrid;
- }
-
- private TreeGrid buildSystemConfigurationSection() {
-
- final TreeGrid systemConfigTreeGrid = new TreeGrid();
- systemConfigTreeGrid.setLeaveScrollbarGap(false);
- systemConfigTreeGrid.setShowHeader(false);
-
- Tree tree = new Tree();
- final TreeNode manageSettings = new TreeNode("System Settings");
- final TreeNode manageTemplates = new TreeNode("Templates");
- final TreeNode manageDownloads = new TreeNode("Downloads");
- final TreeNode manageLicense = new TreeNode("License");
- final TreeNode managePlugins = new TreeNode("Plugins");
-
- tree.setRoot(new TreeNode("System Configuration", manageSettings, manageTemplates, manageDownloads,
- manageLicense, managePlugins));
-
- systemConfigTreeGrid.setData(tree);
-
- return systemConfigTreeGrid;
- }
-
private TreeGrid buildReportsSection() {
- final TreeGrid reportsTreeGrid = new TreeGrid();
+ final TreeGrid reportsTreeGrid = new LocatableTreeGrid(SECTION_REPORTS);
reportsTreeGrid.setLeaveScrollbarGap(false);
reportsTreeGrid.setShowHeader(false);
Tree tree = new Tree();
final TreeNode inventorySummaryNode = new TreeNode("Inventory Summary");
- TreeNode reportsNode = new TreeNode("Reports", inventorySummaryNode);
+ TreeNode reportsNode = new TreeNode(SECTION_REPORTS, inventorySummaryNode);
tree.setRoot(reportsNode);
reportsTreeGrid.setData(tree);
@@ -244,7 +201,7 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
page = URL.decode(page);
Canvas content = null;
- if ("Inventory".equals(section)) {
+ if (SECTION_INVENTORY.equals(section)) {
if ("Tag Cloud".equals(page)) {
content = new TaggedView(this.extendLocatorId("TagCloud"));
@@ -262,49 +219,12 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
content = new PlatformPortletView(this.extendLocatorId("Platforms"));
}
- } else if ("Security".equals(section)) {
-
- if ("Manage Users".equals(page)) {
- content = new UsersView(this.extendLocatorId("Users"));
- } else if ("Manage Roles".equals(page)) {
- content = new RolesView(this.extendLocatorId("Roles"));
- } else if ("Auto Discovery Queue".equals(page)) {
- content = new ResourceAutodiscoveryView(this.extendLocatorId("ADQ"));
- } else if ("Remote Agent Install".equals(page)) {
- content = new RemoteAgentInstallView(this.extendLocatorId("RemoteAgentInstall"));
- }
- } else if ("Configuration".equals(section)) {
-
- String url = null;
- if ("System Settings".equals(page)) {
- url = "/admin/config/Config.do?mode=edit";
- } else if ("Templates".equals(page)) {
- url = "/admin/config/EditDefaults.do?mode=monitor&viewMode=all";
- } else if ("Downloads".equals(page)) {
- url = "/rhq/admin/downloads-body.xhtml";
- } else if ("License".equals(page)) {
- url = "/admin/license/LicenseAdmin.do?mode=view";
- } else if ("Plugins".equals(page)) {
- url = "/rhq/admin/plugin/plugin-list.xhtml";
+ } else if (SECTION_REPORTS.equals(section)) {
+ if ("Inventory Summary".equals(page)) {
+ // TODO
+ content = null;
}
- url = addQueryStringParam(url, "nomenu=true");
- content = new FullHTMLPane(url);
-
- } else if ("Cluster".equals(section)) {
- String url = null;
- if ("Servers".equals(page)) {
- url = "/rhq/ha/listServers.xhtml";
- } else if ("Agents".equals(page)) {
- url = "/rhq/ha/listAgents.xhtml";
- } else if ("Affinity Groups".equals(page)) {
- url = "/rhq/ha/listAffinityGroups.xhtml";
- } else if ("Partition Events".equals(page)) {
- url = "/rhq/ha/listPartitionEvents.xhtml";
- }
- url = addQueryStringParam(url, "nomenu=true");
- content = new FullHTMLPane(url);
}
-
for (String name : treeGrids.keySet()) {
TreeGrid treeGrid = treeGrids.get(name);
@@ -318,12 +238,13 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
}
}
- setContent(content);
+ if (null != content) {
+ setContent(content);
- if (content instanceof BookmarkableView) {
- ((BookmarkableView) content).renderView(viewPath.next().next());
+ if (content instanceof BookmarkableView) {
+ ((BookmarkableView) content).renderView(viewPath.next().next());
+ }
}
-
}
public void renderView(ViewPath viewPath) {
@@ -345,9 +266,4 @@ public class ReportTopView extends LocatableHLayout implements BookmarkableView
}
}
-
- private static String addQueryStringParam(String url, String param) {
- char separatorChar = (url.indexOf('?') == -1) ? '?' : '&';
- return url + separatorChar + param;
- }
}
\ No newline at end of file
13 years, 9 months
[rhq] 2 commits - modules/enterprise
by mazz
modules/enterprise/gui/coregui/src/main/java/org/rhq/core/domain/measurement/MeasurementConverterClient.java | 103 ++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java | 10
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java | 109 ++++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ResourceAlertDefinitionsDataSource.java | 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java | 60 +++--
5 files changed, 213 insertions(+), 71 deletions(-)
New commits:
commit e292517b3189ed60c6b38cdab023d6fec7dd9098
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Sep 8 17:01:50 2010 -0400
initial start of the conditions tab for alert def
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
index 201360b..f19d967 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsAlertDefinitionForm.java
@@ -25,6 +25,7 @@ package org.rhq.enterprise.gui.coregui.client.alert.definitions;
import java.util.LinkedHashMap;
+import com.smartgwt.client.widgets.form.fields.CanvasItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
@@ -128,7 +129,14 @@ public class ConditionsAlertDefinitionForm extends LocatableDynamicForm implemen
conditionExpression.setDefaultValue(BooleanExpression.ALL.name());
conditionExpressionStatic = new StaticTextItem("conditionExpressionStatic", "Fire alert when");
- setFields(conditionExpression, conditionExpressionStatic);
+ ConditionsEditor conditionsEditor = new ConditionsEditor(this.extendLocatorId("conditionsEditor"), this);
+
+ CanvasItem canvasItem = new CanvasItem("conditionsEditorCanvasItem");
+ canvasItem.setCanvas(conditionsEditor);
+ canvasItem.setShowTitle(false);
+ canvasItem.setColSpan(2);
+
+ setFields(conditionExpression, conditionExpressionStatic, canvasItem);
formBuilt = true;
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
new file mode 100644
index 0000000..ddc3545
--- /dev/null
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/definitions/ConditionsEditor.java
@@ -0,0 +1,109 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2010 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+package org.rhq.enterprise.gui.coregui.client.alert.definitions;
+
+import com.smartgwt.client.data.DSRequest;
+import com.smartgwt.client.data.DSResponse;
+import com.smartgwt.client.data.fields.DataSourceTextField;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
+import org.rhq.core.domain.alert.AlertCondition;
+import org.rhq.enterprise.gui.coregui.client.alert.AlertFormatUtility;
+import org.rhq.enterprise.gui.coregui.client.components.table.Table;
+import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
+import org.rhq.enterprise.gui.coregui.client.components.table.Table.SelectionEnablement;
+import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
+
+/**
+ * @author John Mazzitelli
+ */
+public class ConditionsEditor extends LocatableVLayout {
+
+ private final ConditionsAlertDefinitionForm form;
+ private Table table;
+
+ public ConditionsEditor(String locatorId, ConditionsAlertDefinitionForm form) {
+ super(locatorId);
+ this.form = form;
+ }
+
+ @Override
+ protected void onInit() {
+ super.onInit();
+
+ table = new Table("conditionsTable");
+ table.setShowHeader(false);
+ table.setDataSource(new ConditionDataSource());
+
+ table.addTableAction(this.extendLocatorId("add"), "Add", SelectionEnablement.ALWAYS, null, new TableAction() {
+ @Override
+ public void executeAction(ListGridRecord[] selection) {
+ // TODO Auto-generated method stub
+ }
+ });
+ table.addTableAction(this.extendLocatorId("delete"), "Delete", SelectionEnablement.ANY, "Are you sure?",
+ new TableAction() {
+ @Override
+ public void executeAction(ListGridRecord[] selection) {
+ // TODO Auto-generated method stub
+ }
+ });
+
+ addMember(table);
+ }
+
+ public void setEditable(boolean editable) {
+ table.setTableActionDisableOverride(!editable);
+ }
+
+ private class ConditionDataSource extends RPCDataSource<AlertCondition> {
+ private static final String FIELD_OBJECT = "obj";
+ private static final String FIELD_CONDITION = "condition";
+
+ public ConditionDataSource() {
+ DataSourceTextField conditionField = new DataSourceTextField(FIELD_CONDITION, "Condition");
+ addField(conditionField);
+ }
+
+ @Override
+ public AlertCondition copyValues(ListGridRecord from) {
+ return (AlertCondition) from.getAttributeAsObject(FIELD_OBJECT);
+ }
+
+ @Override
+ public ListGridRecord copyValues(AlertCondition from) {
+ ListGridRecord record = new ListGridRecord();
+ record.setAttribute(FIELD_CONDITION, AlertFormatUtility.formatAlertConditionForDisplay(from));
+ record.setAttribute(FIELD_OBJECT, from);
+ return record;
+ }
+
+ @Override
+ protected void executeFetch(DSRequest request, DSResponse response) {
+ response.setData(buildRecords(ConditionsEditor.this.form.getAlertDefinition().getConditions()));
+ processResponse(request.getRequestId(), response);
+ }
+ }
+}
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 ac7b789..dc04a1e 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
@@ -97,6 +97,8 @@ public class ResourceAlertDefinitionsDataSource extends AbstractAlertDefinitions
AlertDefinitionCriteria criteria = new AlertDefinitionCriteria();
criteria.fetchGroupAlertDefinition(true);
+ criteria.fetchConditions(true);
+ criteria.fetchAlertNotifications(true);
Criteria requestCriteria = request.getCriteria();
if (requestCriteria != null) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
index 90b448f..d12a864 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
@@ -120,6 +120,7 @@ public class Table extends LocatableHLayout {
;
private List<TableActionInfo> tableActions = new ArrayList<TableActionInfo>();
+ private boolean tableActionDisableOverride = false;
private List<Canvas> extraWidgets = new ArrayList<Canvas>();
public Table(String locatorId) {
@@ -476,29 +477,54 @@ public class Table extends LocatableHLayout {
this.headerIcons.add(headerIcon);
}
+ /**
+ * By default, all table actions have buttons that are enabled or
+ * disabled based on if and how many rows are selected. There are
+ * times when you don't want the user to be able to press table action
+ * buttons regardless of which rows are selected. This method let's
+ * you set this override-disable flag.
+ *
+ * @param disabled if true, all table action buttons will be disabled
+ * if false, table action buttons will be enabled based on their predefined
+ * selection enablement rule.
+ */
+ public void setTableActionDisableOverride(boolean disabled) {
+ this.tableActionDisableOverride = disabled;
+ refreshTableInfo();
+ }
+
+ public boolean getTableActionDisableOverride() {
+ return this.tableActionDisableOverride;
+ }
+
protected void refreshTableInfo() {
if (showFooter) {
int count = this.listGrid.getSelection().length;
for (TableActionInfo tableAction : tableActions) {
boolean enabled;
- switch (tableAction.enablement) {
- case ALWAYS:
- enabled = true;
- break;
- case NEVER:
+ if (!this.tableActionDisableOverride) {
+ switch (tableAction.enablement) {
+ case ALWAYS:
+ enabled = true;
+ break;
+ case NEVER:
+ enabled = false;
+ break;
+ case ANY:
+ enabled = (count >= 1);
+ break;
+ case SINGLE:
+ enabled = (count == 1);
+ break;
+ case MULTIPLE:
+ enabled = (count > 1);
+ break;
+ default:
+ throw new IllegalStateException("Unhandled SelectionEnablement: "
+ + tableAction.enablement.name());
+ }
+ } else {
enabled = false;
- break;
- case ANY:
- enabled = (count >= 1);
- break;
- case SINGLE:
- enabled = (count == 1);
- break;
- case MULTIPLE:
- enabled = (count > 1);
- break;
- default:
- throw new IllegalStateException("Unhandled SelectionEnablement: " + tableAction.enablement.name());
}
tableAction.actionButton.setDisabled(!enabled);
}
commit 116b730cb2cd65086374eccb0d74904abef053cb
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Wed Sep 8 16:59:25 2010 -0400
fix NPE - make sure targetUnits is not null before checking to see if its family is RELATIVE
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/core/domain/measurement/MeasurementConverterClient.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/core/domain/measurement/MeasurementConverterClient.java
index f78b62c..f084ec0 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/core/domain/measurement/MeasurementConverterClient.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/core/domain/measurement/MeasurementConverterClient.java
@@ -1,47 +1,46 @@
- /*
- * RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
- package org.rhq.core.domain.measurement;
-
- import org.rhq.core.domain.measurement.composite.MeasurementNumericValueAndUnits;
- import org.rhq.core.domain.measurement.util.MeasurementConversionException;
-
- import com.google.gwt.i18n.client.NumberFormat;
-
- import java.util.HashSet;
- import java.util.Set;
-
- public class MeasurementConverterClient {
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2008 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2, as
+ * published by the Free Software Foundation, and/or the GNU Lesser
+ * General Public License, version 2.1, also as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License and the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the GNU Lesser General Public License along with this program;
+ * if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.rhq.core.domain.measurement;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import com.google.gwt.i18n.client.NumberFormat;
+
+import org.rhq.core.domain.measurement.composite.MeasurementNumericValueAndUnits;
+import org.rhq.core.domain.measurement.util.MeasurementConversionException;
+
+public class MeasurementConverterClient {
private static final int MAX_PRECISION_DIGITS = 4;
private static final String NULL_OR_NAN_FORMATTED_VALUE = "--no data available--";
-
private static NumberFormat getDefaultNumberFormat() {
NumberFormat nf = NumberFormat.getFormat("0.0");
return nf;
}
- public static Double scale(MeasurementNumericValueAndUnits origin, MeasurementUnits targetUnits)
+ public static Double scale(MeasurementNumericValueAndUnits origin, MeasurementUnits targetUnits)
throws MeasurementConversionException {
MeasurementUnits originUnits = origin.getUnits();
Double originValue = origin.getValue();
@@ -201,7 +200,7 @@
}
public static String format(Double value, MeasurementUnits targetUnits, boolean bestFit,
- Integer minimumFractionDigits, Integer maximumFractionDigits) {
+ Integer minimumFractionDigits, Integer maximumFractionDigits) {
if (value == null || Double.isNaN(value)) {
return NULL_OR_NAN_FORMATTED_VALUE;
}
@@ -213,15 +212,13 @@
}
// apply relative scale at presentation time
- if (MeasurementUnits.Family.RELATIVE == targetUnits.getFamily()) {
+ if (targetUnits != null && MeasurementUnits.Family.RELATIVE == targetUnits.getFamily()) {
value = MeasurementUnits.scaleUp(value, targetUnits);
}
- NumberFormat numberFormat =
- NumberFormat.getFormat(
- getFormat(
- minimumFractionDigits != null ? minimumFractionDigits : 1,
- maximumFractionDigits != null ? maximumFractionDigits : 1));
+ NumberFormat numberFormat = NumberFormat.getFormat(getFormat(
+ minimumFractionDigits != null ? minimumFractionDigits : 1,
+ maximumFractionDigits != null ? maximumFractionDigits : 1));
String formatted = numberFormat.format(value);
@@ -273,7 +270,7 @@
if (MeasurementUnits.Family.RELATIVE == units.getFamily()) {
return new MeasurementNumericValueAndUnits(origin, units);
}
-
+
if (MeasurementUnits.Family.TEMPERATURE == units.getFamily()) {
return new MeasurementNumericValueAndUnits(origin, units);
}
@@ -347,14 +344,14 @@
return currentValueAndUnits;
}
- public static String getFormat(int minDigits, int maxDigits) {
- StringBuilder buf = new StringBuilder("0.");
- for (int i = 0; i < minDigits;i++) {
- buf.append("0");
- }
- for (int i = 0; i < (maxDigits-minDigits);i++) {
- buf.append("#");
- }
- return buf.toString();
- }
+ public static String getFormat(int minDigits, int maxDigits) {
+ StringBuilder buf = new StringBuilder("0.");
+ for (int i = 0; i < minDigits; i++) {
+ buf.append("0");
+ }
+ for (int i = 0; i < (maxDigits - minDigits); i++) {
+ buf.append("#");
+ }
+ return buf.toString();
+ }
}
13 years, 9 months