modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
| 31 +----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/ResourceGroupMembershipView.java
| 22 +++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
| 62 +++++++++-
3 files changed, 88 insertions(+), 27 deletions(-)
New commits:
commit 66463f32fc906a0fc5c129cc8379e5b51081ec98
Merge: ba21390... 96b39f2...
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Sun Nov 28 23:13:45 2010 -0500
Merge commit 'origin/master'
Conflicts:
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
diff --cc
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index cff76aa,978e927..94865f8
---
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
@@@ -175,15 -175,18 +173,15 @@@ public class ResourceGroupDetailView ex
"ConnectionSettings", MSG.view_tabs_common_connectionSettings()),
null);
inventoryConnHistory = new
SubTab(inventoryTab.extendLocatorId("ConnectionSettingsHistory"), new ViewName(
"ConnectionSettingsHistory",
MSG.view_tabs_common_connectionSettingsHistory()), null);
- inventoryMembership = new
SubTab(inventoryTab.extendLocatorId("Membership"), new
ViewName("Membership",
- MSG.view_tabs_common_membership()), null); // TODO this will merge with
Members
- inventoryTab.registerSubTabs(this.inventoryMembers, this.inventoryConn,
this.inventoryConnHistory,
- this.inventoryMembership);
+ inventoryTab.registerSubTabs(this.inventoryMembers, this.inventoryConn,
this.inventoryConnHistory);
tabs.add(inventoryTab);
- operationsTab = new
TwoLevelTab(getTabSet().extendLocatorId("Operations"), new
ViewName("Operations", MSG
- .view_tabs_common_operations()),
"/images/icons/Operation_grey_16.png");
- this.opHistory = new SubTab(operationsTab.extendLocatorId("History"),
new ViewName("History", MSG
- .view_tabs_common_history()), null);
- this.opSched = new SubTab(operationsTab.extendLocatorId("Scheduled"),
new ViewName("Scheduled", MSG
- .view_tabs_common_scheduled()), null);
+ operationsTab = new
TwoLevelTab(getTabSet().extendLocatorId("Operations"), new
ViewName("Operations",
+ MSG.view_tabs_common_operations()),
"/images/icons/Operation_grey_16.png");
+ this.opHistory = new SubTab(operationsTab.extendLocatorId("History"),
new ViewName("History",
+ MSG.view_tabs_common_history()), null);
+ this.opSched = new SubTab(operationsTab.extendLocatorId("Scheduled"),
new ViewName("Scheduled",
+ MSG.view_tabs_common_scheduled()), null);
operationsTab.registerSubTabs(this.opHistory, this.opSched);
tabs.add(operationsTab);
@@@ -283,18 -269,22 +264,18 @@@
}
// Inventory tab is always visible and enabled.
- updateSubTab(this.inventoryTab, this.inventoryMembers,
-
ResourceSearchView.getMembersOf(this.inventoryMembers.extendLocatorId("View"),
groupId), true, true);
- updateSubTab(this.inventoryTab, this.inventoryConn,
- new
CurrentGroupPluginConfigurationView(this.inventoryConn.extendLocatorId("View"),
this.groupComposite),
- facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION), true);
+ enabled = !isAutoGroup() &&
globalPermissions.contains(Permission.MANAGE_INVENTORY); // true, then user can modify
group membership
+ updateSubTab(this.inventoryTab, this.inventoryMembers,
ResourceSearchView.getMembersOf(this.inventoryMembers
+ .extendLocatorId("View"), groupId, enabled), true, true);
+ updateSubTab(this.inventoryTab, this.inventoryConn, new
CurrentGroupPluginConfigurationView(this.inventoryConn
+ .extendLocatorId("View"), this.groupComposite),
facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION),
+ true);
updateSubTab(this.inventoryTab, this.inventoryConnHistory, new
HistoryGroupPluginConfigurationView(
- this.inventoryConnHistory.extendLocatorId("View"),
this.groupComposite),
- facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION), true);
- visible = !isAutoGroup();
- enabled = visible &&
globalPermissions.contains(Permission.MANAGE_INVENTORY);
- canvas = (enabled) ? new
ResourceGroupMembershipView(this.inventoryMembership.extendLocatorId("View"),
groupId)
- : null;
- updateSubTab(this.inventoryTab, this.inventoryMembership, canvas, visible,
enabled);
+ this.inventoryConnHistory.extendLocatorId("View"),
this.groupComposite), facets
+ .contains(ResourceTypeFacet.PLUGIN_CONFIGURATION), true);
- if (updateTab(this.operationsTab, groupCategory == GroupCategory.COMPATIBLE
- && facets.contains(ResourceTypeFacet.OPERATION), true)) {
+ if (updateTab(this.operationsTab,
+ groupCategory == GroupCategory.COMPATIBLE &&
facets.contains(ResourceTypeFacet.OPERATION), true)) {
updateSubTab(this.operationsTab, this.opHistory, new
FullHTMLPane(this.opHistory.extendLocatorId("View"),
"/rhq/group/operation/groupOperationHistory-plain.xhtml?groupId=" + groupId),
true, true);
updateSubTab(this.operationsTab, this.opSched, new
FullHTMLPane(this.opSched.extendLocatorId("View"),
commit ba213901bed554ec3ac2d6e81d388eeec6753914
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Sun Nov 28 19:27:55 2010 -0500
compress Members and Membership subtabs into one new Members tab
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 0d7d3ca..cff76aa 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
@@ -53,7 +53,6 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.common.event.EventComposi
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.configuration.GroupResourceConfigurationEditView;
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.inventory.CurrentGroupPluginConfigurationView;
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.inventory.HistoryGroupPluginConfigurationView;
-import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.inventory.ResourceGroupMembershipView;
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.monitoring.schedules.SchedulesView;
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.monitoring.traits.TraitsView;
import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.summary.OverviewView;
@@ -93,7 +92,6 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
private SubTab inventoryMembers;
private SubTab inventoryConn;
private SubTab inventoryConnHistory;
- private SubTab inventoryMembership;
private SubTab opHistory;
private SubTab opSched;
private SubTab alertHistory;
@@ -117,10 +115,10 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
@Override
public void onTabSelected(TwoLevelTabSelectedEvent tabSelectedEvent) {
- // if moving from membership subtab then re-load the detail view as the
membership and
+ // if moving from members subtab then re-load the detail view as the membership
and
// group type may have changed.
if ((null != this.groupId) &&
this.inventoryTab.getName().equals(currentTabName)
- && this.inventoryMembership.getName().equals(currentSubTabName)) {
+ && this.inventoryMembers.getName().equals(currentSubTabName)) {
String tabPath = "/" + tabSelectedEvent.getId() + "/" +
tabSelectedEvent.getSubTabId();
String path = this.getBaseViewPath() + "/" + getSelectedItemId() +
tabPath;
@@ -177,10 +175,7 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
"ConnectionSettings", MSG.view_tabs_common_connectionSettings()),
null);
inventoryConnHistory = new
SubTab(inventoryTab.extendLocatorId("ConnectionSettingsHistory"), new ViewName(
"ConnectionSettingsHistory",
MSG.view_tabs_common_connectionSettingsHistory()), null);
- inventoryMembership = new
SubTab(inventoryTab.extendLocatorId("Membership"), new
ViewName("Membership", MSG
- .view_tabs_common_membership()), null); // TODO this will merge with Members
- inventoryTab.registerSubTabs(this.inventoryMembers, this.inventoryConn,
this.inventoryConnHistory,
- this.inventoryMembership);
+ inventoryTab.registerSubTabs(this.inventoryMembers, this.inventoryConn,
this.inventoryConnHistory);
tabs.add(inventoryTab);
operationsTab = new
TwoLevelTab(getTabSet().extendLocatorId("Operations"), new
ViewName("Operations", MSG
@@ -288,19 +283,15 @@ public class ResourceGroupDetailView extends
AbstractTwoLevelTabSetView<Resource
}
// Inventory tab is always visible and enabled.
+ enabled = !isAutoGroup() &&
globalPermissions.contains(Permission.MANAGE_INVENTORY); // true, then user can modify
group membership
updateSubTab(this.inventoryTab, this.inventoryMembers,
ResourceSearchView.getMembersOf(this.inventoryMembers
- .extendLocatorId("View"), groupId), true, true);
+ .extendLocatorId("View"), groupId, enabled), true, true);
updateSubTab(this.inventoryTab, this.inventoryConn, new
CurrentGroupPluginConfigurationView(this.inventoryConn
.extendLocatorId("View"), this.groupComposite),
facets.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION),
true);
updateSubTab(this.inventoryTab, this.inventoryConnHistory, new
HistoryGroupPluginConfigurationView(
this.inventoryConnHistory.extendLocatorId("View"),
this.groupComposite), facets
.contains(ResourceTypeFacet.PLUGIN_CONFIGURATION), true);
- visible = !isAutoGroup();
- enabled = visible &&
globalPermissions.contains(Permission.MANAGE_INVENTORY);
- canvas = (enabled) ? new
ResourceGroupMembershipView(this.inventoryMembership.extendLocatorId("View"),
groupId)
- : null;
- updateSubTab(this.inventoryTab, this.inventoryMembership, canvas, visible,
enabled);
if (updateTab(this.operationsTab, groupCategory == GroupCategory.COMPATIBLE
&& facets.contains(ResourceTypeFacet.OPERATION), true)) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/ResourceGroupMembershipView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/ResourceGroupMembershipView.java
index a815430..f7fe190 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/ResourceGroupMembershipView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/detail/inventory/ResourceGroupMembershipView.java
@@ -24,7 +24,6 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
-import com.smartgwt.client.widgets.layout.LayoutSpacer;
import com.smartgwt.client.widgets.toolbar.ToolStrip;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
@@ -45,6 +44,7 @@ public class ResourceGroupMembershipView extends LocatableVLayout {
private int resourceGroupId;
private ResourceGroup resourceGroup;
private ResourceGroupResourceSelector selector;
+ private ClickHandler saveButtonHandler;
public ResourceGroupMembershipView(String locatorId, int resourceGroupId) {
super(locatorId);
@@ -52,6 +52,17 @@ public class ResourceGroupMembershipView extends LocatableVLayout {
this.resourceGroupId = resourceGroupId;
}
+ /**
+ * Allows an external component to hook into the save button. The given
+ * handler will be invoked when the save button is pressed. If
<code>null</code>
+ * is given, then no external handler will be called.
+ *
+ * @param saveButtonHandler
+ */
+ public void setSaveButtonHandler(ClickHandler saveButtonHandler) {
+ this.saveButtonHandler = saveButtonHandler;
+ }
+
@Override
protected void onDraw() {
super.onDraw();
@@ -62,13 +73,17 @@ public class ResourceGroupMembershipView extends LocatableVLayout {
public void build() {
ToolStrip toolStrip = new ToolStrip();
toolStrip.setWidth100();
-
- toolStrip.addMember(new LayoutSpacer());
+ toolStrip.setExtraSpace(10);
+ toolStrip.setMembersMargin(5);
+ toolStrip.setLayoutMargin(5);
IButton saveButton = new LocatableIButton(this.extendLocatorId("Save"),
MSG.common_button_save());
saveButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
save();
+ if (ResourceGroupMembershipView.this.saveButtonHandler != null) {
+
ResourceGroupMembershipView.this.saveButtonHandler.onClick(clickEvent);
+ }
}
});
@@ -96,6 +111,7 @@ public class ResourceGroupMembershipView extends LocatableVLayout {
: null, false);
addMember(ResourceGroupMembershipView.this.selector);
+ markForRedraw();
}
});
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
index 52a7f7d..05494e0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
@@ -33,6 +33,11 @@ import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.ListGridFieldType;
+import com.smartgwt.client.types.Overflow;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.events.CloseClickHandler;
+import com.smartgwt.client.widgets.events.CloseClientEvent;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
@@ -44,10 +49,12 @@ import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.components.table.TableActionEnablement;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync;
+import
org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.inventory.ResourceGroupMembershipView;
import org.rhq.enterprise.gui.coregui.client.util.RPCDataSource;
import org.rhq.enterprise.gui.coregui.client.util.TableUtility;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
+import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableWindow;
/**
* @author Greg Hinkle
@@ -58,6 +65,9 @@ public class ResourceSearchView extends Table {
private List<ResourceSelectListener> selectListeners = new
ArrayList<ResourceSelectListener>();
+ // our static factory method will set this to a non-null resource group ID iff the
user can modify that group's membership
+ private Integer groupIdToModify = null;
+
/**
* A list of all Resources in the system.
*/
@@ -162,6 +172,47 @@ public class ResourceSearchView extends Table {
}
});
+ if (this.groupIdToModify != null) {
+ addTableAction(extendLocatorId("Membership"),
MSG.view_tabs_common_membership(), new AbstractTableAction(
+ TableActionEnablement.ALWAYS) {
+ @Override
+ public void executeAction(ListGridRecord[] selection, Object actionValue)
{
+ final LocatableWindow winModal = new
LocatableWindow(extendLocatorId("MembershipWindow"));
+ winModal.setTitle(MSG.view_tabs_common_group_membership());
+ winModal.setOverflow(Overflow.VISIBLE);
+ winModal.setShowMinimizeButton(false);
+ winModal.setIsModal(true);
+ winModal.setShowModalMask(true);
+ winModal.setWidth(700);
+ winModal.setHeight(450);
+ winModal.setAutoCenter(true);
+ winModal.setShowResizer(true);
+ winModal.setCanDragResize(true);
+ winModal.centerInPage();
+ winModal.addCloseClickHandler(new CloseClickHandler() {
+ @Override
+ public void onCloseClick(CloseClientEvent event) {
+ winModal.markForDestroy();
+ }
+ });
+
+ ResourceGroupMembershipView membershipView = new
ResourceGroupMembershipView(
+ ResourceSearchView.this.extendLocatorId("View"),
ResourceSearchView.this.groupIdToModify
+ .intValue());
+
+ membershipView.setSaveButtonHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ winModal.markForDestroy();
+ }
+ });
+
+ winModal.addItem(membershipView);
+ winModal.show();
+ }
+ });
+ }
+
// //load double click handler for this table
// configureDoubleClickHandler();
@@ -184,7 +235,6 @@ public class ResourceSearchView extends Table {
}
});*/
-
}
// /** Defines the double click handler action for ResourceSearch. This means
that on double
@@ -216,9 +266,13 @@ public class ResourceSearchView extends Table {
.view_inventory_resources_title_children());
}
- public static ResourceSearchView getMembersOf(String locatorId, int groupId) {
- return new ResourceSearchView(locatorId, new Criteria("groupId",
String.valueOf(groupId)), MSG
- .view_inventory_resources_title_members());
+ public static ResourceSearchView getMembersOf(String locatorId, int groupId, boolean
canModifyMembership) {
+ ResourceSearchView view = new ResourceSearchView(locatorId, new
Criteria("groupId", String.valueOf(groupId)),
+ MSG.view_inventory_resources_title_members());
+ if (canModifyMembership) {
+ view.groupIdToModify = Integer.valueOf(groupId);
+ }
+ return view;
}
}