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@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@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; }
}
rhq-commits@lists.fedorahosted.org