modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ClusterKeyFlyweight.java
| 16
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ViewPath.java
| 28 +
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
| 77 +---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/users/UsersView.java
| 80 +---
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
| 3
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentListView.java
| 13
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
| 14
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionListView.java
| 13
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tab/SubTabLayout.java
| 45 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/Table.java
| 176 ++++++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java
| 161 +++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tagging/TagEditorView.java
| 14
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
| 9
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
| 4
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupListView.java
| 13
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/GroupDefinitionListView.java
| 33 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/ResourceSearchView.java
| 28 -
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceDetailView.java
| 149 ++++++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
| 54 +--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTopView.java
| 82 ----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTreeView.java
| 14
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
| 16
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/OperationHistoryView.java
| 106 ++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/detail/OperationDetailsView.java
| 86 ++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBView.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
| 24 +
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/LocatableListGrid.java
| 7
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableVLayout.java
| 2
31 files changed, 790 insertions(+), 496 deletions(-)
New commits:
commit 6221a8a57b21707f7cc06150c80c008655e0e512
Merge: 0e229ad... fdb272c...
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Tue Aug 24 14:11:12 2010 -0400
Merge branch 'master' of
ssh://git.fedorahosted.org/git/rhq/rhq
commit 0e229adec5b3c03daff47b162021303c8caafda6
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Tue Aug 24 13:28:37 2010 -0400
Refactoring of core Table component to not build list grid on construction
Move to explicit table configuration lifecycle
Fix the rest of the list grids that were not extending Table
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
index 7c0f175..f2d47bd 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/admin/roles/RolesView.java
@@ -18,91 +18,51 @@
*/
package org.rhq.enterprise.gui.coregui.client.admin.roles;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
-
-import com.smartgwt.client.types.ListGridFieldType;
-import com.smartgwt.client.types.Overflow;
-import com.smartgwt.client.widgets.Window;
-import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
-import com.smartgwt.client.widgets.grid.events.SelectionEvent;
-import com.smartgwt.client.widgets.layout.VLayout;
+import org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
/**
* @author Greg Hinkle
*/
-public class RolesView extends VLayout implements BookmarkableView {
+public class RolesView extends TableSection implements BookmarkableView {
-
- @Override
- protected void onInit() {
- super.onInit();
-
- setWidth100();
- setHeight100();
-
+ public RolesView() {
+ super("Roles");
final RolesDataSource datasource = RolesDataSource.getInstance();
+ setDataSource(datasource);
+ }
-
- final Table table = new Table("Roles");
- table.setHeight("50%");
- table.setShowResizeBar(true);
- table.setResizeBarTarget("next");
- table.setDataSource(datasource);
-
- ListGridField idField = new ListGridField("id", "Id", 55);
- idField.setType(ListGridFieldType.INTEGER);
-
-
- ListGridField nameField = new ListGridField("name", "Name");
-
- table.getListGrid().setFields(idField, nameField);
-
+ @Override
+ protected void configureTable() {
+ super.configureTable();
- table.addTableAction("Remove",
+ addTableAction("Remove",
Table.SelectionEnablement.ANY,
"Are you sure you want to delete # roles?",
new TableAction() {
public void executeAction(ListGridRecord[] selection) {
- table.getListGrid().removeSelectedData();
+ getListGrid().removeSelectedData();
}
});
- table.addTableAction("Add Role",
+ addTableAction("Add Role",
new TableAction() {
public void executeAction(ListGridRecord[] selection) {
createRole();
}
});
-
- addMember(table);
-
-
- final RoleEditView roleEditor = new RoleEditView();
- roleEditor.setOverflow(Overflow.AUTO);
- addMember(roleEditor);
-
-
- table.getListGrid().addSelectionChangedHandler(new SelectionChangedHandler() {
- public void onSelectionChanged(SelectionEvent selectionEvent) {
- if (selectionEvent.getState()) {
- roleEditor.editRecord(selectionEvent.getRecord());
- } else {
- roleEditor.editNone();
- }
- }
- });
}
-
public void createRole() {
RoleEditView editView = new RoleEditView();
@@ -110,6 +70,13 @@ public class RolesView extends VLayout implements BookmarkableView {
editView.editNew();
}
+ @Override
+ public Canvas getDetailsView(int id) {
+ RoleEditView editor = new RoleEditView();
+
+ return editor;
+ }
+
public void renderView(ViewPath viewPath) {
System.out.println("Display role list");
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 bc070bf..b194c1e 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
@@ -18,99 +18,59 @@
*/
package org.rhq.enterprise.gui.coregui.client.admin.users;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.grid.ListGridRecord;
+
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
-import com.smartgwt.client.types.ListGridFieldType;
-import com.smartgwt.client.widgets.Label;
-import com.smartgwt.client.widgets.Window;
-import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
-import com.smartgwt.client.widgets.grid.events.SelectionEvent;
-import com.smartgwt.client.widgets.layout.SectionStackSection;
-import com.smartgwt.client.widgets.layout.VLayout;
-import com.smartgwt.client.widgets.toolbar.ToolStrip;
-
/**
* @author Greg Hinkle
*/
-public class UsersView extends VLayout {
+public class UsersView extends Table {
public UsersView() {
- super();
- setWidth100();
- setHeight100();
- }
-
- @Override
- protected void onInit() {
- super.onInit();
-
+ super("Users View");
final UsersDataSource datasource = UsersDataSource.getInstance();
- final Table table = new Table("Users");
- table.setHeight("50%");
- table.setShowResizeBar(true);
- table.setDataSource(datasource);
-
-
- ListGridField idField = new ListGridField("id", "Id", 55);
- idField.setType(ListGridFieldType.INTEGER);
-
- ListGridField nameField = new ListGridField("name", "User
Name", 100);
+ setDataSource(datasource);
+ }
- ListGridField emailField = new ListGridField("emailAddress",
"Email Address");
+ @Override
+ protected void configureTable() {
- table.getListGrid().setFields(idField, nameField, emailField);
- ToolStrip toolStrip = new ToolStrip();
- toolStrip.setWidth100();
- toolStrip.setMembersMargin(15);
+ getListGrid().getField("id").setWidth(55);
+ getListGrid().getField("name").setWidth(100);
- table.addTableAction("Remove",
+ addTableAction("Remove",
Table.SelectionEnablement.ANY,
"Are you sure you want to delete # users?",
new TableAction() {
public void executeAction(ListGridRecord[] selection) {
- table.getListGrid().removeSelectedData();
+ getListGrid().removeSelectedData();
}
});
- table.addTableAction("Add User",
+ addTableAction("Add User",
new TableAction() {
public void executeAction(ListGridRecord[] selection) {
createUser();
}
});
+ }
- final UserEditView userEditor = new UserEditView();
-
- final SectionStackSection detailsSection = new
SectionStackSection("Details");
- detailsSection.setItems(new Label("Select a user to edit..."));
- detailsSection.setExpanded(false);
-
- table.getListGrid().addSelectionChangedHandler(new SelectionChangedHandler() {
- public void onSelectionChanged(SelectionEvent selectionEvent) {
- if (selectionEvent.getState()) {
- userEditor.editRecord(selectionEvent.getRecord());
- } else {
- userEditor.editNone();
- }
- }
- });
-
-
- addMember(table);
- addMember(userEditor);
+ public void createUser() {
+ UserEditView.editNew();
}
- public void createUser() {
+ public Canvas getDetailsView(int id) {
+ final UserEditView userEditor = new UserEditView();
- UserEditView.editNew();
+ return userEditor;
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
index 83d3481..cd9c95c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertsView.java
@@ -90,8 +90,7 @@ public class AlertsView extends Table {
@Override
- protected void onInit() {
- super.onInit();
+ protected void configureTable() {
// Add the list table as the top half of the view.
//Criteria criteria = new Criteria(AlertCriteria.);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentListView.java
index 8cd574c..0d2e070 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentListView.java
@@ -25,15 +25,11 @@ package org.rhq.enterprise.gui.coregui.client.bundle.deployment;
import java.util.HashMap;
import com.smartgwt.client.data.Criteria;
-import com.smartgwt.client.widgets.Canvas;
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.layout.VLayout;
-import org.rhq.core.domain.bundle.Bundle;
import org.rhq.core.domain.bundle.BundleDeploymentStatus;
-import org.rhq.core.domain.bundle.BundleVersion;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
/**
@@ -43,15 +39,14 @@ public class BundleDeploymentListView extends Table {
public BundleDeploymentListView(Criteria criteria) {
super("Bundle Deployments", criteria);
+ setDataSource(new BundleDeploymentDataSource());
+ setHeaderIcon("subsystems/bundle/BundleDeployment_24.png");
}
- @Override
- protected void onInit() {
- super.onInit();
- setHeaderIcon("subsystems/bundle/BundleDeployment_24.png");
- setDataSource(new BundleDeploymentDataSource());
+ @Override
+ protected void configureTable() {
getListGrid().getField("id").setWidth("60");
getListGrid().getField("name").setWidth("25%");
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
index 0cd85a4..9883a72 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationListView.java
@@ -47,14 +47,13 @@ public class BundleDestinationListView extends Table {
public BundleDestinationListView(Criteria criteria) {
super("Bundle Destinations", criteria);
setHeaderIcon("subsystems/bundle/BundleDestination_24.png");
+ setDataSource(new BundleDestinationDataSource());
}
- @Override
- protected void onInit() {
- super.onInit();
+ @Override
+ protected void configureTable() {
- setDataSource(new BundleDestinationDataSource());
getListGrid().getField("id").setWidth(45);
getListGrid().getField("name").setWidth("20%");
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
index 8b2726c..b102441 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundlesListView.java
@@ -44,23 +44,21 @@ import
org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
public class BundlesListView extends Table {
public BundlesListView() {
- super("Bundles");
- setWidth100();
- setHeight100();
+ this(null);
}
public BundlesListView(Criteria criteria) {
super("Bundles", criteria);
- }
-
- @Override
- protected void onInit() {
- super.onInit();
setHeaderIcon("subsystems/bundle/Bundle_24.png");
setDataSource(new BundlesWithLatestVersionDataSource());
+ }
+
+ @Override
+ protected void configureTable() {
+
getListGrid().getField("id").setWidth("60");
getListGrid().getField("link").setWidth("25%");
getListGrid().getField("link").setType(ListGridFieldType.LINK);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionListView.java
index 4c83319..04aa55d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionListView.java
@@ -37,22 +37,17 @@ import org.rhq.enterprise.gui.coregui.client.components.table.Table;
public class BundleVersionListView extends Table {
- public BundleVersionListView() {
- }
-
public BundleVersionListView(Criteria criteria) {
super("Bundle Versions", criteria);
setHeaderIcon("subsystems/bundle/BundleVersion_24.png");
+ BundleVersionDataSource bundleVersionsDataSource = new
BundleVersionDataSource();
+ setDataSource(bundleVersionsDataSource);
}
- @Override
- protected void onInit() {
- super.onInit();
- setHeight100();
+ @Override
+ protected void configureTable() {
- BundleVersionDataSource bundleVersionsDataSource = new
BundleVersionDataSource();
- setDataSource(bundleVersionsDataSource);
getListGrid().getField("id").setWidth("60");
getListGrid().getField("name").setWidth("25%");
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 63319d4..d9429f4 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
@@ -162,7 +162,6 @@ public class SubTabLayout extends VLayout {
// // removeMember(currentlyDisplayed);
// }
-
if (canvas != null) {
if (hasMember(canvas)) {
canvas.show();
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 48d218d..22e25f4 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
@@ -156,7 +156,6 @@ public class Table extends LocatableHLayout {
super.onInit();
// Grid
listGrid = new LocatableListGrid(tableTitle);
-
listGrid.setAutoFetchData(autoFetchData);
@@ -180,7 +179,7 @@ public class Table extends LocatableHLayout {
if (dataSource != null) {
listGrid.setDataSource(dataSource);
- }
+ }
contents = new VLayout();
contents.setWidth100();
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 91fb92b..c1d484b 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
@@ -49,9 +49,6 @@ public abstract class TableSection extends Table implements
BookmarkableView {
private String basePath;
- protected TableSection() {
- }
-
protected TableSection(String tableTitle) {
super(tableTitle);
}
@@ -76,10 +73,25 @@ public abstract class TableSection extends Table implements
BookmarkableView {
super(tableTitle, criteria, sortSpecifiers, excludedFieldNames, autoFetchData);
}
+
@Override
protected void onInit() {
super.onInit();
+ detailsHolder = new VLayout();
+ detailsHolder.setWidth100();
+ detailsHolder.setHeight100();
+ detailsHolder.hide();
+
+ addMember(detailsHolder);
+
+ }
+
+
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
getListGrid().addCellDoubleClickHandler(new CellDoubleClickHandler() {
@Override
public void onCellDoubleClick(CellDoubleClickEvent event) {
@@ -90,12 +102,6 @@ public abstract class TableSection extends Table implements
BookmarkableView {
}
});
- detailsHolder = new VLayout();
- detailsHolder.setWidth100();
- detailsHolder.setHeight100();
- detailsHolder.hide();
-
- addMember(detailsHolder);
}
@@ -119,7 +125,7 @@ public abstract class TableSection extends Table implements
BookmarkableView {
if (detailsView instanceof BookmarkableView) {
- ((BookmarkableView)detailsView).renderView(viewPath);
+ ((BookmarkableView) detailsView).renderView(viewPath);
}
@@ -129,25 +135,27 @@ public abstract class TableSection extends Table implements
BookmarkableView {
detailsView.setWidth100();
detailsView.setHeight100();
- detailsHolder.addMember(new BackButton("Back to
List",basePath));
+ detailsHolder.addMember(new BackButton("Back to List",
basePath));
detailsHolder.addMember(detailsView);
detailsHolder.animateShow(AnimationEffect.FADE);
}
});
} else {
- contents.animateShow(AnimationEffect.FADE, new AnimationCallback() {
- @Override
- public void execute(boolean b) {
- if (detailsHolder.isVisible()) {
- detailsHolder.animateHide(AnimationEffect.FADE);
-
- for (Canvas child : detailsHolder.getMembers()) {
- detailsHolder.removeMember(child);
+ if (contents != null) {
+ contents.animateShow(AnimationEffect.FADE, new AnimationCallback() {
+ @Override
+ public void execute(boolean b) {
+ if (detailsHolder != null && detailsHolder.isVisible())
{
+ detailsHolder.animateHide(AnimationEffect.FADE);
+
+ for (Canvas child : detailsHolder.getMembers()) {
+ detailsHolder.removeMember(child);
+ }
}
}
- }
- });
+ });
+ }
}
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
index f92e7a2..2eb5b64 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/inventory/resource/FavoriteResourcesPortlet.java
@@ -60,6 +60,13 @@ public class FavoriteResourcesPortlet extends ResourceSearchView
implements Port
setShowFooter(false);
+
+ }
+
+ @Override
+ protected void configureTable() {
+ super.configureTable();
+
Set<Integer> favoriteIds =
CoreGUI.getUserPreferences().getFavoriteResources();
Integer[] favArray = favoriteIds.toArray(new Integer[favoriteIds.size()]);
@@ -74,6 +81,7 @@ public class FavoriteResourcesPortlet extends ResourceSearchView
implements Port
refresh(criteria);
+
getListGrid().addFieldStateChangedHandler(new FieldStateChangedHandler() {
public void onFieldStateChanged(FieldStateChangedEvent
fieldStateChangedEvent) {
String state = getListGrid().getViewState();
@@ -82,6 +90,7 @@ public class FavoriteResourcesPortlet extends ResourceSearchView
implements Port
portletWindow.save();
}
});
+
}
public void configure(PortletWindow portletWindow, DashboardPortlet storedPortlet) {
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
index bcb0f00..7c737b6 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/AbstractMeasurementScheduleListView.java
@@ -52,9 +52,7 @@ public abstract class AbstractMeasurementScheduleListView extends Table
{
return (AbstractMeasurementScheduleDataSource) super.getDataSource();
}
- @Override
- protected void onInit() {
- super.onInit();
+ protected void configureTable() {
ListGrid listGrid = getListGrid();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupListView.java
index fe986b9..45d6b07 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/ResourceGroupListView.java
@@ -49,24 +49,21 @@ public class ResourceGroupListView extends Table {
public ResourceGroupListView(String title) {
super(title);
- setWidth100();
- setHeight100();
}
public ResourceGroupListView(Criteria criteria, String title) {
super(title, criteria);
- setWidth100();
- setHeight100();
+
+ final ResourceGroupsDataSource datasource =
ResourceGroupsDataSource.getInstance();
+ setDataSource(datasource);
+
}
@Override
- protected void onInit() {
- super.onInit();
+ protected void configureTable() {
// setHeaderIcon("?_24.png");
- final ResourceGroupsDataSource datasource =
ResourceGroupsDataSource.getInstance();
- setDataSource(datasource);
getListGrid().setSelectionType(SelectionStyle.SIMPLE);
//table.getListGrid().setSelectionAppearance(SelectionAppearance.CHECKBOX);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/GroupDefinitionListView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/GroupDefinitionListView.java
index 8656997..5fb98f3 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/GroupDefinitionListView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/groups/definitions/GroupDefinitionListView.java
@@ -24,27 +24,29 @@ import com.smartgwt.client.types.SelectionStyle;
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.layout.VLayout;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
/**
* @author Greg Hinkle
*/
-public class GroupDefinitionListView extends VLayout {
+public class GroupDefinitionListView extends Table {
public GroupDefinitionListView() {
-
- setWidth100();
- setHeight100();
+ super("Group Definitions");
final GroupDefinitionDataSource datasource = new GroupDefinitionDataSource();
+ setDataSource(datasource);
+
+
+ }
- Table table = new Table("Group Definitions");
- table.setDataSource(datasource);
+ @Override
+ protected void configureTable() {
+ super.configureTable();
- table.getListGrid().setSelectionType(SelectionStyle.SIMPLE);
- table.getListGrid().setSelectionAppearance(SelectionAppearance.CHECKBOX);
+ getListGrid().setSelectionType(SelectionStyle.SIMPLE);
+ getListGrid().setSelectionAppearance(SelectionAppearance.CHECKBOX);
ListGridField idField = new ListGridField("id", "Id", 55);
idField.setType(ListGridFieldType.INTEGER);
@@ -55,18 +57,5 @@ public class GroupDefinitionListView extends VLayout {
}
});
- //ListGridField descriptionField = new ListGridField("description",
"Description");
- //// ListGridField typeNameField = new ListGridField("typeName",
"Type", 130);
- //// ListGridField pluginNameField = new
ListGridField("pluginName", "Plugin", 100);
- //// ListGridField categoryField = new ListGridField("category",
"Category", 60);
- ////
- //// ListGridField availabilityField = new
ListGridField("currentAvailability", "Availability", 55);
- //
- // availabilityField.setAlign(Alignment.CENTER);
- // listGrid.setFields(idField, nameField, descriptionField, typeNameField,
pluginNameField, categoryField, availabilityField);
-
- addMember(table);
-
}
-
}
\ No newline at end of file
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 728a50c..35b8d27 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
@@ -86,9 +86,6 @@ public class ResourceSearchView extends Table {
setHeaderIcon("types/Platform_up_24.png");
- setWidth100();
- setHeight100();
-
// DynamicForm searchPanel = new DynamicForm();
// final TextItem searchBox = new TextItem("query", "Search
Resources");
// searchBox.setValue("");
@@ -99,8 +96,14 @@ public class ResourceSearchView extends Table {
// setTitleComponent(searchPanel);
setDataSource(datasource);
+
+ }
+
+
+ @Override
+ protected void configureTable() {
+
getListGrid().setSelectionType(SelectionStyle.SIMPLE);
- // getListGrid().setSelectionAppearance(SelectionAppearance.CHECKBOX);
getListGrid().setResizeFieldsInRealTime(true);
ListGridField idField = new ListGridField("id", "Id", 55);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBView.java
index 0b16677..59cc36f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/report/measurement/MeasurementOOBView.java
@@ -25,7 +25,6 @@ package org.rhq.enterprise.gui.coregui.client.report.measurement;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGridRecord;
-import org.rhq.core.domain.resource.Resource;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
/**
@@ -40,14 +39,14 @@ public class MeasurementOOBView extends Table {
setDataSource(new MeasurementOOBDataSource());
- getListGrid().setAlternateRecordStyles(false);
}
@Override
- protected void onInit() {
- super.onInit();
+ protected void configureTable() {
+
+ getListGrid().setAlternateRecordStyles(false);
getListGrid().getField("resourceName").setCellFormatter(new
CellFormatter() {
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 0be952a..b1f216f 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
@@ -18,7 +18,7 @@ public class LocatableHLayout extends VLayout {
public LocatableHLayout(String id) {
super();
String locatorId = this.getScClassName() + "-" + id;
- setID(SeleniumUtility.getSafeId(locatorId, locatorId));
+// setID(SeleniumUtility.getSafeId(locatorId, locatorId));
}
}
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 74d01ae..4b65fa7 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
@@ -18,7 +18,7 @@ public class LocatableIButton extends IButton {
public LocatableIButton(String title) {
super(title);
String locatorId = this.getScClassName() + "-" + title;
- setID(SeleniumUtility.getSafeId(locatorId, locatorId));
+// setID(SeleniumUtility.getSafeId(locatorId, locatorId));
}
}
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 739aee5..f6ab437 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
@@ -4,20 +4,21 @@ import com.smartgwt.client.widgets.grid.ListGrid;
/**
* Wrapper for com.smartgwt.client.widgets.grid.ListGrid that sets the ID for use with
selenium scLocators.
- *
+ *
* @author Jay Shaughnessy
*/
public class LocatableListGrid extends ListGrid {
- /**
+ /**
* <pre>
* ID Format: "scClassname-id"
* </pre>
+ *
* @param id not null or empty.
*/
public LocatableListGrid(String id) {
super();
String locatorId = this.getScClassName() + "-" + id;
- setID(SeleniumUtility.getSafeId(locatorId, locatorId));
+// setID(SeleniumUtility.getSafeId(locatorId, locatorId));
}
}
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 aa2c7dd..99df69a 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
@@ -18,7 +18,7 @@ public class LocatableVLayout extends VLayout {
public LocatableVLayout(String id) {
super();
String locatorId = this.getScClassName() + "-" + id;
- setID(SeleniumUtility.getSafeId(locatorId, locatorId));
+// setID(SeleniumUtility.getSafeId(locatorId, locatorId));
}
}
commit f91ca0eb479e4e763c4504d63abd2caf47878793
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Mon Aug 23 14:08:07 2010 -0400
fixing merge to new detail rendering strategy
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTopView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTopView.java
index b4f140b..15ee729 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTopView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTopView.java
@@ -18,26 +18,14 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail;
-import java.util.EnumSet;
-
-import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.layout.HLayout;
-import org.rhq.core.domain.criteria.ResourceCriteria;
-import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceType;
-import org.rhq.core.domain.resource.composite.ResourceComposite;
-import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
-import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ViewId;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
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.resource.InventoryView;
-import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
-import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
* @author Greg Hinkle
@@ -46,14 +34,12 @@ public class ResourceTopView extends HLayout implements
BookmarkableView {
private Canvas contentCanvas;
- private ResourceComposite currentResource;
- //private Resource resourcePlatform;
-
private ResourceTreeView treeView;
private ResourceDetailView detailView = new ResourceDetailView();
private ResourceGWTServiceAsync resourceService =
GWTServiceLookup.getResourceService();
+
public ResourceTopView() {
}
@@ -71,72 +57,11 @@ public class ResourceTopView extends HLayout implements
BookmarkableView {
contentCanvas = new Canvas();
addMember(contentCanvas);
- // created above
- // detailView = new ResourceDetailView();
-
- treeView.addResourceSelectListener(detailView);
-
setContent(detailView);
}
- public void setSelectedResource(final int resourceId, final ViewPath view) {
- // Prevent multiple calls in a row for the same resource.
- if (null != this.currentResource && currentResource.getResource().getId()
== resourceId) {
- return;
- }
-
- ResourceCriteria criteria = new ResourceCriteria();
- criteria.addFilterId(resourceId);
- criteria.fetchTags(true);
- //criteria.fetchParentResource(true);
- resourceService.findResourceCompositesByCriteria(criteria, new
AsyncCallback<PageList<ResourceComposite>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getMessageCenter().notify(
- new Message("Resource with id [" + resourceId + "]
does not exist or is not accessible.",
- Message.Severity.Warning));
-
- CoreGUI.goTo(InventoryView.VIEW_PATH);
- }
-
- public void onSuccess(PageList<ResourceComposite> result) {
- if (result.isEmpty()) {
- //noinspection ThrowableInstanceNeverThrown
- onFailure(new Exception("Resource with id [" + resourceId +
"] does not exist."));
- } else {
- final ResourceComposite resourceComposite = result.get(0);
- loadResourceType(resourceComposite, view);
- }
- }
- });
- }
-
- private void loadResourceType(final ResourceComposite resourceComposite, final
ViewPath view) {
- final Resource resource = resourceComposite.getResource();
- ResourceTypeRepository.Cache.getInstance().getResourceTypes(
- resource.getResourceType().getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.content,
ResourceTypeRepository.MetadataType.operations,
- ResourceTypeRepository.MetadataType.events,
- ResourceTypeRepository.MetadataType.resourceConfigurationDefinition),
- new ResourceTypeRepository.TypeLoadedCallback() {
- public void onTypesLoaded(ResourceType type) {
- resource.setResourceType(type);
- completeSetSelectedResource(resourceComposite, view);
- }
- });
- }
- private void completeSetSelectedResource(ResourceComposite resourceComposite,
ViewPath viewPath) {
- // Prevent multiple calls in a row for the same resource. This can happen if
renderView executes
- // in quick succession on the same resource viewpath, because of the (async)
delay between
- // setSelectedResource and this call
- if (null != this.currentResource
- && currentResource.getResource().getId() ==
resourceComposite.getResource().getId()) {
- return;
- }
- this.currentResource = resourceComposite;
- this.detailView.onResourceSelected(resourceComposite);
- }
public void setContent(Canvas newContent) {
if (contentCanvas.getChildren().length > 0)
@@ -145,6 +70,7 @@ public class ResourceTopView extends HLayout implements
BookmarkableView {
contentCanvas.markForRedraw();
}
+
public void renderView(ViewPath viewPath) {
if (viewPath.isEnd()) {
// default detail view
@@ -152,12 +78,8 @@ public class ResourceTopView extends HLayout implements
BookmarkableView {
viewPath.getViewPath().add(new ViewId("Overview"));
}
- Integer resourceId = Integer.parseInt(viewPath.getCurrent().getPath());
- setSelectedResource(resourceId, viewPath);
-
this.treeView.renderView(viewPath);
- viewPath.next();
this.detailView.renderView(viewPath);
}
commit 9f87e338c14f8cd9a63acb537654e58deff4bde0
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Mon Aug 23 13:40:27 2010 -0400
Fix graph popup label leaks on navigation
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
index c1dd21b..76e8e21 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/SmallGraphView.java
@@ -274,9 +274,9 @@ public class SmallGraphView extends VLayout {
hoverLabel.animateShow(AnimationEffect.FADE);
if (hoverLabel.getLeft() > 0 || hoverLabel.getTop() > 0) {
- hoverLabel.animateMove(item.getPageX() + 5, item.getPageY() +
5);
+ hoverLabel.animateMove(item.getPageX() + 10, item.getPageY() -
35);
} else {
- hoverLabel.moveTo(item.getPageX() + 5, item.getPageY() + 5);
+ hoverLabel.moveTo(item.getPageX() + 10, item.getPageY() - 35);
}
hoverLabel.redraw();
@@ -315,6 +315,18 @@ public class SmallGraphView extends VLayout {
}
+ @Override
+ public void destroy() {
+ super.destroy();
+ hoverLabel.destroy();
+ }
+
+ @Override
+ public void hide() {
+ super.hide();
+ hoverLabel.hide();
+ }
+
private String getHover(PlotItem item) {
if (definition != null) {
com.google.gwt.i18n.client.DateTimeFormat df =
DateTimeFormat.getMediumDateTimeFormat();
commit 6f70a8fe1b1a4b47da1280df2f3d59b41d7056ca
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Tue Aug 24 13:48:49 2010 -0400
Fix some changes lost in rebase
Refactoring of core Table component to not build list grid on construction
Move to explicit table configuration lifecycle
Fix the rest of the list grids that were not extending Table
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ViewPath.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ViewPath.java
index e0b7991..445b0b7 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ViewPath.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/ViewPath.java
@@ -54,6 +54,10 @@ public class ViewPath {
return viewPath.get(index);
}
+ public int getCurrentAsInt() {
+ return Integer.parseInt(getCurrent().getPath());
+ }
+
public ViewId getCurrent() {
if (index >= viewPath.size()) {
return null;
@@ -62,6 +66,17 @@ public class ViewPath {
}
}
+ public String getPathToCurrent() {
+ String path = "";
+ for (int i = 0; i < index; i++) {
+ if (i > 0) {
+ path += "/";
+ }
+ path += viewPath.get(i).getPath();
+ }
+ return path;
+ }
+
public ViewId getNext() {
return viewPath.get(index + 1);
}
@@ -94,4 +109,17 @@ public class ViewPath {
public void setRefresh(boolean refresh) {
this.refresh = refresh;
}
+
+ @Override
+ public String toString() {
+ String path = "";
+ for (ViewId view : viewPath) {
+ if (path.length() > 0) {
+ path += "/";
+ }
+ path += view.getPath();
+ }
+ return path;
+ }
}
+
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 afec88d..63319d4 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
@@ -21,7 +21,6 @@ package org.rhq.enterprise.gui.coregui.client.components.tab;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
-import java.util.Map;
import java.util.Set;
import com.google.gwt.event.shared.HandlerManager;
@@ -56,8 +55,8 @@ public class SubTabLayout extends VLayout {
}
@Override
- protected void onDraw() {
- super.onDraw();
+ protected void onInit() {
+ super.onInit();
setWidth100();
setHeight100();
@@ -109,7 +108,7 @@ public class SubTabLayout extends VLayout {
}
});
- subTabButtons.put(title,button);
+ subTabButtons.put(title, button);
buttonBar.addMember(button);
@@ -119,6 +118,13 @@ public class SubTabLayout extends VLayout {
selectTab(currentlySelected);
}
+ @Override
+ protected void onDraw() {
+ super.onDraw();
+
+ selectTab(currentlySelected);
+ }
+
public void enableSubTab(String title) {
disabledSubTabs.remove(title);
if (subTabButtons.containsKey(title)) {
@@ -136,6 +142,13 @@ public class SubTabLayout extends VLayout {
}
public void updateSubTab(String title, Canvas canvas) {
+
+ // Destroy old views so they don't leak
+ Canvas oldCanvas = subtabs.get(title);
+ if (oldCanvas != null) {
+ oldCanvas.destroy();
+ }
+
subtabs.put(title, canvas);
if (isDrawn() && title.equals(currentlySelected)) {
draw(canvas);
@@ -144,10 +157,12 @@ public class SubTabLayout extends VLayout {
}
private void draw(Canvas canvas) {
- if (currentlyDisplayed != null) {
- currentlyDisplayed.hide();
- // removeMember(currentlyDisplayed);
- }
+// if (currentlyDisplayed != null && currentlyDisplayed != canvas
&& currentlyDisplayed.isDrawn()) {
+// currentlyDisplayed.hide();
+// // removeMember(currentlyDisplayed);
+// }
+
+
if (canvas != null) {
if (hasMember(canvas)) {
canvas.show();
@@ -212,4 +227,19 @@ public class SubTabLayout extends VLayout {
currentlyDisplayed);
hm.fireEvent(event);
}
+
+ public Canvas getCurrentCanvas() {
+ return currentlyDisplayed != null ? currentlyDisplayed :
subtabs.get(currentlySelected);
+ }
+
+ /**
+ * Destroy all the currently held views so that they can be replaced with new
versions
+ */
+ public void destroyViews() {
+ for (Canvas subtabCanvas : subtabs.values()) {
+ if (subtabCanvas != null) {
+ subtabCanvas.destroy();
+ }
+ }
+ }
}
\ No newline at end of file
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 8453a8b..48d218d 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
@@ -24,6 +24,7 @@ import java.util.List;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.Autofit;
+import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
@@ -48,7 +49,6 @@ 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;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableListGrid;
-import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
/**
* @author Greg Hinkle
@@ -63,18 +63,25 @@ public class Table extends LocatableHLayout {
private HTMLFlow title;
+ private HLayout titleLayout;
private Canvas titleComponent;
private ListGrid listGrid;
private ToolStrip footer;
private Label tableInfo;
- private String[] excludedFieldNames;
private String headerIcon;
private boolean showHeader = true;
private boolean showFooter = true;
+ private String tableTitle;
+ private Criteria criteria;
+ private SortSpecifier[] sortSpecifiers;
+ private String[] excludedFieldNames;
+ private boolean autoFetchData;
+
+ private RPCDataSource dataSource;
/**
* Specifies how many rows must be selected in order for a {@link TableAction} button
to be enabled.
@@ -107,9 +114,6 @@ public class Table extends LocatableHLayout {
private List<TableActionInfo> tableActions = new
ArrayList<TableActionInfo>();
private List<Canvas> extraWidgets = new ArrayList<Canvas>();
- public Table() {
- this(null, null, null, null, true);
- }
public Table(String tableTitle) {
this(tableTitle, null, null, null, true);
@@ -132,22 +136,30 @@ public class Table extends LocatableHLayout {
}
public Table(String tableTitle, Criteria criteria, SortSpecifier[] sortSpecifiers,
String[] excludedFieldNames,
- boolean autoFetchData) {
+ boolean autoFetchData) {
super(tableTitle);
setWidth100();
setHeight100();
+ setOverflow(Overflow.HIDDEN);
- contents = new VLayout();
- contents.setWidth100();
- contents.setHeight100();
+ this.tableTitle = tableTitle;
+ this.criteria = criteria;
+ this.sortSpecifiers = sortSpecifiers;
+ this.excludedFieldNames = excludedFieldNames;
+ this.autoFetchData = autoFetchData;
+ }
- // Title
- title = new HTMLFlow();
- setTableTitle(tableTitle);
- // Grid
+ @Override
+ protected void onInit() {
+ super.onInit();
+// Grid
listGrid = new LocatableListGrid(tableTitle);
+
+ listGrid.setAutoFetchData(autoFetchData);
+
+
if (criteria != null) {
listGrid.setInitialCriteria(criteria);
}
@@ -156,7 +168,6 @@ public class Table extends LocatableHLayout {
}
listGrid.setWidth100();
listGrid.setHeight100();
- listGrid.setAutoFetchData(autoFetchData);
listGrid.setAutoFitData(Autofit.HORIZONTAL);
listGrid.setAlternateRecordStyles(true);
listGrid.setResizeFieldsInRealTime(false);
@@ -167,20 +178,68 @@ public class Table extends LocatableHLayout {
//listGrid.setRecordCanSelectProperty("foobar");
listGrid.setRecordEditProperty("foobar");
+ if (dataSource != null) {
+ listGrid.setDataSource(dataSource);
+ }
+
+ contents = new VLayout();
+ contents.setWidth100();
+ contents.setHeight100();
+ addMember(contents);
+
+ contents.addMember(listGrid);
+ }
+
+ @Override
+ protected void onDraw() {
+ 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);
+
+ }
+
+
+
+
+ // Add components to the view
+ if (showHeader) {
+ contents.addMember(titleLayout,0);
+ }
+
+ contents.addMember(listGrid);
+
// Footer
footer = new ToolStrip();
footer.setPadding(5);
footer.setWidth100();
footer.setMembersMargin(15);
+ contents.addMember(footer);
- tableInfo = new Label("Total: " + listGrid.getTotalRows());
- this.excludedFieldNames = excludedFieldNames;
- }
+ // The ListGrid has been created and configured
+ // Now give extensions a chance to configure the table
+ configureTable();
+
+
+ tableInfo = new Label("Total: " + listGrid.getTotalRows());
- @Override
- protected void onInit() {
- super.onInit();
// 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
@@ -193,19 +252,9 @@ public class Table extends LocatableHLayout {
tableInfo.setWrap(false);
- }
-
- @Override
- protected void onDraw() {
- super.onDraw();
-
- contents.removeMembers(getMembers());
if (showHeader) {
- HLayout titleLayout = new HLayout();
- titleLayout.setAutoHeight();
- titleLayout.setAlign(VerticalAlignment.BOTTOM);
if (headerIcon != null) {
Img img = new Img(headerIcon, 24, 24);
@@ -220,10 +269,8 @@ public class Table extends LocatableHLayout {
titleLayout.addMember(titleComponent);
}
- contents.addMember(titleLayout);
}
- contents.addMember(listGrid);
if (showFooter) {
footer.removeMembers(footer.getMembers());
@@ -236,7 +283,7 @@ public class Table extends LocatableHLayout {
if (tableAction.confirmMessage != null) {
String message =
tableAction.confirmMessage.replaceAll("\\#", String.valueOf(listGrid
- .getSelection().length));
+ .getSelection().length));
SC.ask(message, new BooleanCallback() {
public void execute(Boolean confirmed) {
@@ -284,15 +331,20 @@ public class Table extends LocatableHLayout {
}
});
- contents.addMember(footer);
}
- addMember(contents);
}
- protected void setListGrid(ListGrid listGrid) {
- this.listGrid = listGrid;
+
+ /**
+ * Overriding components can use this as a chance to configure the list grid after it
has been
+ * created but before it has been drawn to the DOM. This is also the proper place to
add table
+ * actions so that they're rendered in the footer.
+ */
+ protected void configureTable() {
+
}
+
public boolean isShowHeader() {
return showHeader;
}
@@ -343,14 +395,12 @@ public class Table extends LocatableHLayout {
title.markForRedraw();
}
- @SuppressWarnings("unchecked")
- public void setDataSource(RPCDataSource dataSource) {
- listGrid.setDataSource(dataSource);
+ public RPCDataSource getDataSource() {
+ return dataSource;
}
- @SuppressWarnings("unchecked")
- public RPCDataSource getDataSource() {
- return (RPCDataSource) listGrid.getDataSource();
+ public void setDataSource(RPCDataSource dataSource) {
+ this.dataSource = dataSource;
}
public ListGrid getListGrid() {
@@ -366,7 +416,7 @@ public class Table extends LocatableHLayout {
}
public void addTableAction(String title, SelectionEnablement enablement, String
confirmation,
- TableAction tableAction) {
+ TableAction tableAction) {
if (enablement == null) {
enablement = DEFAULT_SELECTION_ENABLEMENT;
}
@@ -393,23 +443,23 @@ public class Table extends LocatableHLayout {
for (TableActionInfo tableAction : tableActions) {
boolean enabled;
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());
+ 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());
}
tableAction.actionButton.setDisabled(!enabled);
}
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 d6a7d8b..cd1c48b 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
@@ -18,16 +18,23 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail;
+import java.util.EnumSet;
import java.util.Set;
import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Side;
+import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.layout.VLayout;
+import com.smartgwt.client.widgets.tab.Tab;
+import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.ResourceTypeFacet;
import org.rhq.core.domain.resource.composite.ResourceComposite;
import org.rhq.core.domain.resource.composite.ResourcePermission;
+import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.ViewPath;
@@ -37,27 +44,32 @@ import
org.rhq.enterprise.gui.coregui.client.components.tab.TwoLevelTab;
import org.rhq.enterprise.gui.coregui.client.components.tab.TwoLevelTabSelectedEvent;
import org.rhq.enterprise.gui.coregui.client.components.tab.TwoLevelTabSelectedHandler;
import org.rhq.enterprise.gui.coregui.client.components.tab.TwoLevelTabSet;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.inventory.resource.InventoryView;
import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSearchView;
-import org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceSelectListener;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.configuration.ConfigurationHistoryView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.configuration.ResourceConfigurationEditView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.inventory.PluginConfigurationEditView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.GraphListView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.schedules.SchedulesView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.traits.TraitsView;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.OperationHistoryView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.DashboardView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.summary.OverviewView;
+import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
+import org.rhq.enterprise.gui.coregui.client.util.message.Message;
/**
* Right panel of the Resource view.
*
* @author Greg Hinkle
*/
-public class ResourceDetailView extends VLayout implements BookmarkableView,
ResourceSelectListener,
- TwoLevelTabSelectedHandler {
+public class ResourceDetailView extends VLayout implements BookmarkableView,
+ TwoLevelTabSelectedHandler {
private static final String DEFAULT_TAB_NAME = "Summary";
+ private int resourceId;
private ResourceComposite resourceComposite;
private TwoLevelTab summaryTab;
@@ -73,6 +85,8 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
private ResourceTitleBar titleBar;
+ private String tabName;
+ private String subTabName;
@Override
protected void onDraw() {
@@ -115,7 +129,7 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
contentTab.registerSubTabs("Deployed", "New",
"Subscriptions", "History");
topTabSet.setTabs(summaryTab, monitoringTab, inventoryTab, operationsTab,
alertsTab, configurationTab,
- eventsTab, contentTab);
+ eventsTab, contentTab);
topTabSet.addTwoLevelTabSelectedHandler(this);
@@ -127,17 +141,24 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
// CoreGUI.addBreadCrumb(getPlace());
}
- public void onResourceSelected(ResourceComposite resourceComposite) {
+ public void updateDetailViews(ResourceComposite resourceComposite) {
this.resourceComposite = resourceComposite;
final Resource resource = this.resourceComposite.getResource();
this.titleBar.setResource(resource);
+ for (Tab top : topTabSet.getTabs()) {
+
+ ((TwoLevelTab)top).getLayout().destroyViews();
+
+ }
+
+
summaryTab.updateSubTab("Overview", new
OverviewView(this.resourceComposite));
summaryTab.updateSubTab("Dashboard", new
DashboardView(this.resourceComposite));
summaryTab.updateSubTab("Timeline", new
FullHTMLPane("/rhq/resource/summary/timeline-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
monitoringTab.updateSubTab("Graphs", new GraphListView(resource)); //
new FullHTMLPane("/rhq/common/monitor/graphs.xhtml?id=" + resource.getId()));
monitoringTab.updateSubTab("Tables", new
FullHTMLPane("/rhq/common/monitor/tables-plain.xhtml?id="
@@ -145,11 +166,11 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
monitoringTab.updateSubTab("Traits", new
TraitsView(resource.getId()));
//new
FullHTMLPane("/rhq/resource/monitor/traits-plain.xhtml?id=" +
resource.getId()));
monitoringTab.updateSubTab("Availability", new FullHTMLPane(
- "/rhq/resource/monitor/availabilityHistory-plain.xhtml?id=" +
resource.getId()));
+ "/rhq/resource/monitor/availabilityHistory-plain.xhtml?id=" +
resource.getId()));
monitoringTab.updateSubTab("Schedules", new
SchedulesView(resource.getId()));
- //new
FullHTMLPane("/rhq/resource/monitor/schedules-plain.xhtml?id=" +
resource.getId()));
+ //new FullHTMLPane("/rhq/resource/monitor/schedules-plain.xhtml?id=" +
resource.getId()));
monitoringTab.updateSubTab("Call Time", new
FullHTMLPane("/rhq/resource/monitor/response-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
inventoryTab.updateSubTab("Children",
ResourceSearchView.getChildrenOf(resource.getId()));
inventoryTab.updateSubTab("Connection Settings", new
PluginConfigurationEditView(resource)); // new ConfigurationEditor(resource.getId(),
resource.getResourceType().getId(), ConfigurationEditor.ConfigType.plugin));
@@ -159,12 +180,12 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
// 2) user can see both operation arguments and results in the history
details pop-up
// 3) operation arguments/results become read-only configuration data in the
history details pop-up
// 4) user can navigate to the group operation that spawned this resource
operation history, if appropriate
- //operationsTab.updateSubTab("History",
OperationHistoryView.getResourceHistoryView(resource));
+ operationsTab.updateSubTab("History",
OperationHistoryView.getResourceHistoryView(resourceComposite));
// note: enabled operation execution/schedules from left-nav, if it doesn't
already exist
- operationsTab.updateSubTab("History", new FullHTMLPane(
- "/rhq/resource/operation/resourceOperationHistory-plain.xhtml?id="
+ resource.getId()));
+// operationsTab.updateSubTab("History", new FullHTMLPane(
+//
"/rhq/resource/operation/resourceOperationHistory-plain.xhtml?id=" +
resource.getId()));
operationsTab.updateSubTab("Scheduled", new FullHTMLPane(
-
"/rhq/resource/operation/resourceOperationSchedules-plain.xhtml?id=" +
resource.getId()));
+
"/rhq/resource/operation/resourceOperationSchedules-plain.xhtml?id=" +
resource.getId()));
configurationTab.updateSubTab("Current", new
ResourceConfigurationEditView(resource));
configurationTab.updateSubTab("History",
ConfigurationHistoryView.getHistoryOf(resource.getId()));
@@ -176,26 +197,26 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
// 4) user can search alert history by: date alert was fired, alert priority,
or alert definition
//alertsTab.updateSubTab("History", new
ResourceAlertHistoryView(resource.getId()));
alertsTab.updateSubTab("History", new
FullHTMLPane("/rhq/resource/alert/listAlertHistory-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
alertsTab.updateSubTab("Definitions", new
ResourceAlertDefinitionsView(resource));
alertsTab.updateSubTab("DELETEME", new
FullHTMLPane("/rhq/resource/alert/listAlertDefinitions-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
// comment out GWT-based view until...
// 1) user can search event history by: metric display range, event source,
event details, event severity
// 2) user can delete events if they possess the appropriate permissions
//eventsTab.updateSubTab("History",
EventHistoryView.createResourceHistoryView(resource.getId()));
eventsTab.updateSubTab("History", new
FullHTMLPane("/rhq/resource/events/history-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
contentTab.updateSubTab("Deployed", new
FullHTMLPane("/rhq/resource/content/view-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
contentTab.updateSubTab("New", new
FullHTMLPane("/rhq/resource/content/deploy-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
contentTab.updateSubTab("Subscriptions", new
FullHTMLPane("/rhq/resource/content/subscription-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
contentTab.updateSubTab("History", new
FullHTMLPane("/rhq/resource/content/history-plain.xhtml?id="
- + resource.getId()));
+ + resource.getId()));
// topTabSet.setSelectedTab(selectedTab);
@@ -249,12 +270,14 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
public void onTabSelected(TwoLevelTabSelectedEvent tabSelectedEvent) {
if (this.resourceComposite == null) {
- History.fireCurrentHistoryState();
+// 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());
+// selectTab(tabSelectedEvent.getId(), tabSelectedEvent.getSubTabId());
+
+
String tabPath = "/" + tabSelectedEvent.getId() + "/" +
tabSelectedEvent.getSubTabId();
- String path = "Resource/" +
this.resourceComposite.getResource().getId() + tabPath;
+ 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);
@@ -264,13 +287,79 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
public void renderView(ViewPath viewPath) {
// e.g. #Resource/10010/Inventory/Overview
- String tabName = (!viewPath.isEnd()) ? viewPath.getCurrent().getPath() : null; //
e.g. "Inventory"
- String subTabName = (viewPath.viewsLeft() >= 1) ? viewPath.getNext().getPath()
: null; // e.g. "Overview"
- selectTab(tabName, subTabName);
+ // ^ Current Path
+ int resourceId = Integer.parseInt(viewPath.getCurrent().getPath());
+
+
+ viewPath.next();
+
+
+ tabName = (!viewPath.isEnd()) ? viewPath.getCurrent().getPath() : null; // e.g.
"Inventory"
+ subTabName = (viewPath.viewsLeft() >= 1) ? viewPath.getNext().getPath() :
null; // e.g. "Overview"
+
+ viewPath.next();
+ viewPath.next();
+
+ if (this.resourceId != resourceId) {
+ // A different resource or first load, go get data
+ loadSelectedResource(resourceId, viewPath);
+ } else {
+ // same resource just switch tabs
+ selectTab(tabName, subTabName, viewPath);
+ }
+
+ }
+
+
+ public void loadSelectedResource(final int resourceId, final ViewPath viewPath) {
+ this.resourceId = resourceId;
+
+ ResourceCriteria criteria = new ResourceCriteria();
+ criteria.addFilterId(resourceId);
+ criteria.fetchTags(true);
+ //criteria.fetchParentResource(true);
+ GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria,
+ new AsyncCallback<PageList<ResourceComposite>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getMessageCenter().notify(new Message("Resource with
id [" + resourceId +
+ "] does not exist or is not accessible.",
Message.Severity.Warning));
+
+ CoreGUI.goTo(InventoryView.VIEW_PATH);
+ }
+
+ public void onSuccess(PageList<ResourceComposite> result) {
+ if (result.isEmpty()) {
+ //noinspection ThrowableInstanceNeverThrown
+ onFailure(new Exception("Resource with id [" +
resourceId + "] does not exist."));
+ } else {
+ final ResourceComposite resourceComposite = result.get(0);
+ loadResourceType(resourceComposite, viewPath);
+ }
+ }
+ });
+ }
+
+
+ private void loadResourceType(final ResourceComposite resourceComposite, final
ViewPath viewPath) {
+ final Resource resource = resourceComposite.getResource();
+ ResourceTypeRepository.Cache.getInstance().getResourceTypes(
+ resource.getResourceType().getId(),
+ EnumSet.of(ResourceTypeRepository.MetadataType.content,
ResourceTypeRepository.MetadataType.operations,
+ ResourceTypeRepository.MetadataType.events,
+
ResourceTypeRepository.MetadataType.resourceConfigurationDefinition),
+ new ResourceTypeRepository.TypeLoadedCallback() {
+ public void onTypesLoaded(ResourceType type) {
+ resourceComposite.getResource().setResourceType(type);
+ ResourceDetailView.this.resourceComposite = resourceComposite;
+ updateDetailViews(resourceComposite);
+ selectTab(tabName, subTabName, viewPath);
+
+ }
+ });
}
- public void selectTab(String tabName, String subtabName) {
+ public void selectTab(String tabName, String subtabName, ViewPath viewPath) {
if (tabName == null) {
tabName = DEFAULT_TAB_NAME;
}
@@ -286,8 +375,12 @@ public class ResourceDetailView extends VLayout implements
BookmarkableView, Res
CoreGUI.getErrorHandler().handleError("Invalid subtab name: " +
subtabName);
// TODO: Should we fire a history event here to redirect to a valid
bookmark?
return;
+ } else {
+ Canvas subView = tab.getLayout().getCurrentCanvas();
+ if (subView instanceof BookmarkableView) {
+ ((BookmarkableView) subView).renderView(viewPath);
+ }
}
- tab.getLayout().selectTab(subtabName);
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
index 7d0c499..2d75b2b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/ResourceTitleBar.java
@@ -18,7 +18,17 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.resource.detail;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.HTMLFlow;
+import com.smartgwt.client.widgets.Img;
+import com.smartgwt.client.widgets.events.ClickEvent;
+import com.smartgwt.client.widgets.events.ClickHandler;
+import com.smartgwt.client.widgets.layout.HLayout;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.criteria.ResourceCriteria;
@@ -32,17 +42,6 @@ import
org.rhq.enterprise.gui.coregui.client.components.tagging.TagsChangedCallb
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.HTMLFlow;
-import com.smartgwt.client.widgets.Img;
-import com.smartgwt.client.widgets.events.ClickEvent;
-import com.smartgwt.client.widgets.events.ClickHandler;
-import com.smartgwt.client.widgets.layout.HLayout;
-
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
/**
* @author Greg Hinkle
* @author Ian Springer
@@ -120,7 +119,7 @@ public class ResourceTitleBar extends HLayout {
criteria.fetchTags(true);
GWTServiceLookup.getResourceService().findResourcesByCriteria(criteria, new
AsyncCallback<PageList<Resource>>() {
public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Could not load resource
tags",caught);
+ CoreGUI.getErrorHandler().handleError("Could not load resource
tags", caught);
}
public void onSuccess(PageList<Resource> result) {
@@ -132,28 +131,29 @@ public class ResourceTitleBar extends HLayout {
}
-
public void setResource(Resource resource) {
- this.resource = resource;
- update();
+ if (this.resource == null || this.resource.getId() != resource.getId()) {
+ this.resource = resource;
+ update();
- this.title.setContents("<span class=\"SectionHeader\">"
+ resource.getName() + "</span> <span
class=\"subtitle\">" + resource.getResourceType().getName() +
"</span>");
+ this.title.setContents("<span
class=\"SectionHeader\">" + resource.getName() +
"</span> <span class=\"subtitle\">" +
resource.getResourceType().getName() + "</span>");
- Set<Integer> favorites =
CoreGUI.getUserPreferences().getFavoriteResources();
- this.favorite = favorites.contains(resource.getId());
- updateFavoriteButton();
+ Set<Integer> favorites =
CoreGUI.getUserPreferences().getFavoriteResources();
+ this.favorite = favorites.contains(resource.getId());
+ updateFavoriteButton();
- this.availabilityImage.setSrc("resources/availability_" +
- (resource.getCurrentAvailability().getAvailabilityType() ==
AvailabilityType.UP ? "green" : "red") +
- "_24.png");
+ this.availabilityImage.setSrc("resources/availability_" +
+ (resource.getCurrentAvailability().getAvailabilityType() ==
AvailabilityType.UP ? "green" : "red") +
+ "_24.png");
- String category =
this.resource.getResourceType().getCategory().getDisplayName();
+ String category =
this.resource.getResourceType().getCategory().getDisplayName();
- String avail = (resource.getCurrentAvailability() != null &&
resource.getCurrentAvailability().getAvailabilityType() != null)
- ?
(resource.getCurrentAvailability().getAvailabilityType().name().toLowerCase()) :
"down";
- badge.setSrc("types/" + category + "_" + avail +
"_24.png");
+ String avail = (resource.getCurrentAvailability() != null &&
resource.getCurrentAvailability().getAvailabilityType() != null)
+ ?
(resource.getCurrentAvailability().getAvailabilityType().name().toLowerCase()) :
"down";
+ badge.setSrc("types/" + category + "_" + avail +
"_24.png");
- markForRedraw();
+ markForRedraw();
+ }
}
private void updateFavoriteButton() {
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 f01e0e6..b4ae24c 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
@@ -4,17 +4,21 @@
* 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.
+ * 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 for more details.
+ * 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
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * 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.inventory.resource.detail;
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/OperationHistoryView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/OperationHistoryView.java
index b537f5d..b26407d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/OperationHistoryView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/OperationHistoryView.java
@@ -20,31 +20,25 @@ package
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operatio
import java.util.EnumSet;
-import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.grid.CellFormatter;
import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.RecordDoubleClickEvent;
-import com.smartgwt.client.widgets.grid.events.RecordDoubleClickHandler;
-import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.menu.IMenuButton;
import com.smartgwt.client.widgets.menu.Menu;
import com.smartgwt.client.widgets.menu.MenuItem;
import com.smartgwt.client.widgets.menu.events.ClickHandler;
import com.smartgwt.client.widgets.menu.events.MenuItemClickEvent;
-import org.rhq.core.domain.criteria.ResourceOperationHistoryCriteria;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.operation.OperationRequestStatus;
import org.rhq.core.domain.operation.ResourceOperationHistory;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.ResourceType;
-import org.rhq.core.domain.util.PageList;
-import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.core.domain.resource.composite.ResourceComposite;
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.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.components.table.TableSection;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.create.OperationCreateWizard;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operation.detail.OperationDetailsView;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
@@ -52,45 +46,40 @@ import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTyp
/**
* @author Greg Hinkle
*/
-public class OperationHistoryView extends VLayout {
+public class OperationHistoryView extends TableSection {
- Table table;
- Resource resource;
- Criteria criteria;
-
- @Override
- protected void onInit() {
- super.onInit();
+ private ResourceComposite composite;
+ private Resource resource;
- }
-
public OperationHistoryView() {
+ super("Operation History");
setWidth100();
setHeight100();
+
+ setDataSource(new OperationHistoryDataSource());
+
}
- public OperationHistoryView(Resource resource) {
- this.resource = resource;
- this.criteria = new Criteria("resourceId",
String.valueOf(resource.getId()));
+ public OperationHistoryView(ResourceComposite resourceComposite) {
+ super("Operation History", new Criteria("resourceId",
String.valueOf(resourceComposite.getResource().getId())));
+ this.composite = resourceComposite;
+ this.resource = resourceComposite.getResource();
+
+ setDataSource(new OperationHistoryDataSource());
+
}
- @Override
- protected void onDraw() {
- super.onDraw();
- if (criteria == null) {
- table = new Table("Operation History");
- } else {
- table = new Table("Operation History", criteria);
- }
- table.setDataSource(new OperationHistoryDataSource());
+ @Override
+ protected void configureTable() {
+
- table.getListGrid().getField("id").setWidth(40);
- table.getListGrid().getField("operationName").setWidth("*");
- table.getListGrid().getField("status").setWidth(100);
- table.getListGrid().getField("status").setCellFormatter(new
CellFormatter() {
+ getListGrid().getField("id").setWidth(40);
+ getListGrid().getField("operationName").setWidth("*");
+ getListGrid().getField("status").setWidth(100);
+ getListGrid().getField("status").setCellFormatter(new CellFormatter()
{
public String format(Object o, ListGridRecord listGridRecord, int i, int i1)
{
OperationRequestStatus status = OperationRequestStatus.valueOf((String)
o);
String icon = "";
@@ -115,39 +104,33 @@ public class OperationHistoryView extends VLayout {
- table.getListGrid().getField("startedTime").setWidth(120);
+ getListGrid().getField("startedTime").setWidth(120);
if (this.resource == null) {
- table.getListGrid().getField("resource").setWidth(300);
- table.getListGrid().getField("resource").setCellFormatter(new
CellFormatter() {
+ getListGrid().getField("resource").setWidth(300);
+ getListGrid().getField("resource").setCellFormatter(new
CellFormatter() {
public String format(Object o, ListGridRecord listGridRecord, int i, int
i1) {
Resource res = (Resource) o;
return "<a href=\"#Resource/" + res.getId() +
"\">" + res.getName() + "</a>";
}
});
} else {
- table.getListGrid().hideField("resource");
+ getListGrid().hideField("resource");
}
- table.getListGrid().addRecordDoubleClickHandler(new RecordDoubleClickHandler() {
- public void onRecordDoubleClick(RecordDoubleClickEvent
recordDoubleClickEvent) {
- ResourceOperationHistory history = (ResourceOperationHistory)
recordDoubleClickEvent.getRecord().getAttributeAsObject("entity");
- showDetails(history);
- }
- });
- table.addTableAction("Details", Table.SelectionEnablement.SINGLE, null,
new TableAction() {
+ addTableAction("Details", Table.SelectionEnablement.SINGLE, null, new
TableAction() {
public void executeAction(ListGridRecord[] selection) {
ResourceOperationHistory history = (ResourceOperationHistory)
selection[0].getAttributeAsObject("entity");
- showDetails(history);
+ showDetails(history.getId());
}
});
- if (resource != null) {
+ if (resource != null && composite.getResourcePermission().isControl()) {
final Menu operationMenu = new Menu();
ResourceTypeRepository.Cache.getInstance().getResourceTypes(
resource.getResourceType().getId(),
@@ -168,39 +151,24 @@ public class OperationHistoryView extends VLayout {
IMenuButton operationsButton = new IMenuButton("Run Operation",
operationMenu);
operationsButton.setShowMenuBelow(false);
- table.addExtraWidget(operationsButton);
+ addExtraWidget(operationsButton);
}
- addMember(table);
}
- private void showDetails(ResourceOperationHistory history) {
- ResourceOperationHistoryCriteria criteria = new
ResourceOperationHistoryCriteria();
- criteria.addFilterId(history.getId());
-
- criteria.fetchOperationDefinition(true);
- criteria.fetchParameters(true);
- criteria.fetchResults(true);
-
- GWTServiceLookup.getOperationService().findResourceOperationHistoriesByCriteria(
- criteria, new
AsyncCallback<PageList<ResourceOperationHistory>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Failure loading
operation history", caught);
- }
+ @Override
+ public Canvas getDetailsView(int id) {
+ OperationDetailsView detailsView = new OperationDetailsView();
- public void onSuccess(PageList<ResourceOperationHistory>
result) {
- ResourceOperationHistory item = result.get(0);
- OperationDetailsView.displayDetailsDialog(item);
- }
- }
- );
+ return detailsView;
}
- public static OperationHistoryView getResourceHistoryView(Resource resource) {
+ public static OperationHistoryView getResourceHistoryView(ResourceComposite resource)
{
return new OperationHistoryView(resource);
}
+
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/detail/OperationDetailsView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/detail/OperationDetailsView.java
index de1747b..3a7715f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/detail/OperationDetailsView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/operation/detail/OperationDetailsView.java
@@ -20,25 +20,40 @@ package
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.operatio
import java.util.Date;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.TitleOrientation;
+import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.AutoFitTextAreaItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.layout.VLayout;
+import org.rhq.core.domain.criteria.ResourceOperationHistoryCriteria;
import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.operation.ResourceOperationHistory;
-import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.util.PageList;
+import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.ViewId;
+import org.rhq.enterprise.gui.coregui.client.ViewPath;
import
org.rhq.enterprise.gui.coregui.client.components.configuration.ConfigurationEditor;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
/**
* @author Greg Hinkle
*/
-public class OperationDetailsView extends VLayout {
+public class OperationDetailsView extends VLayout implements BookmarkableView {
- OperationDefinition definition;
- ResourceOperationHistory operationHistory;
+ private int historyId;
+ private OperationDefinition definition;
+ private ResourceOperationHistory operationHistory;
+
+ private ViewId viewId;
+
+ private DynamicForm form;
+ public OperationDetailsView() {
+ }
public OperationDetailsView(OperationDefinition definition, ResourceOperationHistory
operationHistory) {
this.definition = definition;
@@ -49,10 +64,35 @@ public class OperationDetailsView extends VLayout {
protected void onDraw() {
super.onDraw();
+ for (Canvas child : getMembers()) {
+ child.destroy();
+ }
+
+
+ if (this.operationHistory != null) {
+ displayDetails(operationHistory);
+ }
+ }
+
+
+ private void displayDetails(ResourceOperationHistory operationHistory) {
+
+ for (Canvas child : getMembers()) {
+ removeChild(child);
+ }
+
+ if (this.viewId != null) {
+
viewId.getBreadcrumbs().get(0).setDisplayName(operationHistory.getOperationDefinition().getDisplayName());
+ }
+
+ this.definition = operationHistory.getOperationDefinition();
+ this.operationHistory = operationHistory;
// Information Form
- DynamicForm form = new DynamicForm();
+ form = new DynamicForm();
+ form.setWidth100();
+ form.setWrapItemTitles(false);
StaticTextItem operationItem = new StaticTextItem("operation",
"Operation");
operationItem.setValue(definition.getName());
@@ -100,8 +140,33 @@ public class OperationDetailsView extends VLayout {
ConfigurationEditor resultsEditor = new
ConfigurationEditor(definition.getResultsConfigurationDefinition(),
operationHistory.getResults());
resultsEditor.setReadOnly(true);
addMember(resultsEditor);
-
}
+
+ }
+
+
+
+ private void lookupDetails(int historyId) {
+ ResourceOperationHistoryCriteria criteria = new
ResourceOperationHistoryCriteria();
+
+ criteria.addFilterId(historyId);
+
+ criteria.fetchOperationDefinition(true);
+ criteria.fetchParameters(true);
+ criteria.fetchResults(true);
+
+ GWTServiceLookup.getOperationService().findResourceOperationHistoriesByCriteria(
+ criteria, new
AsyncCallback<PageList<ResourceOperationHistory>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Failure loading
operation history", caught);
+ }
+
+ public void onSuccess(PageList<ResourceOperationHistory>
result) {
+ ResourceOperationHistory item = result.get(0);
+ displayDetails(item);
+ }
+ }
+ );
}
@@ -124,4 +189,13 @@ public class OperationDetailsView extends VLayout {
}
+ @Override
+ public void renderView(ViewPath viewPath) {
+
+ historyId = viewPath.getCurrentAsInt();
+
+ viewId = viewPath.getCurrent();
+
+ lookupDetails(historyId);
+ }
}
commit ea622034c54bdb9f8e6e2cea7d46f0c5aa7aec8d
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Mon Aug 23 13:37:24 2010 -0400
Linkmanager for resource quick nav
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 98e5ab9..728a50c 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
@@ -18,13 +18,6 @@
*/
package org.rhq.enterprise.gui.coregui.client.inventory.resource;
-import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.AVAILABILITY;
-import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.CATEGORY;
-import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.DESCRIPTION;
-import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.NAME;
-import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.PLUGIN;
-import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.TYPE;
-
import java.util.ArrayList;
import java.util.List;
@@ -39,6 +32,7 @@ import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.LinkManager;
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.gwt.GWTServiceLookup;
@@ -46,6 +40,13 @@ import
org.rhq.enterprise.gui.coregui.client.gwt.ResourceGWTServiceAsync;
import org.rhq.enterprise.gui.coregui.client.util.message.Message;
import org.rhq.enterprise.gui.coregui.client.util.message.Message.Severity;
+import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.AVAILABILITY;
+import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.CATEGORY;
+import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.DESCRIPTION;
+import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.NAME;
+import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.PLUGIN;
+import static
org.rhq.enterprise.gui.coregui.client.inventory.resource.ResourceDataSourceField.TYPE;
+
/**
* @author Greg Hinkle
*/
@@ -108,7 +109,7 @@ public class ResourceSearchView extends Table {
ListGridField nameField = new ListGridField(NAME.propertyName(), NAME.title(),
250);
nameField.setCellFormatter(new CellFormatter() {
public String format(Object o, ListGridRecord listGridRecord, int i, int i1)
{
- return "<a href=\"#Resource/" +
listGridRecord.getAttribute("id") + "\">" + o +
"</a>";
+ return "<a href=\"" +
LinkManager.getResourceLink(listGridRecord.getAttributeAsInt("id")) +
"\">" + o + "</a>";
}
});
commit 48ee7c5ddf60a5f487c1eb351fbb5961aad6dcdb
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Mon Aug 23 13:36:57 2010 -0400
Extension to table to support details views as well
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 43e45aa..8453a8b 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
@@ -41,9 +41,11 @@ import
com.smartgwt.client.widgets.grid.events.SelectionChangedHandler;
import com.smartgwt.client.widgets.grid.events.SelectionEvent;
import com.smartgwt.client.widgets.layout.HLayout;
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.util.RPCDataSource;
+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.LocatableListGrid;
import org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
@@ -52,10 +54,13 @@ import
org.rhq.enterprise.gui.coregui.client.util.selenium.LocatableVLayout;
* @author Greg Hinkle
* @author Ian Springer
*/
-public class Table extends LocatableVLayout {
+public class Table extends LocatableHLayout {
private static final SelectionEnablement DEFAULT_SELECTION_ENABLEMENT =
SelectionEnablement.ALWAYS;
+
+ protected VLayout contents;
+
private HTMLFlow title;
private Canvas titleComponent;
@@ -70,6 +75,7 @@ public class Table extends LocatableVLayout {
private boolean showHeader = true;
private boolean showFooter = true;
+
/**
* Specifies how many rows must be selected in order for a {@link TableAction} button
to be enabled.
*/
@@ -132,6 +138,10 @@ public class Table extends LocatableVLayout {
setWidth100();
setHeight100();
+ contents = new VLayout();
+ contents.setWidth100();
+ contents.setHeight100();
+
// Title
title = new HTMLFlow();
setTableTitle(tableTitle);
@@ -189,7 +199,7 @@ public class Table extends LocatableVLayout {
protected void onDraw() {
super.onDraw();
- removeMembers(getMembers());
+ contents.removeMembers(getMembers());
if (showHeader) {
@@ -210,10 +220,10 @@ public class Table extends LocatableVLayout {
titleLayout.addMember(titleComponent);
}
- addMember(titleLayout);
+ contents.addMember(titleLayout);
}
- addMember(listGrid);
+ contents.addMember(listGrid);
if (showFooter) {
footer.removeMembers(footer.getMembers());
@@ -274,8 +284,9 @@ public class Table extends LocatableVLayout {
}
});
- addMember(footer);
+ contents.addMember(footer);
}
+ addMember(contents);
}
protected void setListGrid(ListGrid listGrid) {
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
new file mode 100644
index 0000000..91fb92b
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/table/TableSection.java
@@ -0,0 +1,153 @@
+/*
+ * 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.components.table;
+
+import com.google.gwt.user.client.History;
+import com.smartgwt.client.data.Criteria;
+import com.smartgwt.client.data.SortSpecifier;
+import com.smartgwt.client.types.AnimationEffect;
+import com.smartgwt.client.widgets.AnimationCallback;
+import com.smartgwt.client.widgets.Canvas;
+import com.smartgwt.client.widgets.grid.events.CellDoubleClickEvent;
+import com.smartgwt.client.widgets.grid.events.CellDoubleClickHandler;
+import com.smartgwt.client.widgets.layout.VLayout;
+
+import org.rhq.enterprise.gui.coregui.client.BookmarkableView;
+import org.rhq.enterprise.gui.coregui.client.ViewPath;
+import org.rhq.enterprise.gui.coregui.client.components.buttons.BackButton;
+
+/**
+ * @author Greg Hinkle
+ */
+public abstract class TableSection extends Table implements BookmarkableView {
+
+ private int detailsId;
+
+ private VLayout detailsHolder;
+
+ private Canvas detailsView;
+
+ private String basePath;
+
+ protected TableSection() {
+ }
+
+ protected TableSection(String tableTitle) {
+ super(tableTitle);
+ }
+
+ protected TableSection(String tableTitle, Criteria criteria) {
+ super(tableTitle, criteria);
+ }
+
+ protected TableSection(String tableTitle, SortSpecifier[] sortSpecifiers) {
+ super(tableTitle, sortSpecifiers);
+ }
+
+ protected TableSection(String tableTitle, boolean autoFetchData) {
+ super(tableTitle, autoFetchData);
+ }
+
+ protected TableSection(String tableTitle, Criteria criteria, SortSpecifier[]
sortSpecifiers, String[] excludedFieldNames) {
+ super(tableTitle, criteria, sortSpecifiers, excludedFieldNames);
+ }
+
+ protected TableSection(String tableTitle, Criteria criteria, SortSpecifier[]
sortSpecifiers, String[] excludedFieldNames, boolean autoFetchData) {
+ super(tableTitle, criteria, sortSpecifiers, excludedFieldNames, autoFetchData);
+ }
+
+ @Override
+ protected void onInit() {
+ super.onInit();
+
+ getListGrid().addCellDoubleClickHandler(new CellDoubleClickHandler() {
+ @Override
+ public void onCellDoubleClick(CellDoubleClickEvent event) {
+
+ int id = event.getRecord().getAttributeAsInt("id");
+
+ showDetails(id);
+ }
+ });
+
+ detailsHolder = new VLayout();
+ detailsHolder.setWidth100();
+ detailsHolder.setHeight100();
+ detailsHolder.hide();
+
+ addMember(detailsHolder);
+
+ }
+
+ public void showDetails(int id) {
+ History.newItem(basePath + "/" + id);
+ }
+
+ public abstract Canvas getDetailsView(int id);
+
+
+ @Override
+ public void renderView(ViewPath viewPath) {
+
+ basePath = viewPath.getPathToCurrent();
+
+ if (!viewPath.isEnd()) {
+
+ int id = Integer.parseInt(viewPath.getCurrent().getPath());
+
+ detailsView = getDetailsView(id);
+
+ if (detailsView instanceof BookmarkableView) {
+
+ ((BookmarkableView)detailsView).renderView(viewPath);
+ }
+
+
+ contents.animateHide(AnimationEffect.FADE, new AnimationCallback() {
+ @Override
+ public void execute(boolean b) {
+ detailsView.setWidth100();
+ detailsView.setHeight100();
+
+ detailsHolder.addMember(new BackButton("Back to
List",basePath));
+ detailsHolder.addMember(detailsView);
+ detailsHolder.animateShow(AnimationEffect.FADE);
+ }
+ });
+
+ } else {
+ contents.animateShow(AnimationEffect.FADE, new AnimationCallback() {
+ @Override
+ public void execute(boolean b) {
+ if (detailsHolder.isVisible()) {
+ detailsHolder.animateHide(AnimationEffect.FADE);
+
+ for (Canvas child : detailsHolder.getMembers()) {
+ detailsHolder.removeMember(child);
+ }
+ }
+ }
+ });
+ }
+ }
+}
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
new file mode 100644
index 0000000..0be952a
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/selenium/LocatableHLayout.java
@@ -0,0 +1,24 @@
+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.
+ *
+ * @author Jay Shaughnessy
+ */
+public class LocatableHLayout extends VLayout {
+
+ /**
+ * <pre>
+ * ID Format: "scClassname-id"
+ * </pre>
+ * @param id not null or empty.
+ */
+ public LocatableHLayout(String id) {
+ super();
+ String locatorId = this.getScClassName() + "-" + id;
+ setID(SeleniumUtility.getSafeId(locatorId, locatorId));
+ }
+
+}
commit 0a35a6db14b13bd1a89084f79f17870e8c4a7436
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Mon Aug 23 13:34:23 2010 -0400
missing accessors
diff --git
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ClusterKeyFlyweight.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ClusterKeyFlyweight.java
index 6d3d488..e546614 100644
---
a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ClusterKeyFlyweight.java
+++
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/group/composite/ClusterKeyFlyweight.java
@@ -59,4 +59,20 @@ public class ClusterKeyFlyweight implements Serializable {
result = 31 * result + (resourceKey != null ? resourceKey.hashCode() : 0);
return result;
}
+
+ public int getResourceTypeId() {
+ return resourceTypeId;
+ }
+
+ public String getResourceKey() {
+ return resourceKey;
+ }
+
+ @Override
+ public String toString() {
+ return "ClusterKeyFlyweight{" +
+ "resourceTypeId=" + resourceTypeId +
+ ", resourceKey='" + resourceKey + '\'' +
+ '}';
+ }
}
\ No newline at end of file
commit 6e63aec3e132ab8b02e6607ca953c83048a0634f
Author: Greg Hinkle <ghinkle(a)redhat.com>
Date: Sun Aug 22 22:18:08 2010 -0400
Tag links updated for tag cloud under reports section
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
index ee73969..1dee039 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/LinkManager.java
@@ -284,4 +284,7 @@ public class LinkManager {
}
+ public static String getTagLink(String tag) {
+ return "Reports/Inventory/Tag%20Cloud/" + tag;
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tagging/TagEditorView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tagging/TagEditorView.java
index 6219504..08b9581 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tagging/TagEditorView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/components/tagging/TagEditorView.java
@@ -23,17 +23,12 @@
package org.rhq.enterprise.gui.coregui.client.components.tagging;
import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Widget;
-import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.types.TextMatchStyle;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Dialog;
@@ -41,18 +36,12 @@ import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
-import com.smartgwt.client.widgets.events.HoverEvent;
-import com.smartgwt.client.widgets.events.HoverHandler;
import com.smartgwt.client.widgets.events.MouseOutEvent;
import com.smartgwt.client.widgets.events.MouseOutHandler;
import com.smartgwt.client.widgets.events.MouseOverEvent;
import com.smartgwt.client.widgets.events.MouseOverHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ComboBoxItem;
-import com.smartgwt.client.widgets.form.fields.events.BlurEvent;
-import com.smartgwt.client.widgets.form.fields.events.BlurHandler;
-import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
-import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.form.fields.events.KeyPressEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyPressHandler;
import com.smartgwt.client.widgets.layout.HLayout;
@@ -65,6 +54,7 @@ import org.rhq.core.domain.tagging.Tag;
import org.rhq.core.domain.util.PageList;
import org.rhq.core.domain.util.PageOrdering;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.LinkManager;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
/**
@@ -136,7 +126,7 @@ public class TagEditorView extends Layout {
//tagLayout.set
HTMLFlow tagString = new HTMLFlow(
- "<a href=\"#Tag/" + tag.toString() +
"\">" +
+ "<a href=\"" +
LinkManager.getTagLink(tag.toString()) + "\">" +
tag.toString() + "</a>");
tagString.setAutoWidth();